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 <OGRE/OgreMaterial.h>
00036 #include <OGRE/OgreVector3.h>
00037
00038 namespace Ogre
00039 {
00040 class SceneManager;
00041 class SceneNode;
00042 class Any;
00043 class Entity;
00044 }
00045
00046 namespace ogre_tools
00047 {
00048
00051 class Shape : public Object
00052 {
00053 public:
00054 enum Type
00055 {
00056 Cone,
00057 Cube,
00058 Cylinder,
00059 Sphere,
00060 };
00061
00068 Shape(Type shape_type, Ogre::SceneManager* scene_manager, Ogre::SceneNode* parent_node = NULL);
00069 virtual ~Shape();
00070
00071 Type getType() { return type_; }
00072
00080 void setOffset( const Ogre::Vector3& offset );
00081
00082 virtual void setColor( float r, float g, float b, float a );
00083 void setColor( const Ogre::ColourValue& c );
00084 virtual void setPosition( const Ogre::Vector3& position );
00085 virtual void setOrientation( const Ogre::Quaternion& orientation );
00086 virtual void setScale( const Ogre::Vector3& scale );
00087 virtual const Ogre::Vector3& getPosition();
00088 virtual const Ogre::Quaternion& getOrientation();
00089
00095 Ogre::SceneNode* getRootNode() { return scene_node_; }
00096
00100 void setUserData( const Ogre::Any& data );
00101
00102 Ogre::Entity* getEntity() { return entity_; }
00103
00104 static Ogre::Entity* createEntity(const std::string& name, Type shape_type, Ogre::SceneManager* scene_manager);
00105
00106 private:
00107 Ogre::SceneNode* scene_node_;
00108 Ogre::SceneNode* offset_node_;
00109 Ogre::Entity* entity_;
00110 Ogre::MaterialPtr material_;
00111 std::string material_name_;
00112
00113 Type type_;
00114 };
00115
00116 }
00117
00118 #endif
00119