Go to the documentation of this file.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 <OgreVector3.h>
00034 #include <OgreQuaternion.h>
00035
00036 namespace Ogre
00037 {
00038 class Camera;
00039 class SceneNode;
00040 class SceneManager;
00041 }
00042
00043 namespace rviz
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