#ifndef _LBBCBILLBOARDCLOUDDIFFUSECOLORTEXTUREVIEWMODE_H #define _LBBCBILLBOARDCLOUDDIFFUSECOLORTEXTUREVIEWMODE_H #include #include #include #include namespace LBBC { class _BBCExport BillboardCloudDiffuseColorTextureViewMode : public OBA::OgreFrameListenerMode { protected: unsigned int mFrame; Ogre::SceneNode *mEntityClustersGroupedSceneNode; Ogre::SceneNode *mBillboardCloudSplittedSceneNode; Ogre::Entity *mEntityClustersGrouped; Ogre::Entity *mBillboardCloudSplitted; IMG::TexturePtr mClusterTexture; IMG::TextureAtlasPtr mTextureAtlas; unsigned int mNumTextures; unsigned int mCurrentTexture; unsigned int mTextureAtlasSize; unsigned int mTextureSize; unsigned int mBitRange; Ogre::PixelFormat mSrcPixelFormat; Ogre::PixelFormat mDestPixelFormat; Ogre::String mTextureAtlasName; Ogre::String mTextureAtlasFolder; Ogre::String mEntityClustersGroupedName; Ogre::String mBillboardCloudSplittedName; Ogre::Matrix4 mCustomProjMatrix; Ogre::String mTextureName; bool mDebugBillboardGeneration; bool mDebugTextureAtlasGeneration; unsigned int mCurrentBillboardGroup; unsigned int mCurrentBillboard; public: BillboardCloudDiffuseColorTextureViewMode(Ogre::RenderWindow* win, unsigned int ogreFrameListenerModeHandle, bool useBufferedInputKeys = false, bool useBufferedInputMouse = false); virtual ~BillboardCloudDiffuseColorTextureViewMode(); virtual bool frameStarted(const Ogre::FrameEvent& evt, Ogre::InputReader *inputReader); virtual void createScene(); virtual void destroyScene(); void setBillboardCloudGroupedTextureAtlasDebug(bool debugTextureAtlasGeneration); void setTextureName(Ogre::String textureName); void configureBillboard(); void enableEntityClusterCustomOrthogonalCameraMaterial(unsigned int iEntityClusterGrouped); void disableEntityClusterCustomOrthogonalCameraMaterial(unsigned int iEntityClusterGrouped); void configureTexture(); void configureTextureAtlas(); bool processUnbufferedKeyInput(const Ogre::FrameEvent& evt); void saveTextureAtlas(); void setTextureAtlasSize(unsigned int size); void setTextureSize(unsigned int size); void setEntityClustersGroupedName(Ogre::String entityClustersGrouped); void setBillboardCloudSplittedName(Ogre::String billboardCloudSplittedName); void setTextureAtlasName(Ogre::String textureAtlasName); void setTextureAtlasFolder(Ogre::String textureAtlasFolder); void setTextureAtlasBitRange(unsigned int bitRange); void configureBillboardOrthogonalAlignedCamera(unsigned int iBillboard); void initializeEntityClustersGrouped(); void initializeBillboardCloudSplitted(); void generateTexture(); void generateTextureAtlas(); }; } #endif