#ifndef _BBCBILLBOARDCLUSTERDATA_H #define _BBCBILLBOARDCLUSTERDATA_H #include namespace BBC { class _BBCExport BillboardClusterData { public: BillboardClusterData(); ~BillboardClusterData(); void setNormal(Ogre::Vector3 value); Ogre::Vector3 getNormal(); void setD(float value); float getD(); EntityCluster* getEntityCluster(); void setEntityCluster(EntityCluster *value); virtual void readBillboardClusterData(TiXmlNode *parentNode); virtual void writeBillboardClusterData(TiXmlNode *parentNode); virtual void generateBillboardBoundingQuad(); Ogre::Vector3 getQuadTopLeftCorner(); Ogre::Vector3 getQuadTopRightCorner(); Ogre::Vector3 getQuadBottomLeftCorner(); Ogre::Vector3 getQuadBottomRightCorner(); Ogre::Vector3 getAxisX(); Ogre::Vector3 getAxisY(); Ogre::Vector3 getAxisZ(); protected: EntityCluster *mEntityCluster; Ogre::Vector3 mAxisX; Ogre::Vector3 mAxisY; Ogre::Vector3 mAxisZ; enum BoundingQuadVertex { QUAD_TOP_LEFT, QUAD_TOP_RIGHT, QUAD_BOTTOM_RIGHT, QUAD_BOTTOM_LEFT }; Ogre::Vector3 mBillboardCorners[4]; Ogre::Vector3 mNormal; float mD; }; } #endif