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 ogre_tools
00046 {
00047 class Shape;
00048
00053 class Arrow : public Object
00054 {
00055 public:
00066 Arrow( Ogre::SceneManager* scene_manager, Ogre::SceneNode* parent_node = 0, float shaft_length = 1.0f, float shaft_radius = 0.1f,
00067 float head_length = 0.3f, float head_radius = 0.2f );
00068 virtual ~Arrow();
00069
00078 void set( float shaft_length, float shaft_radius, float head_length, float head_radius );
00079
00087 virtual void setColor( float r, float g, float b, float a );
00088 void setColor(const Ogre::ColourValue& color);
00089
00097 void setHeadColor( float r, float g, float b, float a = 1.0f );
00098 void setHeadColor(const Ogre::ColourValue& color);
00106 void setShaftColor( float r, float g, float b, float a = 1.0f );
00107 void setShaftColor(const Ogre::ColourValue& color);
00108
00109 virtual void setOrientation( const Ogre::Quaternion& orientation );
00110 virtual void setPosition( const Ogre::Vector3& position );
00111 virtual void setScale( const Ogre::Vector3& scale );
00112 virtual const Ogre::Vector3& getPosition();
00113 virtual const Ogre::Quaternion& getOrientation();
00114
00119 Ogre::SceneNode* getSceneNode() { return scene_node_; }
00120
00124 void setUserData( const Ogre::Any& data );
00125
00126 Shape* getShaft() { return shaft_; }
00127 Shape* getHead() { return head_; }
00128
00129 private:
00130 Ogre::SceneNode* scene_node_;
00131
00132 Shape* shaft_;
00133 Shape* head_;
00134 };
00135
00136 }
00137
00138 #endif