Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_SCENE_CAMERA_FIRSTPERSON_H__
00009 #define __SP_SCENE_CAMERA_FIRSTPERSON_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "SceneGraph/spSceneCamera.hpp"
00014
00015
00016 namespace sp
00017 {
00018 namespace scene
00019 {
00020
00021
00022 enum EFirstPersonCameraFlags
00023 {
00024 FPCAMERAFLAG_NONE = 0x00,
00025 FPCAMERAFLAG_USEARROWS = 0x01,
00026 };
00027
00028
00029 class SP_EXPORT FirstPersonCamera : public Camera
00030 {
00031
00032 public:
00033
00034 FirstPersonCamera();
00035 virtual ~FirstPersonCamera();
00036
00037
00038
00039 virtual void updateControl();
00040 virtual void drawMenu();
00041
00042
00043
00044 inline void setFreeMovement(bool isEnable)
00045 {
00046 isFreeMovement_ = isEnable;
00047 }
00048 inline bool getFreeMovement() const
00049 {
00050 return isFreeMovement_;
00051 }
00052
00053 inline void setFlags(s32 Flags)
00054 {
00055 Flags_ = Flags;
00056 }
00057 inline s32 getFlags() const
00058 {
00059 return Flags_;
00060 }
00061
00062 inline void setMoveSpeed(f32 Speed)
00063 {
00064 MoveSpeed_ = Speed;
00065 }
00066 inline f32 getMoveSpeed() const
00067 {
00068 return MoveSpeed_;
00069 }
00070
00071 inline void setTurnSpeed(f32 Speed)
00072 {
00073 TurnSpeed_ = Speed;
00074 }
00075 inline f32 getTurnSpeed() const
00076 {
00077 return TurnSpeed_;
00078 }
00079
00080 inline void setMaxTurnDegree(f32 Degree)
00081 {
00082 MaxTurnDegree_ = Degree;
00083 }
00084 inline f32 getMaxTurnDegree() const
00085 {
00086 return MaxTurnDegree_;
00087 }
00088
00089 protected:
00090
00091
00092
00093 void updateCameraRotation();
00094 void updateCameraMovement();
00095
00096
00097
00098 s32 Flags_;
00099
00100 bool isFreeMovement_;
00101 f32 Pitch_, Yaw_;
00102
00103 f32 MoveSpeed_, TurnSpeed_;
00104 f32 MaxTurnDegree_;
00105
00106 };
00107
00108
00109 }
00110
00111 }
00112
00113
00114 #endif
00115
00116
00117
00118