25 #include <boost/enable_shared_from_this.hpp>
51 class SkeletonInstance;
65 class Visual :
public boost::enable_shared_from_this<Visual>
73 bool _useRTShader =
true);
81 bool _useRTShader =
true);
107 public:
virtual void Load();
114 public:
void SetName(
const std::string &_name);
118 public: std::string
GetName()
const;
164 public: Ogre::MovableObject *
AttachMesh(
const std::string &_meshName,
165 const std::string &_subMesh=
"",
166 bool _centerSubmesh =
false,
167 const std::string &_objName=
"");
182 public:
void SetMaterial(
const std::string &_materialName,
183 bool _unique =
true);
229 public:
void SetVisible(
bool _visible,
bool _cascade =
true);
330 unsigned int _index);
340 public:
void InsertMesh(
const std::string &_meshName,
341 const std::string &_subMesh =
"",
342 bool _centerSubmesh =
false);
349 const std::string &_subMesh =
"",
350 bool _centerSubmesh =
false);
390 boost::function<
void()> _onComplete =
NULL);
432 public:
void ShowCOM(
bool _show);
442 public:
void LoadPlugin(
const std::string &_filename,
443 const std::string &_name,
453 private:
void LoadPlugins();
457 private: std::vector<VisualPluginPtr> plugins;
462 private:
void GetBoundsHelper(Ogre::SceneNode *_node,
489 private:
bool GetCenterSubMesh()
const;
493 private:
void DestroyAllAttachedMovableObjects(
494 Ogre::SceneNode *_sceneNode);
500 private: std::string myMaterialName;
503 private: std::string origMaterialName;
506 private:
float transparency;
510 private:
bool isStatic;
513 private: Ogre::StaticGeometry *staticGeom;
516 private:
bool visible;
519 private: Ogre::RibbonTrail *ribbonTrail;
522 private: Ogre::SkeletonInstance *skeleton;
528 private: std::list<DynamicLines*> lines;
531 private: std::list< std::pair<DynamicLines*, unsigned int> > lineVertices;
534 private: std::string name;
537 private: std::vector<VisualPtr> children;
540 private: Ogre::AnimationState *animState;
546 private: boost::function<void()> onAnimationComplete;
549 private:
bool useRTShader;
552 private:
bool initialized;