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 RVIZ_VIEW_CONTROLLER_H
00031 #define RVIZ_VIEW_CONTROLLER_H
00032
00033 #include <string>
00034
00035 #include <OGRE/OgreQuaternion.h>
00036 #include <OGRE/OgreVector3.h>
00037
00038 namespace Ogre
00039 {
00040 class Camera;
00041 class SceneNode;
00042 class Vector3;
00043 class Quaternion;
00044 }
00045
00046 namespace rviz
00047 {
00048
00049 class VisualizationManager;
00050 class ViewportMouseEvent;
00051
00052 class ViewController
00053 {
00054 public:
00055 ViewController(VisualizationManager* manager, const std::string& name, Ogre::SceneNode* target_scene_node);
00056 virtual ~ViewController();
00057
00058 void activate(Ogre::Camera* camera, const std::string& reference_frame);
00059 void deactivate();
00060 void update(float dt, float ros_dt);
00061 void setTargetFrame(const std::string& reference_frame);
00062 const std::string& getName() { return name_; }
00063
00064 virtual void handleMouseEvent(ViewportMouseEvent& evt) {}
00065
00067 virtual void fromString(const std::string& str) = 0;
00068
00070 virtual std::string toString() = 0;
00071
00072 virtual void lookAt( const Ogre::Vector3& point ) = 0;
00073 virtual std::string getClassName() = 0;
00074
00075 protected:
00076 virtual void onActivate() = 0;
00077 virtual void onDeactivate() = 0;
00078 virtual void onTargetFrameChanged(const Ogre::Vector3& old_reference_position, const Ogre::Quaternion& old_reference_orientation) = 0;
00079 virtual void onUpdate(float dt, float ros_dt) {}
00080
00081 void updateTargetSceneNode();
00082
00083 VisualizationManager* manager_;
00084 Ogre::Camera* camera_;
00085 std::string reference_frame_;
00086 Ogre::SceneNode* target_scene_node_;
00087
00088 Ogre::Quaternion global_orientation_;
00089
00090 std::string name_;
00091
00092 Ogre::Quaternion reference_orientation_;
00093 Ogre::Vector3 reference_position_;
00094 };
00095
00096 }
00097
00098 #endif // RVIZ_VIEW_CONTROLLER_H