|
From: <xs...@us...> - 2006-05-17 04:23:52
|
Revision: 17 Author: xsdwx Date: 2006-05-16 21:23:47 -0700 (Tue, 16 May 2006) ViewCVS: http://svn.sourceforge.net/perceptioncrash/?rev=17&view=rev Log Message: ----------- Modified Paths: -------------- trunk/perceptioncrash/src/game.cpp trunk/perceptioncrash/src/game.hpp trunk/perceptioncrash/src/input.cpp trunk/perceptioncrash/src/input.hpp Added Paths: ----------- trunk/perceptioncrash/src/graphics.cpp trunk/perceptioncrash/src/graphics.hpp Modified: trunk/perceptioncrash/src/game.cpp =================================================================== --- trunk/perceptioncrash/src/game.cpp 2006-05-17 03:57:29 UTC (rev 16) +++ trunk/perceptioncrash/src/game.cpp 2006-05-17 04:23:47 UTC (rev 17) @@ -5,51 +5,12 @@ #include <cmath> Game::Game() - : m_pRoot(new Ogre::Root("plugins.cfg", "ogre.cfg", "ogre.log")), - m_pSmgr(m_pRoot->createSceneManager("BspSceneManager")), - m_pEventProcessor(new Ogre::EventProcessor), - key_quit(Input::getSingleton().createKey("quit", Ogre::KC_ESCAPE)), + : key_quit(Input::getSingleton().createKey("quit", Ogre::KC_ESCAPE)), key_up(Input::getSingleton().createKey("up", Ogre::KC_W)), key_right(Input::getSingleton().createKey("right", Ogre::KC_D)), key_down(Input::getSingleton().createKey("down", Ogre::KC_S)), key_left(Input::getSingleton().createKey("left", Ogre::KC_A)) { - // HACK This is setting either OpenGL or first thing it comes to - Ogre::RenderSystemList *renderers = m_pRoot->getAvailableRenderers(); - Ogre::RenderSystem *r = *renderers->begin(); // default - - Ogre::RenderSystemList::iterator i; - for(i = renderers->begin(); i != renderers->end(); ++i) { - if ( Ogre::StringUtil::match((*i)->getName(), "*opengl*", false) ) - r = *i; - } - - r->setConfigOption("FSAA", "0"); - r->setConfigOption("Full Screen", "no"); - r->setConfigOption("RTT Preferred Mode", "FBO"); - r->setConfigOption("Video Mode", "800 x 600"); - - m_pRoot->setRenderSystem(r); - m_pWindow = m_pRoot->initialise(true, "Application"); - - // Should probably change this stuff - m_pCamera = m_pSmgr->createCamera("camera"); - m_pCamera->setPosition(Ogre::Vector3(0.0f, 0.0f, 500.0f)); - m_pCamera->lookAt(Ogre::Vector3(0.0f, 0.0f, 0.0f)); - m_pCamera->setNearClipDistance(5.0f); - m_pCamera->setFarClipDistance(5000.0f); - - m_pViewport = m_pWindow->addViewport( m_pCamera ); - m_pViewport->setBackgroundColour( Ogre::ColourValue(0.3f, 0.3f, 0.3f) ); - - m_pCamera->setAspectRatio( Ogre::Real(m_pViewport->getActualWidth()) / - Ogre::Real(m_pViewport->getActualHeight()) ); - - m_pEventProcessor->addKeyListener( &Input::getSingleton() ); - m_pEventProcessor->addMouseMotionListener( &Input::getSingleton() ); - m_pEventProcessor->initialise( m_pWindow ); - m_pEventProcessor->startProcessingEvents(); - Input::getSingleton().register_mouselistener( boost::bind(&Game::mousemotion_listener, this, _1, _2) ); } @@ -65,45 +26,48 @@ Ogre::ResourceGroupManager::getSingleton().getWorldResourceGroupName() ); Ogre::ResourceGroupManager::getSingleton().linkWorldGeometryToResourceGroup( Ogre::ResourceGroupManager::getSingleton().getWorldResourceGroupName(), - "ogretestmap.bsp", m_pSmgr); + "ogretestmap.bsp", Graphics::getSingleton().getSceneManagerPtr()); Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); Ogre::ResourceGroupManager::getSingleton().loadResourceGroup( Ogre::ResourceGroupManager::getSingleton().getWorldResourceGroupName(), false, true); - Ogre::ViewPoint vp = m_pSmgr->getSuggestedViewpoint(true); - m_pCamera->setPosition(vp.position); - m_pCamera->pitch( Ogre::Degree(90) ); - m_pCamera->rotate(vp.orientation); - m_pCamera->setFixedYawAxis(true, Ogre::Vector3::UNIT_Z); + Ogre::ViewPoint vp = Graphics::getSingleton().getSceneManagerPtr()->getSuggestedViewpoint(true); + Graphics::getSingleton().getCameraPtr()->setPosition(vp.position); + Graphics::getSingleton().getCameraPtr()->pitch( Ogre::Degree(90) ); + Graphics::getSingleton().getCameraPtr()->rotate(vp.orientation); + Graphics::getSingleton().getCameraPtr()->setFixedYawAxis(true, Ogre::Vector3::UNIT_Z); - m_pSmgr->setAmbientLight( Ogre::ColourValue(1, 1, 1) ); + Graphics::getSingleton().getSceneManagerPtr()->setAmbientLight( Ogre::ColourValue(1, 1, 1) ); - Ogre::Entity *myEntity = m_pSmgr->createEntity("Robot1", "robot.mesh"); - Ogre::SceneNode *myNode = m_pSmgr->getRootSceneNode()->createChildSceneNode("Robot1Node"); + Ogre::Entity *myEntity = + Graphics::getSingleton().getSceneManagerPtr()->createEntity("Robot1", "robot.mesh"); + Ogre::SceneNode *myNode = + Graphics::getSingleton().getSceneManagerPtr()-> + getRootSceneNode()->createChildSceneNode("Robot1Node"); myNode->attachObject(myEntity); // This is how the real game loop should go while ( !key_quit->isDown() ) { - if ( !m_pRoot->_fireFrameStarted() ) break; + if ( !Graphics::getSingleton().getRootPtr()->_fireFrameStarted() ) break; Think(); - m_pRoot->_updateAllRenderTargets(); + Graphics::getSingleton().Update(); - if ( !m_pRoot->_fireFrameEnded() ) break; + if ( !Graphics::getSingleton().getRootPtr()->_fireFrameEnded() ) break; } } void Game::Think() { - if (key_up->isDown()) { m_pCamera->moveRelative( Ogre::Vector3(0, 0, -2) ); } - if (key_right->isDown()) { m_pCamera->moveRelative( Ogre::Vector3(2, 0, 0) ); } - if (key_down->isDown()) { m_pCamera->moveRelative( Ogre::Vector3(0, 0, 2) ); } - if (key_left->isDown()) { m_pCamera->moveRelative( Ogre::Vector3(-2, 0, 0) ); } + if (key_up->isDown()) { Graphics::getSingleton().getCameraPtr()->moveRelative( Ogre::Vector3(0, 0, -2) ); } + if (key_right->isDown()) { Graphics::getSingleton().getCameraPtr()->moveRelative( Ogre::Vector3(2, 0, 0) ); } + if (key_down->isDown()) { Graphics::getSingleton().getCameraPtr()->moveRelative( Ogre::Vector3(0, 0, 2) ); } + if (key_left->isDown()) { Graphics::getSingleton().getCameraPtr()->moveRelative( Ogre::Vector3(-2, 0, 0) ); } } void Game::mousemotion_listener(Ogre::Real x, Ogre::Real y) { - m_pCamera->yaw( Ogre::Radian(-x * 1.f) ); - m_pCamera->pitch( Ogre::Radian(-y * 1.f) ); + Graphics::getSingleton().getCameraPtr()->yaw( Ogre::Radian(-x * 1.f) ); + Graphics::getSingleton().getCameraPtr()->pitch( Ogre::Radian(-y * 1.f) ); } Modified: trunk/perceptioncrash/src/game.hpp =================================================================== --- trunk/perceptioncrash/src/game.hpp 2006-05-17 03:57:29 UTC (rev 16) +++ trunk/perceptioncrash/src/game.hpp 2006-05-17 04:23:47 UTC (rev 17) @@ -1,6 +1,7 @@ #ifndef GAME_HPP #define GAME_HPP +#include "graphics.hpp" #include "input.hpp" #include <Ogre.h> @@ -18,13 +19,6 @@ void mousemotion_listener(Ogre::Real, Ogre::Real); private: - std::auto_ptr<Ogre::Root> m_pRoot; - Ogre::RenderWindow *m_pWindow; - Ogre::SceneManager *m_pSmgr; - Ogre::Camera *m_pCamera; - Ogre::Viewport *m_pViewport; - std::auto_ptr<Ogre::EventProcessor> m_pEventProcessor; - input_key* key_quit; input_key* key_up; input_key* key_right; Added: trunk/perceptioncrash/src/graphics.cpp =================================================================== --- trunk/perceptioncrash/src/graphics.cpp (rev 0) +++ trunk/perceptioncrash/src/graphics.cpp 2006-05-17 04:23:47 UTC (rev 17) @@ -0,0 +1,37 @@ +#include "graphics.hpp" + +graphics::graphics() + : m_pRoot(new Ogre::Root("plugins.cfg", "ogre.cfg", "ogre.log")), + m_pSmgr(m_pRoot->createSceneManager("BspSceneManager")) +{ + // HACK This is setting either OpenGL or first thing it comes to + Ogre::RenderSystemList *renderers = m_pRoot->getAvailableRenderers(); + Ogre::RenderSystem *r = *renderers->begin(); // default + + Ogre::RenderSystemList::iterator i; + for(i = renderers->begin(); i != renderers->end(); ++i) { + if ( Ogre::StringUtil::match((*i)->getName(), "*opengl*", false) ) + r = *i; + } + + r->setConfigOption("FSAA", "0"); + r->setConfigOption("Full Screen", "no"); + r->setConfigOption("RTT Preferred Mode", "FBO"); + r->setConfigOption("Video Mode", "800 x 600"); + + m_pRoot->setRenderSystem(r); + m_pWindow = m_pRoot->initialise(true, "Application"); + + // Should probably change this stuff + m_pCamera = m_pSmgr->createCamera("camera"); + m_pCamera->setPosition(Ogre::Vector3(0.0f, 0.0f, 500.0f)); + m_pCamera->lookAt(Ogre::Vector3(0.0f, 0.0f, 0.0f)); + m_pCamera->setNearClipDistance(5.0f); + m_pCamera->setFarClipDistance(5000.0f); + + m_pViewport = m_pWindow->addViewport( m_pCamera ); + m_pViewport->setBackgroundColour( Ogre::ColourValue(0.3f, 0.3f, 0.3f) ); + + m_pCamera->setAspectRatio( Ogre::Real(m_pViewport->getActualWidth()) / + Ogre::Real(m_pViewport->getActualHeight()) ); +} Added: trunk/perceptioncrash/src/graphics.hpp =================================================================== --- trunk/perceptioncrash/src/graphics.hpp (rev 0) +++ trunk/perceptioncrash/src/graphics.hpp 2006-05-17 04:23:47 UTC (rev 17) @@ -0,0 +1,35 @@ +#ifndef GRAPHICS_HPP +#define GRAPHICS_HPP + +#include "singleton.hpp" + +#include <Ogre.h> +#include <OgreEventListeners.h> +#include <OgreKeyEvent.h> + +#include <memory> + +class graphics { +public: + graphics(); + + void Update() { m_pRoot->_updateAllRenderTargets(); } + + Ogre::Root* getRootPtr() const { return m_pRoot.get(); } + Ogre::RenderWindow* getWindowPtr() const { return m_pWindow; } + Ogre::SceneManager* getSceneManagerPtr() const { return m_pSmgr; } + Ogre::Camera* getCameraPtr() const { return m_pCamera; } + Ogre::Viewport* getViewportPtr() const { return m_pViewport; } + +private: + std::auto_ptr<Ogre::Root> m_pRoot; + Ogre::RenderWindow *m_pWindow; + Ogre::SceneManager *m_pSmgr; + Ogre::Camera *m_pCamera; + Ogre::Viewport *m_pViewport; +}; + +typedef singleton<graphics> Graphics; + +#endif // GRAPHICS.HPP + Modified: trunk/perceptioncrash/src/input.cpp =================================================================== --- trunk/perceptioncrash/src/input.cpp 2006-05-17 03:57:29 UTC (rev 16) +++ trunk/perceptioncrash/src/input.cpp 2006-05-17 04:23:47 UTC (rev 17) @@ -1,5 +1,15 @@ #include "input.hpp" +#include "graphics.hpp" +input::input() + : m_pEventProcessor( new Ogre::EventProcessor ) +{ + m_pEventProcessor->addKeyListener( this ); + m_pEventProcessor->addMouseMotionListener( this ); + m_pEventProcessor->initialise( Graphics::getSingleton().getWindowPtr() ); + m_pEventProcessor->startProcessingEvents(); +} + input_key* input::createKey(std::string str, int keycode) { if (m_Keys.find(str) == m_Keys.end()) return m_Keys[str] = new input_key(keycode); Modified: trunk/perceptioncrash/src/input.hpp =================================================================== --- trunk/perceptioncrash/src/input.hpp 2006-05-17 03:57:29 UTC (rev 16) +++ trunk/perceptioncrash/src/input.hpp 2006-05-17 04:23:47 UTC (rev 17) @@ -28,7 +28,7 @@ class input : public Ogre::KeyListener, public Ogre::MouseMotionListener { public: - input() { } + input(); input_key* createKey(std::string, int); input_key* findKey(std::string); @@ -46,8 +46,10 @@ } private: - std::map<std::string, input_key*> m_Keys; - std::list< boost::function<void (Ogre::Real, Ogre::Real)> > m_MouseListeners; + std::map<std::string, input_key*> m_Keys; + std::list< boost::function<void (Ogre::Real, Ogre::Real)> > m_MouseListeners; + + std::auto_ptr<Ogre::EventProcessor> m_pEventProcessor; }; typedef singleton<input> Input; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |