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 <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 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