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 #include "object.h"
00031
00032 #ifndef OGRE_TOOLS_ARROW_H
00033 #define OGRE_TOOLS_ARROW_H
00034
00035 namespace Ogre
00036 {
00037 class SceneManager;
00038 class SceneNode;
00039 class Vector3;
00040 class Quaternion;
00041 class ColourValue;
00042 class Any;
00043 }
00044
00045 namespace rviz
00046 {
00047 class Shape;
00048
00059 class Arrow : public Object
00060 {
00061 public:
00072 Arrow( Ogre::SceneManager* scene_manager, Ogre::SceneNode* parent_node = 0, float shaft_length = 1.0f, float shaft_radius = 0.1f,
00073 float head_length = 0.3f, float head_radius = 0.2f );
00074 virtual ~Arrow();
00075
00084 void set( float shaft_length, float shaft_radius, float head_length, float head_radius );
00085
00093 virtual void setColor( float r, float g, float b, float a );
00094 void setColor(const Ogre::ColourValue& color);
00095
00103 void setHeadColor( float r, float g, float b, float a = 1.0f );
00104 void setHeadColor(const Ogre::ColourValue& color);
00112 void setShaftColor( float r, float g, float b, float a = 1.0f );
00113 void setShaftColor(const Ogre::ColourValue& color);
00114
00120 virtual void setOrientation( const Ogre::Quaternion& orientation );
00121
00123 virtual void setPosition( const Ogre::Vector3& position );
00124
00133 void setDirection( const Ogre::Vector3& direction );
00134
00135 virtual void setScale( const Ogre::Vector3& scale );
00136 virtual const Ogre::Vector3& getPosition();
00137 virtual const Ogre::Quaternion& getOrientation();
00138
00143 Ogre::SceneNode* getSceneNode() { return scene_node_; }
00144
00148 void setUserData( const Ogre::Any& data );
00149
00150 Shape* getShaft() { return shaft_; }
00151 Shape* getHead() { return head_; }
00152
00153 private:
00154 Ogre::SceneNode* scene_node_;
00155
00156 Shape* shaft_;
00157 Shape* head_;
00158 };
00159
00160 }
00161
00162 #endif