|
From: <sik...@us...> - 2006-05-19 14:35:12
|
Revision: 43 Author: sik0fewl Date: 2006-05-19 07:35:07 -0700 (Fri, 19 May 2006) ViewCVS: http://svn.sourceforge.net/perceptioncrash/?rev=43&view=rev Log Message: ----------- Added debug panel overlay. Press F12 to toggle Modified Paths: -------------- trunk/perceptioncrash/src/GameManager.cpp trunk/perceptioncrash/src/GameManager.hpp Modified: trunk/perceptioncrash/src/GameManager.cpp =================================================================== --- trunk/perceptioncrash/src/GameManager.cpp 2006-05-19 05:48:21 UTC (rev 42) +++ trunk/perceptioncrash/src/GameManager.cpp 2006-05-19 14:35:07 UTC (rev 43) @@ -1,4 +1,5 @@ #include <Ogre.h> +#include <OgreKeyEvent.h> #include "GameManager.hpp" #include "InputManager.hpp" @@ -44,6 +45,9 @@ mInputManager->getEventProcessor()->addKeyListener(this); mInputManager->getEventProcessor()->addMouseMotionListener(this); + mDebugPanelOverlay = Ogre::OverlayManager::getSingleton().getByName("Core/DebugOverlay"); + + changeState(state); mRoot->startRendering(); @@ -168,6 +172,12 @@ void GameManager::keyPressed(Ogre::KeyEvent* e) { + // Stateless code: + if (e->getKey() == Ogre::KC_F12) + { + toggleDebugPanelOverlay(); + } + // call keyPressed of current state mStates.back()->keyPressed(e); } @@ -210,10 +220,59 @@ bool GameManager::frameEnded(const Ogre::FrameEvent& evt) { + // Stateless code: + updateDebugPanelOverlay(); + // call frameEnded of current state return mStates.back()->frameEnded(evt); } +void +GameManager::toggleDebugPanelOverlay() +{ + if (mDebugPanelOverlay) + { + if (mDebugPanelOverlay->isVisible()) + mDebugPanelOverlay->hide(); + else + mDebugPanelOverlay->show(); + } + +} + +void +GameManager::updateDebugPanelOverlay() +{ + static const Ogre::String currFps = "Current FPS: "; + static const Ogre::String avgFps = "Average FPS: "; + static const Ogre::String bestFps = "Best FPS: "; + static const Ogre::String worstFps = "Worst FPS: "; + static const Ogre::String tris = "Triangle Count: "; + + if (mDebugPanelOverlay && mDebugPanelOverlay->isVisible()) + { + Ogre::OverlayElement* guiCurr = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/CurrFps"); + Ogre::OverlayElement* guiAvg = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/AverageFps"); + Ogre::OverlayElement* guiBest = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/BestFps"); + Ogre::OverlayElement* guiWorst = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/WorstFps"); + + const Ogre::RenderTarget::FrameStats& stats = mRenderWindow->getStatistics(); + + guiCurr->setCaption(currFps + Ogre::StringConverter::toString(stats.lastFPS)); + guiAvg->setCaption(avgFps + Ogre::StringConverter::toString(stats.avgFPS)); + guiBest->setCaption(bestFps + Ogre::StringConverter::toString(stats.bestFPS) + +" "+Ogre::StringConverter::toString(stats.bestFrameTime)+" ms"); + guiWorst->setCaption(worstFps + Ogre::StringConverter::toString(stats.worstFPS) + +" "+Ogre::StringConverter::toString(stats.worstFrameTime)+" ms"); + + Ogre::OverlayElement* guiTris = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/NumTris"); + guiTris->setCaption(tris + Ogre::StringConverter::toString(stats.triangleCount)); + + Ogre::OverlayElement* guiDbg = Ogre::OverlayManager::getSingleton().getOverlayElement("Core/DebugText"); + guiDbg->setCaption(mRenderWindow->getDebugText()); + } +} + GameManager* GameManager::getSingletonPtr() { Modified: trunk/perceptioncrash/src/GameManager.hpp =================================================================== --- trunk/perceptioncrash/src/GameManager.hpp 2006-05-19 05:48:21 UTC (rev 42) +++ trunk/perceptioncrash/src/GameManager.hpp 2006-05-19 14:35:07 UTC (rev 43) @@ -47,6 +47,10 @@ bool frameEnded(const Ogre::FrameEvent& evt); private: + void toggleDebugPanelOverlay(); + void updateDebugPanelOverlay(); + + Ogre::Overlay* mDebugPanelOverlay; std::vector<GameState*> mStates; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |