Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gui/src/orxonox/GraphicsEngine.cc @ 1967

Last change on this file since 1967 was 1686, checked in by rgrieder, 16 years ago

Moved most of the GraphicsEngine code to GSRoot and GSGraphics.
GraphicsEngine is now more of a legacy object to ensure functionality until there is a new solution.

  • Property svn:eol-style set to native
File size: 3.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    Implementation of an partial interface to Ogre.
34*/
35
36#include "OrxonoxStableHeaders.h"
37#include "GraphicsEngine.h"
38
39#include <OgreRenderWindow.h>
40
41#include "core/CoreIncludes.h"
42#include "core/ConfigValueIncludes.h"
43#include "core/Debug.h"
44
45#include "tools/ParticleInterface.h"
46
47namespace orxonox
48{
49    //SetConsoleCommand(GraphicsEngine, printScreen, true).setKeybindMode(KeybindMode::OnPress);
50
51    GraphicsEngine* GraphicsEngine::singletonRef_s = 0;
52
53    /**
54    @brief
55        Returns the singleton instance.
56    @return
57        The only instance of GraphicsEngine.
58    */
59    /*static*/ GraphicsEngine& GraphicsEngine::getInstance()
60    {
61        assert(singletonRef_s);
62        return *singletonRef_s;
63    }
64
65    /**
66    @brief
67        Non-initialising constructor.
68    */
69    GraphicsEngine::GraphicsEngine()
70        : root_(0)
71        , renderWindow_(0)
72        , levelSceneManager_(0)
73        , viewport_(0)
74    {
75        RegisterObject(GraphicsEngine);
76
77        assert(singletonRef_s == 0);
78        singletonRef_s = this;
79
80        this->detailLevelParticle_ = 0;
81
82        this->setConfigValues();
83        CCOUT(4) << "Constructed" << std::endl;
84    }
85
86    void GraphicsEngine::setConfigValues()
87    {
88        unsigned int old = this->detailLevelParticle_;
89        SetConfigValue(detailLevelParticle_, 2).description("O: off, 1: low, 2: normal, 3: high");
90
91        if (this->detailLevelParticle_ != old)
92            for (Iterator<ParticleInterface> it = ObjectList<ParticleInterface>::begin(); it; ++it)
93                it->detailLevelChanged(this->detailLevelParticle_);
94    }
95
96    /**
97    @brief
98        Destroys all the Ogre related objects
99    */
100    GraphicsEngine::~GraphicsEngine()
101    {
102        singletonRef_s = 0;
103    }
104
105    /**
106    @brief
107        Get the width of the render window
108    @return
109        The width of the render window
110    */
111    int GraphicsEngine::getWindowWidth() const
112    {
113        if (this->renderWindow_)
114            return this->renderWindow_->getWidth();
115        else
116            return 0;
117    }
118
119    /**
120    @brief
121        Get the height of the render window
122    @return
123        The height of the render window
124    */
125    int GraphicsEngine::getWindowHeight() const
126    {
127        if (this->renderWindow_)
128            return this->renderWindow_->getHeight();
129        else
130            return 0;
131    }
132
133    /**
134    @brief
135        Returns the window aspect ratio height/width.
136    @return
137        The window aspect ratio
138    */
139    float GraphicsEngine::getWindowAspectRatio() const
140    {
141        if (this->renderWindow_)
142            return (float)this->renderWindow_->getHeight() / (float)this->renderWindow_->getWidth();
143        else
144            return 1.0f;
145    }
146}
Note: See TracBrowser for help on using the repository browser.