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_ORBIT_VIEW_CONTROLLER_H
00031 #define RVIZ_ORBIT_VIEW_CONTROLLER_H
00032
00033 #include "rviz/view_controller.h"
00034
00035 #include <OGRE/OgreVector3.h>
00036
00037 namespace ogre_tools
00038 {
00039 class Shape;
00040 class SceneNode;
00041 }
00042
00043 namespace rviz
00044 {
00045
00060 class OrbitViewController : public ViewController
00061 {
00062 public:
00063 OrbitViewController(VisualizationManager* manager, const std::string& name, Ogre::SceneNode* target_scene_node);
00064 virtual ~OrbitViewController();
00065
00070 void zoom( float amount );
00071 void yaw( float angle );
00072 void pitch( float angle );
00073 void move( float x, float y, float z );
00074
00075 virtual void handleMouseEvent(ViewportMouseEvent& evt);
00076 virtual void fromString(const std::string& str);
00077 virtual std::string toString();
00078
00079 virtual void lookAt( const Ogre::Vector3& point );
00080
00081 static std::string getClassNameStatic() { return "rviz::OrbitViewController"; }
00082 virtual std::string getClassName() { return getClassNameStatic(); }
00083
00084
00085 protected:
00086 virtual void onActivate();
00087 virtual void onDeactivate();
00088 virtual void onUpdate(float dt, float ros_dt);
00089 virtual void onTargetFrameChanged(const Ogre::Vector3& old_reference_position, const Ogre::Quaternion& old_reference_orientation);
00090
00095 void calculatePitchYawFromPosition( const Ogre::Vector3& position );
00099 void normalizePitch();
00103 void normalizeYaw();
00104
00105 virtual void updateCamera();
00106
00107 Ogre::Vector3 focal_point_;
00108 float yaw_;
00109 float pitch_;
00110 float distance_;
00111 ogre_tools::Shape* focal_shape_;
00112 };
00113
00114 }
00115
00116 #endif // RVIZ_VIEW_CONTROLLER_H