00001 #ifndef __IKCAMERA_H__ 00002 #define __IKCAMERA_H__ 00003 00004 #include "Common.h" 00005 #include <list> 00006 #include <string> 00007 00008 typedef enum { 00009 CAMERA_CHASE, 00010 CAMERA_FREE 00011 } camState; 00012 00013 class Camera 00014 { 00015 public: 00016 00017 Camera(); 00018 ~Camera() {} 00019 00020 void move(); 00021 void forceUpdate(); 00022 00023 void setCamera(Ogre::Camera* _val); 00024 Ogre::Camera* getCamera(); 00025 00026 void setCurrentSpeed(const Ogre::Real& _val); 00027 Ogre::Real& getCurrentSpeed(); 00028 00029 void setMoveSpeed(const Ogre::Real& _val); 00030 Ogre::Real& getMoveSpeed(); 00031 00032 void setRotateSpeed(const Ogre::Degree& _val); 00033 Ogre::Degree& getRotateSpeed(); 00034 00035 void setZoomAmount(const Ogre::Real& _val); 00036 Ogre::Real& getZoomAmount(); 00037 00038 void setZoomDist(const Ogre::Real& _val); 00039 Ogre::Real& getZoomDist(); 00040 00041 void setVector(const Ogre::Vector3& _val); 00042 Ogre::Vector3& getVector(); 00043 00044 void adjustYaw(const Ogre::Degree& _val); 00045 void setYaw(const Ogre::Degree& _val); 00046 Ogre::Degree& getYaw(); 00047 00048 void adjustPitch(const Ogre::Degree& _val); 00049 void setPitch(const Ogre::Degree& _val); 00050 Ogre::Degree& getPitch(); 00051 00052 void setPosition(const Ogre::Vector3& _val); 00053 Ogre::Vector3 getPosition(); 00054 00055 void setTargetPosition(const Ogre::Vector3& _val); 00056 Ogre::Vector3 getTargetPosition(); 00057 00058 void setTargetNode(Ogre::SceneNode* _val); 00059 Ogre::SceneNode* getTargetNode(); 00060 00061 void setSceneNode(Ogre::SceneNode* _val); 00062 Ogre::SceneNode* getSceneNode(); 00063 00064 void setFollowNode(Ogre::SceneNode* _val = 0); 00065 00066 void zoomIn(); 00067 void zoomOut(); 00068 00069 int getID() const; 00070 00071 void setState(camState _val); 00072 protected: 00073 00074 Ogre::Camera* m_camera; 00075 Ogre::SceneNode* m_targetNode; 00076 Ogre::SceneNode* m_followNode; 00077 Ogre::SceneNode* m_sceneNode; 00078 00079 Ogre::Real m_currentSpeed; 00080 Ogre::Real m_moveSpeed; 00081 Ogre::Degree m_rotateSpeed; 00082 00083 Ogre::Real m_zoomAmount; 00084 Ogre::Real m_zoomDist; 00085 00086 Ogre::Vector3 m_vector; 00087 00088 Ogre::Degree m_yaw; 00089 Ogre::Degree m_pitch; 00090 00091 Ogre::Vector3 m_lastMotion; 00092 00093 Ogre::Vector3 m_desiredDirection; 00094 Ogre::Vector3 m_lastDirection; 00095 Ogre::Vector3 m_currentDirection; 00096 00097 Ogre::Vector3 m_desiredCameraPos; 00098 Ogre::Vector3 m_lastCameraPos; 00099 Ogre::Vector3 m_currentCameraPos; 00100 00101 Ogre::Vector3 m_cameraVelocity; 00102 00103 Ogre::Vector3 m_cameraOffset; 00104 00105 camState m_cameraState; 00106 00107 // Set ID. 00108 void setID(); 00109 int m_ID; 00110 static int s_nextID; 00111 }; 00112 00113 #endif