Game cam and eye banking, control schemes

- ShapeBaseData has two new properties.  cameraCanBank indicates that
the game object may bank its eye/camera, if supported by the object.
mountedImagesBank indicates that mounted images should bank with the
eye/camera in first person view.  Both default to false.
- Player supports 1st person eye and 3rd person camera banking when
making use of the new ExtendedMove class.
- Camera class supports banking when making use of the new ExtendedMove
class.
- GameConnection now has an idea of a control scheme.  This determines
how game objects should respond to input events.  A control scheme may
be set by either the server or client.  Current control schemes are:
-- Absolute rotation (likely though the ExtendedMove class)
-- Add relative yaw (from mouse or gamepad) to absolute rotation.
-- Add relative pitch (from mouse or gamepad) to absolute rotation.
- Player class supports the new control schemes when using the
ExtendedMove class.
- Camera class supports the new control scheme when using the
ExtendedMove class.
This commit is contained in:
DavidWyand-GG 2013-04-09 16:14:19 -04:00
parent 2805ec81c8
commit 660250cccf
10 changed files with 570 additions and 127 deletions

View file

@ -73,6 +73,9 @@ class Camera: public ShapeBase
CameraLastMode = EditOrbitMode
};
/// The ExtendedMove position/rotation index used for camera movements
static S32 smExtendedMovePosRotIndex;
protected:
enum MaskBits
@ -92,6 +95,8 @@ class Camera: public ShapeBase
VectorF rotVec;
};
CameraData* mDataBlock;
Point3F mRot;
StateDelta mDelta;
@ -106,6 +111,9 @@ class Camera: public ShapeBase
Point3F mPosition;
bool mObservingClientObject;
F32 mLastAbsoluteYaw; ///< Stores that last absolute yaw value as passed in by ExtendedMove
F32 mLastAbsolutePitch; ///< Stores that last absolute pitch value as passed in by ExtendedMove
/// @name NewtonFlyMode
/// @{
@ -223,6 +231,7 @@ class Camera: public ShapeBase
virtual bool onAdd();
virtual void onRemove();
virtual bool onNewDataBlock( GameBaseData *dptr, bool reload );
virtual void processTick( const Move* move );
virtual void interpolateTick( F32 delta);
virtual void getCameraTransform( F32* pos,MatrixF* mat );