#include "IBRBillboardCloudTreeFrameListener.h" IBRBillboardCloudTreeFrameListener::IBRBillboardCloudTreeFrameListener(Ogre::RenderWindow *win, bool useBufferedInputKeys, bool useBufferedInputMouse) : OgreFrameListener(win, useBufferedInputKeys, useBufferedInputMouse) { } IBRBillboardCloudTreeFrameListener::~IBRBillboardCloudTreeFrameListener() { } bool IBRBillboardCloudTreeFrameListener::frameStarted(const Ogre::FrameEvent& evt) { if (!mInputTypeSwitchingOn) { mInputDevice->capture(); } if ( !mUseBufferedInputMouse || !mUseBufferedInputKeys) { // one of the input modes is immediate, so setup what is needed for immediate mouse/key movement if (mTimeUntilNextToggle >= 0) { mTimeUntilNextToggle -= evt.timeSinceLastFrame; } } if (mUseBufferedInputKeys) { // no need to do any processing here, it is handled by event processor and // you get the results as KeyEvents } else { if (processUnbufferedKeyInput(evt) == false) { return false; } } //mWindow->setDebugText("P: " + mDefaultOgreFrameListenerMode->getSceneManager()->getName() + " -- " + Ogre::StringConverter::toString(mTimeUntilNextToggle)); return mDefaultOgreFrameListenerMode->frameStarted(evt,mInputDevice); } bool IBRBillboardCloudTreeFrameListener::processUnbufferedKeyInput(const Ogre::FrameEvent& evt) { if( mInputDevice->isKeyDown(Ogre::KC_ESCAPE) ) { return false; } if (mInputDevice->isKeyDown(Ogre::KC_F1)) { mCurrentOgreFrameListenerMode = 0; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F2)) { mCurrentOgreFrameListenerMode = 1; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F3)) { mCurrentOgreFrameListenerMode = 2; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F4)) { mCurrentOgreFrameListenerMode = 3; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F5)) { mCurrentOgreFrameListenerMode = 4; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F6)) { mCurrentOgreFrameListenerMode = 5; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } if (mInputDevice->isKeyDown(Ogre::KC_F7)) { mCurrentOgreFrameListenerMode = 6; this->setEnabledFrameListenerMode(mCurrentOgreFrameListenerMode); mWindow->setDebugText(""); //mTimeUntilNextToggle = 0.25; } // Return true to continue rendering return true; }