Six DOF

// Mobility for cameras or other objects while game is in development.When the right mouse button is not pressed, 
// movement can be controlled by a 3DConnexion SpaceMouse, if connected. When the right mouse button is pressed, 
// movement is controlled by the mouse and the WASD/QE keys, or the arrow keys. Speed is controlled by R(faster) 
// or F(slower). View is not automatically orientated to the scene up vector to allow more flexibility. Use the 
// mouse wheel to manage the Z rotation. By default Z adjustments are coarse. With shift key, Z adjustments are 
// finer.
class RVAPI SixDof
{
public:
    // Update position.
    void Update(M4f &pos);

    // Internal.
    void *operator () () const { return (void *)wobj; }

    // Constructor.
    SixDof();

    // Destructor.
    ~SixDof();

private:
    byte wobj[16];
};