1 | #ifndef _LBBCBILLBOARDVIEWMODE_H |
---|
2 | #define _LBBCBILLBOARDVIEWMODE_H |
---|
3 | |
---|
4 | |
---|
5 | #include "OBAOgreFrameListenerMode.h" |
---|
6 | |
---|
7 | namespace LBBC { |
---|
8 | |
---|
9 | class BillboardViewMode : public OBA::OgreFrameListenerMode |
---|
10 | { |
---|
11 | public: |
---|
12 | BillboardViewMode(Ogre::RenderWindow* win, unsigned int ogreFrameListenerModeHandle, bool useBufferedInputKeys = false, bool useBufferedInputMouse = false): |
---|
13 | OBA::OgreFrameListenerMode(win, ogreFrameListenerModeHandle, useBufferedInputKeys, useBufferedInputMouse) |
---|
14 | { |
---|
15 | showDebugOverlay(false); |
---|
16 | mReloadedTextures = false; |
---|
17 | } |
---|
18 | |
---|
19 | virtual ~BillboardViewMode() |
---|
20 | { |
---|
21 | } |
---|
22 | |
---|
23 | bool frameStarted(const Ogre::FrameEvent& evt, Ogre::InputReader *inputReader) |
---|
24 | { |
---|
25 | mWindow->getViewport(0)->setBackgroundColour(Ogre::ColourValue(0.0, 0.0, 0.0, 1.0)); |
---|
26 | |
---|
27 | //if (!mReloadedTextures) |
---|
28 | //{ |
---|
29 | // for (unsigned int iSubEntity = 0; iSubEntity < mBillboardCloudEntity->getNumSubEntities(); iSubEntity++) |
---|
30 | // { |
---|
31 | // Ogre::MaterialPtr materialPtr = Ogre::MaterialManager::getSingleton().getByName(mBillboardCloudEntity->getSubEntity(iSubEntity)->getMaterialName()); |
---|
32 | // Ogre::LogManager::getSingleton().logMessage("Reloading texture:" + materialPtr->getTechnique(0)->getPass(0)->getTextureUnitState(0)->getTextureName()); |
---|
33 | |
---|
34 | // Ogre::TexturePtr texturePtr = Ogre::TextureManager::getSingleton().getByName(materialPtr->getTechnique(0)->getPass(0)->getTextureUnitState(0)->getTextureName()); |
---|
35 | // texturePtr->reload(); |
---|
36 | // materialPtr->reload(); |
---|
37 | // } |
---|
38 | // mReloadedTextures = true; |
---|
39 | //} |
---|
40 | |
---|
41 | return OgreFrameListenerMode::frameStarted(evt, inputReader); |
---|
42 | } |
---|
43 | |
---|
44 | void setBillboardCloudMeshName(Ogre::String billboardCloudMeshName) |
---|
45 | { |
---|
46 | mBillboardCloudMeshName = billboardCloudMeshName; |
---|
47 | } |
---|
48 | |
---|
49 | virtual void createScene() |
---|
50 | { |
---|
51 | mWindow->getViewport(0)->setBackgroundColour(Ogre::ColourValue(0.0, 0.0, 0.0, 1.0)); |
---|
52 | |
---|
53 | Ogre::SceneNode* sNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
|
---|
54 | //mBillboardCloudEntity = mSceneMgr->createEntity(mBillboardCloudMeshName, mBillboardCloudMeshName);
|
---|
55 | mBillboardCloudEntity = mSceneMgr->createEntity("chestnutLeavesBillboardCloudGrouped.mesh", "chestnutLeavesBillboardCloudGrouped.mesh");
|
---|
56 | sNode->attachObject(mBillboardCloudEntity); |
---|
57 | sNode->rotate(Ogre::Vector3::UNIT_X, Ogre::Radian(Ogre::Degree(-90.0))); |
---|
58 | } |
---|
59 | |
---|
60 | protected: |
---|
61 | Ogre::String mBillboardCloudMeshName; |
---|
62 | |
---|
63 | Ogre::Entity *mBillboardCloudEntity; |
---|
64 | |
---|
65 | bool mReloadedTextures; |
---|
66 | }; |
---|
67 | |
---|
68 | } |
---|
69 | #endif |
---|