Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Mar 19, 2009, 10:58:43 AM (16 years ago)
Author:
rgrieder
Message:

Move graphic related content of GSGraphics to GraphicsManager which originally was GraphisEngine (but since we don't have an engine of our own, I renamed it).
Reduced OgreWindowEventUtilities.h dependency from GraphisManager.h (includes windows.h).

Location:
code/branches/gui/src/orxonox/gamestates
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • code/branches/gui/src/orxonox/gamestates/GSClient.cc

    r2800 r2801  
    5959            ThrowException(InitialisationFailed, "Could not establish connection with server.");
    6060
    61         GSLevel::enter(this->getParent()->getViewport());
     61        GSLevel::enter();
    6262
    6363        // TODO: Get Clock from Game or GameStateManager, but with 0 delta time
  • code/branches/gui/src/orxonox/gamestates/GSDedicated.cc

    r2800 r2801  
    5858        COUT(0) << "Loading scene in server mode" << std::endl;
    5959
    60         GSLevel::enter(0);
     60        GSLevel::enter();
    6161
    6262        server_->open();
  • code/branches/gui/src/orxonox/gamestates/GSGUI.cc

    r2800 r2801  
    3535#include "core/input/SimpleInputState.h"
    3636#include "gui/GUIManager.h"
     37#include "GraphicsManager.h"
    3738
    3839namespace orxonox
     
    4950    void GSGUI::enter()
    5051    {
    51         guiManager_ = getParent()->getGUIManager();
     52        guiManager_ = GUIManager::getInstancePtr();
    5253
    5354        // show main menu
    5455        guiManager_->loadScene("MainMenu");
    5556        guiManager_->showGUI("MainMenu", 0);
    56         getParent()->getViewport()->setCamera(guiManager_->getCamera());
     57        GraphicsManager::getInstance().getViewport()->setCamera(guiManager_->getCamera());
    5758    }
    5859
  • code/branches/gui/src/orxonox/gamestates/GSGraphics.cc

    r2800 r2801  
    3030#include "GSGraphics.h"
    3131
    32 #include <fstream>
    3332#include <boost/filesystem.hpp>
     33#include <OgreRenderWindow.h>
    3434
    35 #include <OgreCompositorManager.h>
    36 #include <OgreConfigFile.h>
    37 #include <OgreFrameListener.h>
    38 #include <OgreRoot.h>
    39 #include <OgreLogManager.h>
    40 #include <OgreException.h>
    41 #include <OgreRenderWindow.h>
    42 #include <OgreRenderSystem.h>
    43 #include <OgreTextureManager.h>
    44 #include <OgreViewport.h>
    45 #include <OgreWindowEventUtilities.h>
    46 
    47 #include "SpecialConfig.h"
    4835#include "util/Debug.h"
    49 #include "util/Exception.h"
    50 #include "util/String.h"
    51 #include "util/SubString.h"
    52 #include "core/ConsoleCommand.h"
    5336#include "core/ConfigValueIncludes.h"
    5437#include "core/CoreIncludes.h"
     
    6144#include "overlays/console/InGameConsole.h"
    6245#include "gui/GUIManager.h"
    63 #include "tools/WindowEventListener.h"
    6446
    6547// for compatibility
    66 #include "GraphicsEngine.h"
     48#include "GraphicsManager.h"
    6749
    6850namespace orxonox
     
    7052    GSGraphics::GSGraphics()
    7153        : GameState<GSRoot>("graphics")
    72         , renderWindow_(0)
    73         , viewport_(0)
    74         , bWindowEventListenerUpdateRequired_(false)
    7554        , inputManager_(0)
    7655        , console_(0)
    7756        , guiManager_(0)
    78         , ogreRoot_(0)
    79         , ogreLogger_(0)
    80         , graphicsEngine_(0)
     57        , graphicsManager_(0)
    8158        , masterKeyBinder_(0)
    8259        , debugOverlay_(0)
     
    9269    void GSGraphics::setConfigValues()
    9370    {
    94         SetConfigValue(resourceFile_,    "resources.cfg")
    95             .description("Location of the resources file in the data path.");
    96         SetConfigValue(ogreConfigFile_,  "ogre.cfg")
    97             .description("Location of the Ogre config file");
    98         SetConfigValue(ogrePluginsFolder_, ORXONOX_OGRE_PLUGINS_FOLDER)
    99             .description("Folder where the Ogre plugins are located.");
    100         SetConfigValue(ogrePlugins_, ORXONOX_OGRE_PLUGINS)
    101             .description("Comma separated list of all plugins to load.");
    102         SetConfigValue(ogreLogFile_,     "ogre.log")
    103             .description("Logfile for messages from Ogre. Use \"\" to suppress log file creation.");
    104         SetConfigValue(ogreLogLevelTrivial_ , 5)
    105             .description("Corresponding orxonox debug level for ogre Trivial");
    106         SetConfigValue(ogreLogLevelNormal_  , 4)
    107             .description("Corresponding orxonox debug level for ogre Normal");
    108         SetConfigValue(ogreLogLevelCritical_, 2)
    109             .description("Corresponding orxonox debug level for ogre Critical");
    11071    }
    11172
     
    11576
    11677        // initialise graphics engine. Doesn't load the render window yet!
    117         graphicsEngine_ = new GraphicsEngine();
    118 
    119         // Ogre setup procedure
    120         setupOgre();
    121         // load all the required plugins for Ogre
    122         loadOgrePlugins();
    123         // read resource declaration file
    124         this->declareResources();
    125         // Reads ogre config and creates the render window
    126         this->loadRenderer();
    127 
    128         // TODO: Spread this so that this call only initialises things needed for the Console and GUI
    129         this->initialiseResources();
    130 
    131         // We want to get informed whenever an object of type WindowEventListener is created
    132         // in order to later update the window size.
    133         bWindowEventListenerUpdateRequired_ = false;
    134         RegisterConstructionCallback(GSGraphics, orxonox::WindowEventListener, requestWindowEventListenerUpdate);
     78        this->graphicsManager_ = new GraphicsManager();
     79        this->graphicsManager_->initialise();
    13580
    13681        // load debug overlay
     
    14388        inputManager_ = new InputManager();
    14489        size_t windowHnd = 0;
    145         this->renderWindow_->getCustomAttribute("WINDOW", &windowHnd);
    146         inputManager_->initialise(windowHnd, renderWindow_->getWidth(), renderWindow_->getHeight(), true);
     90        Ogre::RenderWindow* renderWindow = GraphicsManager::getInstance().getRenderWindow();
     91        renderWindow->getCustomAttribute("WINDOW", &windowHnd);
     92        inputManager_->initialise(windowHnd, renderWindow->getWidth(), renderWindow->getHeight(), true);
    14793        // Configure master input state with a KeyBinder
    14894        masterKeyBinder_ = new KeyBinder();
     
    15298        // Load the InGameConsole
    15399        console_ = new InGameConsole();
    154         console_->initialise(this->renderWindow_->getWidth(), this->renderWindow_->getHeight());
     100        console_->initialise(renderWindow->getWidth(), renderWindow->getHeight());
    155101
    156102        // load the CEGUI interface
    157103        guiManager_ = new GUIManager();
    158         guiManager_->initialise(this->renderWindow_);
    159 
    160         // add console commands
    161         FunctorMember<GSGraphics>* functor1 = createFunctor(&GSGraphics::printScreen);
    162         functor1->setObject(this);
    163         ccPrintScreen_ = createConsoleCommand(functor1, "printScreen");
    164         CommandExecutor::addConsoleCommandShortcut(ccPrintScreen_);
     104        guiManager_->initialise(renderWindow);
    165105    }
    166106
    167107    void GSGraphics::leave()
    168108    {
    169         using namespace Ogre;
    170 
    171         delete this->ccPrintScreen_;
    172 
    173         // remove our WindowEventListener first to avoid bad calls after the window has been destroyed
    174         Ogre::WindowEventUtilities::removeWindowEventListener(this->renderWindow_, this);
    175 
    176109        delete this->guiManager_;
    177110
     
    185118        delete this->debugOverlay_;
    186119
    187         // unload all compositors
    188         Ogre::CompositorManager::getSingleton().removeAll();
    189 
    190         // destroy render window
    191         RenderSystem* renderer = this->ogreRoot_->getRenderSystem();
    192         renderer->destroyRenderWindow("Orxonox");
    193 
    194         /*** CODE SNIPPET, UNUSED ***/
    195         // Does the opposite of initialise()
    196         //ogreRoot_->shutdown();
    197         // Remove all resources and resource groups
    198         //StringVector groups = ResourceGroupManager::getSingleton().getResourceGroups();
    199         //for (StringVector::iterator it = groups.begin(); it != groups.end(); ++it)
    200         //{
    201         //    ResourceGroupManager::getSingleton().destroyResourceGroup(*it);
    202         //}
    203 
    204         //ParticleSystemManager::getSingleton().removeAllTemplates();
    205 
    206         // Shutdown the render system
    207         //this->ogreRoot_->setRenderSystem(0);
    208 
    209         delete this->ogreRoot_;
    210 
    211         // delete the ogre log and the logManager (since we have created it).
    212         this->ogreLogger_->getDefaultLog()->removeListener(this);
    213         this->ogreLogger_->destroyLog(Ogre::LogManager::getSingleton().getDefaultLog());
    214         delete this->ogreLogger_;
    215 
    216         delete graphicsEngine_;
    217 
    218         Core::setShowsGraphics(false);
     120        delete graphicsManager_;
    219121    }
    220122
     
    231133        uint64_t timeBeforeTick = time.getRealMicroseconds();
    232134
    233         float dt = time.getDeltaTime();
    234 
    235         this->inputManager_->update(time);
    236         // tick console
     135        this->inputManager_->update(time);        // tick console
    237136        this->console_->update(time);
    238137        this->tickChild(time);
    239 
    240         if (this->bWindowEventListenerUpdateRequired_)
    241         {
    242             // Update all WindowEventListeners for the case a new one was created.
    243             this->windowResized(this->renderWindow_);
    244             this->bWindowEventListenerUpdateRequired_ = false;
    245         }
    246138
    247139        uint64_t timeAfterTick = time.getRealMicroseconds();
     
    251143
    252144        // Update statistics overlay. Note that the values only change periodically in GSRoot.
    253         GraphicsEngine::getInstance().setAverageFramesPerSecond(this->getParent()->getAvgFPS());
    254         GraphicsEngine::getInstance().setAverageTickTime(this->getParent()->getAvgTickTime());
     145        GraphicsManager::getInstance().setAverageFramesPerSecond(this->getParent()->getAvgFPS());
     146        GraphicsManager::getInstance().setAverageTickTime(this->getParent()->getAvgTickTime());
    255147
    256         // don't forget to call _fireFrameStarted in ogre to make sure
    257         // everything goes smoothly
    258         Ogre::FrameEvent evt;
    259         evt.timeSinceLastFrame = dt;
    260         evt.timeSinceLastEvent = dt; // note: same time, but shouldn't matter anyway
    261         ogreRoot_->_fireFrameStarted(evt);
    262 
    263         // Pump messages in all registered RenderWindows
    264         // This calls the WindowEventListener objects.
    265         Ogre::WindowEventUtilities::messagePump();
    266         // make sure the window stays active even when not focused
    267         // (probably only necessary on windows)
    268         this->renderWindow_->setActive(true);
    269 
    270         // render
    271         ogreRoot_->_updateAllRenderTargets();
    272 
    273         // again, just to be sure ogre works fine
    274         ogreRoot_->_fireFrameEnded(evt); // note: uses the same time as _fireFrameStarted
    275     }
    276 
    277     /**
    278     @brief
    279         Creates the Ogre Root object and sets up the ogre log.
    280     */
    281     void GSGraphics::setupOgre()
    282     {
    283         COUT(3) << "Setting up Ogre..." << std::endl;
    284 
    285         if (ogreConfigFile_ == "")
    286         {
    287             COUT(2) << "Warning: Ogre config file set to \"\". Defaulting to config.cfg" << std::endl;
    288             ModifyConfigValue(ogreConfigFile_, tset, "config.cfg");
    289         }
    290         if (ogreLogFile_ == "")
    291         {
    292             COUT(2) << "Warning: Ogre log file set to \"\". Defaulting to ogre.log" << std::endl;
    293             ModifyConfigValue(ogreLogFile_, tset, "ogre.log");
    294         }
    295 
    296         boost::filesystem::path ogreConfigFilepath(Core::getConfigPath() / this->ogreConfigFile_);
    297         boost::filesystem::path ogreLogFilepath(Core::getLogPath() / this->ogreLogFile_);
    298 
    299         // create a new logManager
    300         // Ogre::Root will detect that we've already created a Log
    301         ogreLogger_ = new Ogre::LogManager();
    302         COUT(4) << "Ogre LogManager created" << std::endl;
    303 
    304         // create our own log that we can listen to
    305         Ogre::Log *myLog;
    306         myLog = ogreLogger_->createLog(ogreLogFilepath.string(), true, false, false);
    307         COUT(4) << "Ogre Log created" << std::endl;
    308 
    309         myLog->setLogDetail(Ogre::LL_BOREME);
    310         myLog->addListener(this);
    311 
    312         COUT(4) << "Creating Ogre Root..." << std::endl;
    313 
    314         // check for config file existence because Ogre displays (caught) exceptions if not
    315         if (!boost::filesystem::exists(ogreConfigFilepath))
    316         {
    317             // create a zero sized file
    318             std::ofstream creator;
    319             creator.open(ogreConfigFilepath.string().c_str());
    320             creator.close();
    321         }
    322 
    323         // Leave plugins file empty. We're going to do that part manually later
    324         ogreRoot_ = new Ogre::Root("", ogreConfigFilepath.string(), ogreLogFilepath.string());
    325 
    326         COUT(3) << "Ogre set up done." << std::endl;
    327     }
    328 
    329     void GSGraphics::loadOgrePlugins()
    330     {
    331         // just to make sure the next statement doesn't segfault
    332         if (ogrePluginsFolder_ == "")
    333             ogrePluginsFolder_ = ".";
    334 
    335         boost::filesystem::path folder(ogrePluginsFolder_);
    336         // Do some SubString magic to get the comma separated list of plugins
    337         SubString plugins(ogrePlugins_, ",", " ", false, 92, false, 34, false, 40, 41, false, '\0');
    338         // Use backslash paths on Windows! file_string() already does that though.
    339         for (unsigned int i = 0; i < plugins.size(); ++i)
    340             ogreRoot_->loadPlugin((folder / plugins[i]).file_string());
    341     }
    342 
    343     void GSGraphics::declareResources()
    344     {
    345         CCOUT(4) << "Declaring Resources" << std::endl;
    346         //TODO: Specify layout of data file and maybe use xml-loader
    347         //TODO: Work with ressource groups (should be generated by a special loader)
    348 
    349         if (resourceFile_ == "")
    350         {
    351             COUT(2) << "Warning: Ogre resource file set to \"\". Defaulting to resources.cfg" << std::endl;
    352             ModifyConfigValue(resourceFile_, tset, "resources.cfg");
    353         }
    354 
    355         // Load resource paths from data file using configfile ressource type
    356         Ogre::ConfigFile cf;
    357         try
    358         {
    359             cf.load((Core::getMediaPath() / resourceFile_).string());
    360         }
    361         catch (...)
    362         {
    363             //COUT(1) << ex.getFullDescription() << std::endl;
    364             COUT(0) << "Have you forgotten to set the data path in orxnox.ini?" << std::endl;
    365             throw;
    366         }
    367 
    368         // Go through all sections & settings in the file
    369         Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
    370 
    371         std::string secName, typeName, archName;
    372         while (seci.hasMoreElements())
    373         {
    374             try
    375             {
    376                 secName = seci.peekNextKey();
    377                 Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
    378                 Ogre::ConfigFile::SettingsMultiMap::iterator i;
    379                 for (i = settings->begin(); i != settings->end(); ++i)
    380                 {
    381                     typeName = i->first; // for instance "FileSystem" or "Zip"
    382                     archName = i->second; // name (and location) of archive
    383 
    384                     Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
    385                         (Core::getMediaPath() / archName).string(), typeName, secName);
    386                 }
    387             }
    388             catch (Ogre::Exception& ex)
    389             {
    390                 COUT(1) << ex.getFullDescription() << std::endl;
    391             }
    392         }
    393     }
    394 
    395     void GSGraphics::loadRenderer()
    396     {
    397         CCOUT(4) << "Configuring Renderer" << std::endl;
    398 
    399         if (!ogreRoot_->restoreConfig())
    400             if (!ogreRoot_->showConfigDialog())
    401                 ThrowException(InitialisationFailed, "Could not show Ogre configuration dialogue.");
    402 
    403         CCOUT(4) << "Creating render window" << std::endl;
    404 
    405         this->renderWindow_ = ogreRoot_->initialise(true, "Orxonox");
    406 
    407         Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, this);
    408 
    409         Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(0);
    410 
    411         // create a full screen default viewport
    412         this->viewport_ = this->renderWindow_->addViewport(0, 0);
    413 
    414         if (this->graphicsEngine_)
    415             this->graphicsEngine_->setViewport(this->viewport_);
    416     }
    417 
    418     void GSGraphics::initialiseResources()
    419     {
    420         CCOUT(4) << "Initialising resources" << std::endl;
    421         //TODO: Do NOT load all the groups, why are we doing that? And do we really do that? initialise != load...
    422         //try
    423         //{
    424             Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
    425             /*Ogre::StringVector str = Ogre::ResourceGroupManager::getSingleton().getResourceGroups();
    426             for (unsigned int i = 0; i < str.size(); i++)
    427             {
    428             Ogre::ResourceGroupManager::getSingleton().loadResourceGroup(str[i]);
    429             }*/
    430         //}
    431         //catch (...)
    432         //{
    433         //    CCOUT(2) << "Error: There was a serious error when initialising the resources." << std::endl;
    434         //    throw;
    435         //}
    436     }
    437 
    438     /**
    439     @brief
    440         Method called by the LogListener interface from Ogre.
    441         We use it to capture Ogre log messages and handle it ourselves.
    442     @param message
    443         The message to be logged
    444     @param lml
    445         The message level the log is using
    446     @param maskDebug
    447         If we are printing to the console or not
    448     @param logName
    449         The name of this log (so you can have several listeners
    450         for different logs, and identify them)
    451     */
    452     void GSGraphics::messageLogged(const std::string& message,
    453         Ogre::LogMessageLevel lml, bool maskDebug, const std::string& logName)
    454     {
    455         int orxonoxLevel;
    456         switch (lml)
    457         {
    458         case Ogre::LML_TRIVIAL:
    459             orxonoxLevel = this->ogreLogLevelTrivial_;
    460             break;
    461         case Ogre::LML_NORMAL:
    462             orxonoxLevel = this->ogreLogLevelNormal_;
    463             break;
    464         case Ogre::LML_CRITICAL:
    465             orxonoxLevel = this->ogreLogLevelCritical_;
    466             break;
    467         default:
    468             orxonoxLevel = 0;
    469         }
    470         OutputHandler::getOutStream().setOutputLevel(orxonoxLevel)
    471             << "Ogre: " << message << std::endl;
    472     }
    473 
    474     /**
    475     @brief
    476         Window has moved.
    477     @param rw
    478         The render window it occured in
    479     */
    480     void GSGraphics::windowMoved(Ogre::RenderWindow *rw)
    481     {
    482         for (ObjectList<orxonox::WindowEventListener>::iterator it = ObjectList<orxonox::WindowEventListener>::begin(); it; ++it)
    483             it->windowMoved();
     148        this->graphicsManager_->update(time);
    484149    }
    485150
     
    490155        The render window it occured in
    491156    @note
    492         GraphicsEngine has a render window stored itself. This is the same
     157        GraphicsManager has a render window stored itself. This is the same
    493158        as rw. But we have to be careful when using multiple render windows!
    494159    */
    495     void GSGraphics::windowResized(Ogre::RenderWindow *rw)
     160    void GSGraphics::windowResized(unsigned int newWidth, unsigned int newHeight)
    496161    {
    497         for (ObjectList<orxonox::WindowEventListener>::iterator it = ObjectList<orxonox::WindowEventListener>::begin(); it; ++it)
    498             it->windowResized(this->renderWindow_->getWidth(), this->renderWindow_->getHeight());
    499 
    500162        // OIS needs this under linux even if we only use relative input measurement.
    501163        if (this->inputManager_)
    502             this->inputManager_->setWindowExtents(renderWindow_->getWidth(), renderWindow_->getHeight());
     164            this->inputManager_->setWindowExtents(newWidth, newHeight);
    503165    }
    504166
     
    509171        The render window it occured in
    510172    */
    511     void GSGraphics::windowFocusChange(Ogre::RenderWindow *rw)
     173    void GSGraphics::windowFocusChanged()
    512174    {
    513         for (ObjectList<orxonox::WindowEventListener>::iterator it = ObjectList<orxonox::WindowEventListener>::begin(); it; ++it)
    514             it->windowFocusChanged();
    515 
    516175        // instruct InputManager to clear the buffers (core library so we cannot use the interface)
    517176        if (this->inputManager_)
     
    519178    }
    520179
    521     /**
    522     @brief
    523         Window was closed.
    524     @param rw
    525         The render window it occured in
    526     */
    527     void GSGraphics::windowClosed(Ogre::RenderWindow *rw)
    528     {
    529         this->requestState("root");
    530     }
    531 
    532     void GSGraphics::printScreen()
    533     {
    534         if (this->renderWindow_)
    535         {
    536             this->renderWindow_->writeContentsToTimestampedFile("shot_", ".jpg");
    537         }
    538     }
    539180}
  • code/branches/gui/src/orxonox/gamestates/GSGraphics.h

    r2799 r2801  
    3131
    3232#include "OrxonoxPrereqs.h"
    33 #define NOMINMAX // required to stop windows.h screwing up std::min definition
    34 #include <OgreWindowEventUtilities.h>
    35 #include <OgreLog.h>
    3633#include "core/GameState.h"
    3734#include "core/OrxonoxClass.h"
     35#include "tools/WindowEventListener.h"
    3836#include "GSRoot.h"
    3937
    4038namespace orxonox
    4139{
    42     class _OrxonoxExport GSGraphics : public GameState<GSRoot>, public OrxonoxClass,
    43                                       public Ogre::WindowEventListener, public Ogre::LogListener
     40    class _OrxonoxExport GSGraphics : public GameState<GSRoot>, public WindowEventListener
    4441    {
    4542        friend class ClassIdentifier<GSGraphics>;
     
    4845        GSGraphics();
    4946        ~GSGraphics();
    50 
    51         Ogre::Root*     getOgreRoot()   { return this->ogreRoot_  ; }
    52         Ogre::Viewport* getViewport()   { return this->viewport_  ; }
    53         GUIManager*     getGUIManager() { return this->guiManager_; }
    5447
    5548    private: // functions
     
    6053        void setConfigValues();
    6154
    62         void setupOgre();
    63         void loadOgrePlugins();
    64         void declareResources();
    65         void loadRenderer();
    66         void initialiseResources();
     55        // Window events from WindowEventListener
     56        void windowResized(unsigned int newWidth, unsigned int newHeight);
     57        void windowFocusChanged();
    6758
    68         // console commands
    69         void printScreen();
    70 
    71         // event from Ogre::LogListener
    72         void messageLogged(const std::string& message, Ogre::LogMessageLevel lml,
    73             bool maskDebug, const std::string& logName);
    74 
    75         // window events from Ogre::WindowEventListener
    76         void windowMoved       (Ogre::RenderWindow* rw);
    77         void windowResized     (Ogre::RenderWindow* rw);
    78         void windowFocusChange (Ogre::RenderWindow* rw);
    79         void windowClosed      (Ogre::RenderWindow* rw);
    80 
    81         void requestWindowEventListenerUpdate() { this->bWindowEventListenerUpdateRequired_ = true; }
    82 
    83     private: // variables
    84         Ogre::RenderWindow*   renderWindow_;          //!< the current render window
    85         Ogre::Viewport*       viewport_;              //!< default full size viewport
    86         bool bWindowEventListenerUpdateRequired_;     //!< True if a new WindowEventListener was created but not yet updated.
    87 
     59    private:
    8860        // managed singletons
    8961        InputManager*         inputManager_;
    9062        InGameConsole*        console_;
    9163        GUIManager*           guiManager_;
    92         Ogre::Root*           ogreRoot_;                  //!< Ogre's root
    93         Ogre::LogManager*     ogreLogger_;
    94         GraphicsEngine*       graphicsEngine_;   //!< Interface to Ogre
     64        GraphicsManager*      graphicsManager_;       //!< Interface to Ogre
    9565
    9666        KeyBinder*            masterKeyBinder_;
    9767        XMLFile*              debugOverlay_;
    98 
    99         // config values
    100         std::string           resourceFile_;             //!< resources file name
    101         std::string           ogreConfigFile_;           //!< ogre config file name
    102         std::string           ogrePluginsFolder_;        //!< Folder where the Ogre plugins are located
    103         std::string           ogrePlugins_;              //!< Comma separated list of all plugins to load
    104         std::string           ogreLogFile_;              //!< log file name for Ogre log messages
    105         int                   ogreLogLevelTrivial_;      //!< Corresponding Orxonx debug level for LL_TRIVIAL
    106         int                   ogreLogLevelNormal_;       //!< Corresponding Orxonx debug level for LL_NORMAL
    107         int                   ogreLogLevelCritical_;     //!< Corresponding Orxonx debug level for LL_CRITICAL
    108 
    109         // console commands
    110         ConsoleCommand*       ccPrintScreen_;
    11168    };
    11269}
  • code/branches/gui/src/orxonox/gamestates/GSLevel.cc

    r2759 r2801  
    4444#include "objects/Radar.h"
    4545#include "CameraManager.h"
     46#include "GraphicsManager.h"
    4647#include "LevelManager.h"
    4748#include "PlayerManager.h"
     
    7778    }
    7879
    79     void GSLevel::enter(Ogre::Viewport* viewport)
     80    void GSLevel::enter()
    8081    {
    8182        if (Core::showsGraphics())
     
    8788
    8889            // create the global CameraManager
    89             assert(viewport);
    90             this->cameraManager_ = new CameraManager(viewport);
     90            this->cameraManager_ = new CameraManager(GraphicsManager::getInstance().getViewport());
    9191
    9292            // Start the Radar
  • code/branches/gui/src/orxonox/gamestates/GSLevel.h

    r2790 r2801  
    3131
    3232#include "OrxonoxPrereqs.h"
    33 #include <OgrePrerequisites.h>
    3433#include "core/OrxonoxClass.h"
    3534
     
    4746
    4847    protected:
    49         void enter(Ogre::Viewport* viewport);
     48        void enter();
    5049        void leave();
    5150        void ticked(const Clock& time);
  • code/branches/gui/src/orxonox/gamestates/GSServer.cc

    r2800 r2801  
    5555        COUT(0) << "Loading scene in server mode" << std::endl;
    5656
    57         GSLevel::enter(this->getParent()->getViewport());
     57        GSLevel::enter();
    5858
    5959        server_->open();
  • code/branches/gui/src/orxonox/gamestates/GSStandalone.cc

    r2800 r2801  
    3535#include "core/ConsoleCommand.h"
    3636#include "gui/GUIManager.h"
     37#include "GraphicsManager.h"
    3738
    3839namespace orxonox
     
    6061        Core::setIsStandalone(true);
    6162
    62         GSLevel::enter(this->getParent()->getViewport());
     63        GSLevel::enter();
    6364
    64         guiManager_ = getParent()->getGUIManager();
     65        guiManager_ = GUIManager::getInstancePtr();
    6566        // not sure if necessary
    6667        // guiManager_->loadScene("IngameMenu");
     
    7879        if (guiShowing_s)
    7980        {
    80             guiManager_->showGUI("IngameMenu", this->getParent()->getViewport()->getCamera()->getSceneManager());
     81            Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
     82            guiManager_->showGUI("IngameMenu", viewport->getCamera()->getSceneManager());
    8183        }
    8284        else
Note: See TracChangeset for help on using the changeset viewer.