00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef OGRE_TOOLS_CAMERA_BASE_H_
00031 #define OGRE_TOOLS_CAMERA_BASE_H_
00032
00033 #include <OGRE/OgreVector3.h>
00034 #include <OGRE/OgreQuaternion.h>
00035
00036 namespace Ogre
00037 {
00038 class Camera;
00039 class SceneNode;
00040 class SceneManager;
00041 }
00042
00043 namespace ogre_tools
00044 {
00045
00053 class CameraBase
00054 {
00055 public:
00060 CameraBase( Ogre::SceneManager* scene_manager );
00061 virtual ~CameraBase();
00062
00067 Ogre::Camera* getOgreCamera() { return camera_; }
00068
00073 void setRelativeNode( Ogre::SceneNode* node );
00077 virtual void relativeNodeChanged() {}
00078
00079 virtual void update() = 0;
00080
00084 virtual void setPosition( const Ogre::Vector3& position );
00088 virtual void setOrientation( const Ogre::Quaternion& orientation );
00089
00102 virtual void yaw( float angle ) = 0;
00115 virtual void pitch( float angle ) = 0;
00128 virtual void roll( float angle ) = 0;
00129
00133 virtual void setOrientation( float x, float y, float z, float w ) = 0;
00137 virtual void setPosition( float x, float y, float z ) = 0;
00138
00144 virtual void setFrom( CameraBase* camera ) = 0;
00145
00150 virtual Ogre::Vector3 getPosition() = 0;
00155 virtual Ogre::Quaternion getOrientation() = 0;
00156
00161 virtual void lookAt( const Ogre::Vector3& point ) = 0;
00162
00170 virtual void move( float x, float y, float z ) = 0;
00171
00172 virtual void mouseLeftDown( int x, int y ) {}
00173 virtual void mouseMiddleDown( int x, int y ) {}
00174 virtual void mouseRightDown( int x, int y ) {}
00175 virtual void mouseLeftUp( int x, int y ) {}
00176 virtual void mouseMiddleUp( int x, int y ) {}
00177 virtual void mouseRightUp( int x, int y ) {}
00178
00185 virtual void mouseLeftDrag( int diff_x, int diff_y, bool ctrl, bool alt, bool shift ) = 0;
00192 virtual void mouseMiddleDrag( int diff_x, int diff_y, bool ctrl, bool alt, bool shift ) = 0;
00199 virtual void mouseRightDrag( int diff_x, int diff_y, bool ctrl, bool alt, bool shift ) = 0;
00206 virtual void scrollWheel( int diff, bool ctrl, bool alt, bool shift ) = 0;
00207
00212 virtual void fromString(const std::string& str) = 0;
00216 virtual std::string toString() = 0;
00217
00218 protected:
00219 Ogre::Camera* camera_;
00220 Ogre::SceneManager* scene_manager_;
00221
00222 Ogre::SceneNode* relative_node_;
00223 };
00224
00225 }
00226
00227 #endif