|
From: <sik...@us...> - 2006-05-19 02:55:09
|
Revision: 38 Author: sik0fewl Date: 2006-05-18 19:54:56 -0700 (Thu, 18 May 2006) ViewCVS: http://svn.sourceforge.net/perceptioncrash/?rev=38&view=rev Log Message: ----------- Moved mouse listener to GameManager class so it can delegate events to the current state Made GameState event functions non-pure virtual so derived classes do not have to implement event handlers they don't want Modified Paths: -------------- trunk/perceptioncrash/src/GameManager.cpp trunk/perceptioncrash/src/GameManager.hpp trunk/perceptioncrash/src/GameState.hpp trunk/perceptioncrash/src/PauseState.cpp trunk/perceptioncrash/src/PlayState.cpp trunk/perceptioncrash/src/PlayState.hpp Modified: trunk/perceptioncrash/src/GameManager.cpp =================================================================== --- trunk/perceptioncrash/src/GameManager.cpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/GameManager.cpp 2006-05-19 02:54:56 UTC (rev 38) @@ -42,6 +42,7 @@ mInputManager = new InputManager(mRoot->getAutoCreatedWindow()); mInputManager->getEventProcessor()->addKeyListener(this); + mInputManager->getEventProcessor()->addMouseMotionListener(this); changeState(state); @@ -173,6 +174,27 @@ mStates.back()->keyReleased(e); } +void +GameManager::mouseMoved(Ogre::MouseEvent* e) +{ + // call mouseMoved of current state + mStates.back()->mouseMoved(e); +} + +void +GameManager::mouseDragged(Ogre::MouseEvent* e) +{ + // call mouseDragged of current state + mStates.back()->mouseDragged(e); +} + +void +GameManager::mouseDragMoved(Ogre::MouseEvent* e) +{ + // call mouseDragMoved of current state + mStates.back()->mouseDragMoved(e); +} + bool GameManager::frameStarted(const Ogre::FrameEvent& evt) { Modified: trunk/perceptioncrash/src/GameManager.hpp =================================================================== --- trunk/perceptioncrash/src/GameManager.hpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/GameManager.hpp 2006-05-19 02:54:56 UTC (rev 38) @@ -12,6 +12,7 @@ class GameManager : public Ogre::FrameListener, public Ogre::KeyListener, + public Ogre::MouseMotionListener, public Ogre::Singleton<GameManager> { public: @@ -38,6 +39,10 @@ void keyPressed(Ogre::KeyEvent* e); void keyReleased(Ogre::KeyEvent* e); + void mouseMoved(Ogre::MouseEvent* e); + void mouseDragged(Ogre::MouseEvent* e); + void mouseDragMoved(Ogre::MouseEvent* e); + bool frameStarted(const Ogre::FrameEvent& evt); bool frameEnded(const Ogre::FrameEvent& evt); Modified: trunk/perceptioncrash/src/GameState.hpp =================================================================== --- trunk/perceptioncrash/src/GameState.hpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/GameState.hpp 2006-05-19 02:54:56 UTC (rev 38) @@ -16,12 +16,20 @@ virtual void pause() = 0; virtual void resume() = 0; - virtual void keyClicked(Ogre::KeyEvent* e) = 0; - virtual void keyPressed(Ogre::KeyEvent* e) = 0; - virtual void keyReleased(Ogre::KeyEvent* e) = 0; - virtual bool frameStarted(const Ogre::FrameEvent& evt) = 0; - virtual bool frameEnded(const Ogre::FrameEvent& evt) = 0; + virtual void keyClicked(Ogre::KeyEvent* e) { } + virtual void keyPressed(Ogre::KeyEvent* e) { } + virtual void keyReleased(Ogre::KeyEvent* e) { } + virtual void mouseMoved(Ogre::MouseEvent* e) { } + virtual void mouseDragged(Ogre::MouseEvent* e) { } + virtual void mouseDragMoved(Ogre::MouseEvent* e) { } + + virtual bool frameStarted(const Ogre::FrameEvent& evt) + { return true; }; + virtual bool frameEnded(const Ogre::FrameEvent& evt) + { return true; }; + + void changeState(GameState* state) { GameManager::getSingletonPtr()->changeState(state); Modified: trunk/perceptioncrash/src/PauseState.cpp =================================================================== --- trunk/perceptioncrash/src/PauseState.cpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/PauseState.cpp 2006-05-19 02:54:56 UTC (rev 38) @@ -12,7 +12,7 @@ mRoot = Ogre::Root::getSingletonPtr(); mViewport = mRoot->getAutoCreatedWindow()->getViewport(0); - mViewport->setBackgroundColour( Ogre::ColourValue(0.0, 1.0, 0.0) ); + mViewport->setBackgroundColour(Ogre::ColourValue(0.0, 1.0, 0.0)); } void Modified: trunk/perceptioncrash/src/PlayState.cpp =================================================================== --- trunk/perceptioncrash/src/PlayState.cpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/PlayState.cpp 2006-05-19 02:54:56 UTC (rev 38) @@ -17,7 +17,7 @@ mSceneMgr = mRoot->createSceneManager("BspSceneManager"); mCamera = mSceneMgr->createCamera("PlayCamera"); mViewport = mRoot->getAutoCreatedWindow()->addViewport(mCamera); - mViewport->setBackgroundColour( Ogre::ColourValue(0.3, 0.3, 0.3) ); + mViewport->setBackgroundColour(Ogre::ColourValue(0.3, 0.3, 0.3)); mCamera->setNearClipDistance(5.0f); mCamera->setFarClipDistance(5000.0f); @@ -25,22 +25,20 @@ Ogre::Real(mViewport->getActualHeight())); Ogre::ResourceGroupManager* rgm = Ogre::ResourceGroupManager::getSingletonPtr(); - rgm->linkWorldGeometryToResourceGroup(rgm->getWorldResourceGroupName(), + rgm->linkWorldGeometryToResourceGroup(rgm->getWorldResourceGroupName(), "ogretestmap.bsp", mSceneMgr); // sdw: This line causes me to crash, i don't know why. It works fine in another // project, and used to in this one, until something must have changed. - //rgm->loadResourceGroup(rgm->getWorldResourceGroupName(), false, true); - mSceneMgr->setAmbientLight( Ogre::ColourValue(1, 1, 1) ); + rgm->loadResourceGroup(rgm->getWorldResourceGroupName(), false, true); + mSceneMgr->setAmbientLight(Ogre::ColourValue(1, 1, 1)); Ogre::ViewPoint vp = mSceneMgr->getSuggestedViewpoint(true); mCamera->setPosition(vp.position); - mCamera->pitch( Ogre::Degree(90) ); + mCamera->pitch(Ogre::Degree(90)); mCamera->rotate(vp.orientation); mCamera->setFixedYawAxis(true, Ogre::Vector3::UNIT_Z); - - InputManager::getSingleton().getEventProcessor()->addMouseMotionListener( this ); } void @@ -49,7 +47,6 @@ mSceneMgr->clearScene(); mSceneMgr->destroyAllCameras(); mRoot->getAutoCreatedWindow()->removeAllViewports(); - InputManager::getSingleton().getEventProcessor()->removeMouseMotionListener( this ); } void @@ -60,7 +57,7 @@ void PlayState::resume() { - mViewport->setBackgroundColour( Ogre::ColourValue(0.3, 0.3, 0.3) ); + mViewport->setBackgroundColour(Ogre::ColourValue(0.3, 0.3, 0.3)); } void @@ -102,8 +99,8 @@ void PlayState::mouseMoved(Ogre::MouseEvent *e) { - mCamera->yaw( Ogre::Radian(-e->getRelX() * 1.f) ); - mCamera->pitch( Ogre::Radian(-e->getRelY() * 1.f) ); + mCamera->yaw(Ogre::Radian(-e->getRelX() * 1.f)); + mCamera->pitch(Ogre::Radian(-e->getRelY() * 1.f)); } void Modified: trunk/perceptioncrash/src/PlayState.hpp =================================================================== --- trunk/perceptioncrash/src/PlayState.hpp 2006-05-19 00:34:28 UTC (rev 37) +++ trunk/perceptioncrash/src/PlayState.hpp 2006-05-19 02:54:56 UTC (rev 38) @@ -5,8 +5,7 @@ #include "GameState.hpp" -class PlayState : public GameState, - public Ogre::MouseMotionListener +class PlayState : public GameState { public: void enter(); @@ -18,14 +17,15 @@ void keyClicked(Ogre::KeyEvent* e); void keyPressed(Ogre::KeyEvent* e); void keyReleased(Ogre::KeyEvent* e); + + void mouseMoved(Ogre::MouseEvent* e); + void mouseDragged(Ogre::MouseEvent* e); + void mouseDragMoved(Ogre::MouseEvent* e); + bool frameStarted(const Ogre::FrameEvent& evt); bool frameEnded(const Ogre::FrameEvent& evt); - void mouseMoved(Ogre::MouseEvent *); - void mouseDragged(Ogre::MouseEvent *); - void mouseDragMoved(Ogre::MouseEvent *); - - static PlayState* getInstance() + static PlayState* getInstance() { return &mPlayState; } protected: @@ -36,7 +36,7 @@ Ogre::Viewport* mViewport; Ogre::InputReader* mInputDevice; Ogre::Camera* mCamera; - + private: static PlayState mPlayState; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |