Rigs of Rods 2023.09
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
AppContext.h
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5 Copyright 2013-2020 Petr Ohlidal
6
7 For more information, see http://www.rigsofrods.org/
8
9 Rigs of Rods is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3, as
11 published by the Free Software Foundation.
12
13 Rigs of Rods 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 Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20*/
21
26
27#pragma once
28
29#include "Application.h"
30#include "ForceFeedback.h"
31
32#include <Bites/OgreWindowEventUtilities.h>
33#include <Ogre.h>
34#include <OIS.h>
35
36namespace RoR {
37
40
43class AppContext: public OgreBites::WindowEventListener,
44 public OIS::MouseListener,
45 public OIS::KeyListener,
46 public OIS::JoyStickListener
47{
48public:
49 // Startup (in order)
50 void SetUpThreads();
51 bool SetUpProgramPaths();
52 void SetUpLogging();
53 bool SetUpResourcesDir();
54 bool SetUpRendering();
56 bool SetUpInput();
58
59 // Rendering
60 Ogre::RenderWindow* CreateCustomRenderWindow(std::string const& name, int width, int height);
61 void CaptureScreenshot();
62 void ActivateFullscreen(bool val);
63
64 // Getters
65 Ogre::Root* GetOgreRoot() { return m_ogre_root; }
66 Ogre::Viewport* GetViewport() { return m_viewport; }
67 Ogre::RenderWindow* GetRenderWindow() { return m_render_window; }
69 std::thread::id GetMainThreadID() { return m_mainthread_id; }
70
71private:
72 // OgreBites::WindowEventListener
73 virtual void windowResized(Ogre::RenderWindow* rw) override;
74 virtual void windowFocusChange(Ogre::RenderWindow* rw) override;
75
76 // OIS::MouseListener
77 virtual bool mouseMoved(const OIS::MouseEvent& arg) override;
78 virtual bool mousePressed(const OIS::MouseEvent& arg, OIS::MouseButtonID id) override;
79 virtual bool mouseReleased(const OIS::MouseEvent& arg, OIS::MouseButtonID id) override;
80
81 // OIS::KeyListener
82 virtual bool keyPressed(const OIS::KeyEvent& arg) override;
83 virtual bool keyReleased(const OIS::KeyEvent& arg) override;
84
85 // OIS::JoyStickListener
86 virtual bool buttonPressed(const OIS::JoyStickEvent& arg, int button) override;
87 virtual bool buttonReleased(const OIS::JoyStickEvent& arg, int button) override;
88 virtual bool axisMoved(const OIS::JoyStickEvent& arg, int axis) override;
89 virtual bool sliderMoved(const OIS::JoyStickEvent& arg, int) override;
90 virtual bool povMoved(const OIS::JoyStickEvent& arg, int) override;
91
92 // Rendering and window management
93 void SetRenderWindowIcon(Ogre::RenderWindow* rw);
94
95 // Variables
96
97 Ogre::Root* m_ogre_root = nullptr;
98 Ogre::RenderWindow* m_render_window = nullptr;
99 Ogre::Viewport* m_viewport = nullptr;
100 bool m_windowed_fix = false;
101
104
106
107 std::thread::id m_mainthread_id;
108};
109
111
112} // namespace RoR
Central state/object manager and communications hub.
Central setup and event handler for input/windowing/rendering.
Definition AppContext.h:47
Ogre::Root * GetOgreRoot()
Definition AppContext.h:65
RoR::ForceFeedback m_force_feedback
Definition AppContext.h:105
bool SetUpConfigSkeleton()
virtual bool buttonPressed(const OIS::JoyStickEvent &arg, int button) override
void SetUpObsoleteConfMarker()
Ogre::Viewport * GetViewport()
Definition AppContext.h:66
std::thread::id GetMainThreadID()
Definition AppContext.h:69
virtual bool mouseMoved(const OIS::MouseEvent &arg) override
Ogre::RenderWindow * CreateCustomRenderWindow(std::string const &name, int width, int height)
Ogre::RenderWindow * GetRenderWindow()
Definition AppContext.h:67
bool SetUpProgramPaths()
bool m_windowed_fix
Workaround OGRE glitch when switching from fullscreen.
Definition AppContext.h:100
virtual bool mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id) override
bool SetUpResourcesDir()
virtual bool sliderMoved(const OIS::JoyStickEvent &arg, int) override
Ogre::Viewport * m_viewport
Definition AppContext.h:99
RoR::ForceFeedback & GetForceFeedback()
Definition AppContext.h:68
virtual bool povMoved(const OIS::JoyStickEvent &arg, int) override
virtual bool buttonReleased(const OIS::JoyStickEvent &arg, int button) override
virtual bool axisMoved(const OIS::JoyStickEvent &arg, int axis) override
virtual bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id) override
int m_prev_screenshot_index
Definition AppContext.h:103
void SetRenderWindowIcon(Ogre::RenderWindow *rw)
virtual void windowFocusChange(Ogre::RenderWindow *rw) override
void CaptureScreenshot()
virtual bool keyPressed(const OIS::KeyEvent &arg) override
Ogre::RenderWindow * m_render_window
Definition AppContext.h:98
virtual bool keyReleased(const OIS::KeyEvent &arg) override
std::thread::id m_mainthread_id
Definition AppContext.h:107
Ogre::Root * m_ogre_root
Definition AppContext.h:97
std::time_t m_prev_screenshot_time
Definition AppContext.h:102
void ActivateFullscreen(bool val)
virtual void windowResized(Ogre::RenderWindow *rw) override