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_SHAPE_H
00031 #define OGRE_TOOLS_SHAPE_H
00032
00033 #include "object.h"
00034
00035 #include <OgreMaterial.h>
00036 #include <OgreVector3.h>
00037 #include <OgreSharedPtr.h>
00038
00039 namespace Ogre
00040 {
00041 class SceneManager;
00042 class SceneNode;
00043 class Any;
00044 class Entity;
00045 }
00046
00047 namespace rviz
00048 {
00049
00052 class Shape : public Object
00053 {
00054 public:
00055 enum Type
00056 {
00057 Cone,
00058 Cube,
00059 Cylinder,
00060 Sphere,
00061 Mesh,
00062 };
00063
00070 Shape(Type shape_type, Ogre::SceneManager* scene_manager, Ogre::SceneNode* parent_node = NULL);
00071 virtual ~Shape();
00072
00073 Type getType() { return type_; }
00074
00082 void setOffset( const Ogre::Vector3& offset );
00083
00084 virtual void setColor( float r, float g, float b, float a );
00085 void setColor( const Ogre::ColourValue& c );
00086 virtual void setPosition( const Ogre::Vector3& position );
00087 virtual void setOrientation( const Ogre::Quaternion& orientation );
00088 virtual void setScale( const Ogre::Vector3& scale );
00089 virtual const Ogre::Vector3& getPosition();
00090 virtual const Ogre::Quaternion& getOrientation();
00091
00097 Ogre::SceneNode* getRootNode() { return scene_node_; }
00098
00102 void setUserData( const Ogre::Any& data );
00103
00104 Ogre::Entity* getEntity() { return entity_; }
00105
00106 Ogre::MaterialPtr getMaterial() { return material_; }
00107
00108 static Ogre::Entity* createEntity(const std::string& name, Type shape_type, Ogre::SceneManager* scene_manager);
00109
00110 protected:
00111 Ogre::SceneNode* scene_node_;
00112 Ogre::SceneNode* offset_node_;
00113 Ogre::Entity* entity_;
00114 Ogre::MaterialPtr material_;
00115 std::string material_name_;
00116
00117 Type type_;
00118 };
00119
00120 }
00121
00122 #endif
00123