#ifndef _LBBCLEAF_H #define _LBBCLEAF_H #include "BBCEntity.h" namespace LBBC { class _BBCExport Leaf : public BBC::Entity { protected: Ogre::Vector3 mPosition; Ogre::Quaternion mOrientation; float mLeafD; float mPlaneD; Ogre::Vector3 mPlaneNormal; Ogre::Vector3 mLeafNormal; std::vector mFacesNormals; //typedef std::set > ID_FACESet; //typedef std::hash_set , equal_to > ID_FACESet; // Working version... //std::hash_set > > subTri; typedef stdext::hash_set ID_FACESet; ID_FACESet mFacesEntitySet; public: bool hasFace(unsigned int value); void addFace(unsigned int value); void removeFace(unsigned int value); unsigned int getFace(unsigned int value); unsigned int getNumFaces(); void addFaceNormal(Ogre::Vector3 value); void removeFaceNormal(unsigned int value); Ogre::Vector3 getFaceNormal(unsigned int value); void setPlaneD(float value); float getPlaneD(); void setPlaneNormal(Ogre::Vector3 value); Ogre::Vector3 getPlaneNormal(); void setPosition(Ogre::Vector3 value); Ogre::Vector3 getPosition(); Ogre::Quaternion getOrientation(); void setOrientation(const Ogre::Quaternion & Quaternion); unsigned int getNumLeafNormals(); void setLeafNormal(Ogre::Vector3 normal); Ogre::Vector3 getLeafNormal(); void setLeafD(float leafD); float getLeafD(); void addFaceInfo(BBC::UniqueVertex v0, BBC::UniqueVertex v1, BBC::UniqueVertex v2); void readLeaf(TiXmlNode *leafNode); void writeLeaf(TiXmlNode *leafNode); Leaf(); virtual ~Leaf(); }; } #endif