1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#ifndef __FREE_CONTROLLER_H__
#define __FREE_CONTROLLER_H__
#include "CameraController.h"
class CFreeController : public CCameraController {
public:
CFreeController();
const std::string GetName() const { return "free"; }
void Move(const float3& move, bool tilt, bool strafe, bool upDown);
void KeyMove(float3 move);
void MousePress(int, int, int) { /* empty */ }
void MouseRelease(int, int, int) { /* empty */ }
void MouseMove(float3 move);
void ScreenEdgeMove(float3 move);
void MouseWheelMove(float move);
bool DisableTrackingByKey() { return false; }
void Update();
float3 GetPos();
float3 GetDir();
void SetPos(const float3& newPos);
void SetTrackingInfo(const float3& pos, float radius);
float3 SwitchFrom() const;
void SwitchTo(bool showText);
void GetState(StateMap& sm) const;
bool SetState(const StateMap& sm);
private:
float3 dir;
float3 vel; // velocity
float3 avel; // angular velocity
float3 prevVel; // previous velocity
float3 prevAvel; // previous angular velocity
bool tracking;
float3 trackPos;
float trackRadius;
bool gndLock;
float tiltSpeed; // time it takes to max
float velTime; // time it takes to max
float avelTime; // time it takes to max
float gndOffset; // 0: disabled
// <0: locked to -gndOffset
// >0: allow ground locking and gravity
float gravity; // >=0: disabled
float autoTilt; // <=0: disabled
float slide; // <=0; disabled
bool invertAlt;
bool goForward;
};
#endif
|