Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gui/src/orxonox/GraphicsManager.h @ 2801

Last change on this file since 2801 was 2801, checked in by rgrieder, 15 years ago

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).

  • Property svn:eol-style set to native
File size: 4.7 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Reto Grieder
24 *      Benjamin Knecht <beni_at_orxonox.net>, (C) 2007
25 *   Co-authors:
26 *      Felix Schulthess
27 *
28 */
29
30/**
31@file
32@brief
33    Declaration of GraphicsManager Singleton.
34 */
35
36#ifndef _GraphicsEngine_H__
37#define _GraphicsEngine_H__
38
39#include "OrxonoxPrereqs.h"
40
41#include <string>
42#include <cassert>
43#include <OgreLog.h>
44
45#include "core/OrxonoxClass.h"
46
47namespace orxonox
48{
49    /**
50    @brief
51        Graphics engine manager class
52    */
53    class _OrxonoxExport GraphicsManager : public OrxonoxClass, public Ogre::LogListener
54    {
55    public:
56        GraphicsManager();
57        ~GraphicsManager();
58
59        void setConfigValues();
60        void initialise();
61
62        void update(const Clock& time);
63
64        void detailLevelParticleChanged();
65        inline unsigned int getDetailLevelParticle() const
66            { return this->detailLevelParticle_; }
67
68        // <HACK>
69        float getAverageFramesPerSecond() const   { return this->avgFramesPerSecond_; }
70        float getAverageTickTime() const          { return this->avgTickTime_; }
71        void setAverageTickTime(float tickTime)   { this->avgTickTime_ = tickTime; }
72        void setAverageFramesPerSecond(float fps) { this->avgFramesPerSecond_ = fps; }
73        // </HACK>
74
75        inline void setViewport(Ogre::Viewport* viewport)
76            { this->viewport_ = viewport; }
77        inline Ogre::Viewport* getViewport() const
78            { return this->viewport_; }
79        inline Ogre::RenderWindow* getRenderWindow()
80            { return this->renderWindow_; }
81
82        static GraphicsManager& getInstance() { assert(singletonRef_s); return *singletonRef_s; }
83
84
85    private:
86        GraphicsManager(GraphicsManager&); // don't mess with singletons
87
88        // OGRE initialisation
89        void setupOgre();
90        void loadOgrePlugins();
91        void declareResources();
92        void loadRenderer();
93        void initialiseResources();
94
95        // event from Ogre::LogListener
96        void messageLogged(const std::string& message, Ogre::LogMessageLevel lml,
97            bool maskDebug, const std::string& logName);
98
99        // console commands
100        void printScreen();
101
102    private:
103        bool                loaded_;
104
105        Ogre::Root*         ogreRoot_;                 //!< Ogre's root
106        Ogre::LogManager*   ogreLogger_;
107        Ogre::RenderWindow* renderWindow_;             //!< the one and only render window
108        Ogre::Viewport*     viewport_;                 //!< default full size viewport
109        OgreWindowEventListener* ogreWindowEventListener_;
110
111        // stats (Hack)
112        float               avgTickTime_;              //!< time in ms to tick() one frame
113        float               avgFramesPerSecond_;       //!< number of frames processed in one second
114
115        // config values
116        unsigned int        detailLevelParticle_;      //!< Detail level of particle effects (0: off, 1: low, 2: normal, 3: high)
117        std::string         resourceFile_;             //!< resources file name
118        std::string         ogreConfigFile_;           //!< ogre config file name
119        std::string         ogrePluginsFolder_;        //!< Folder where the Ogre plugins are located
120        std::string         ogrePlugins_;              //!< Comma separated list of all plugins to load
121        std::string         ogreLogFile_;              //!< log file name for Ogre log messages
122        int                 ogreLogLevelTrivial_;      //!< Corresponding Orxonx debug level for LL_TRIVIAL
123        int                 ogreLogLevelNormal_;       //!< Corresponding Orxonx debug level for LL_NORMAL
124        int                 ogreLogLevelCritical_;     //!< Corresponding Orxonx debug level for LL_CRITICAL
125
126        // console commands
127        ConsoleCommand*     ccPrintScreen_;
128
129        static GraphicsManager* singletonRef_s;        //!< Pointer to the Singleton
130    };
131}
132
133#endif /* _GraphicsEngine_H__ */
Note: See TracBrowser for help on using the repository browser.