Elaztek Developer Hub
Blamite Game Engine - blam!  00357.06.18.22.0809.blamite
The core library for the Blamite Game Engine.
GraphicsSystem.h
Go to the documentation of this file.
1 
2 #ifndef _Demo_GraphicsSystem_H_
3 #define _Demo_GraphicsSystem_H_
4 
5 #include "BaseSystem.h"
6 #include "GameEntityManager.h"
8 #include "OGRE/OgrePrerequisites.h"
9 #include "OGRE/OgreColourValue.h"
10 #include "OGRE/Overlay/OgreOverlayPrerequisites.h"
11 
12 #include "OGRE/Threading/OgreUniformScalableTask.h"
13 #include "SdlEmulationLayer.h"
14 #include "OGRE/Overlay/OgreOverlaySystem.h"
15 
17 
18 #if OGRE_USE_SDL2
19  #include <SDL2/SDL.h>
20 #endif
21 
22 namespace Demo
23 {
24  class SdlInputHandler;
25 
26  class GraphicsSystem : public BaseSystem, public Ogre::UniformScalableTask
27  {
28  private:
30 
31  protected:
33 
34  #if OGRE_USE_SDL2
35  SDL_Window *mSdlWindow;
36  #endif
37 
38  Ogre::Root *mRoot;
39  Ogre::Window *mRenderWindow;
40  Ogre::SceneManager *mSceneManager;
41  Ogre::Camera *mCamera;
42  Ogre::CompositorWorkspace *mWorkspace;
46 
47  Ogre::v1::OverlaySystem *mOverlaySystem;
48 
50 
54  Ogre::uint32 mCurrentTransformIdx;
55  GameEntityVec mGameEntities[Ogre::NUM_SCENE_MEMORY_MANAGER_TYPES];
58 
59  bool mQuit;
63 
64  Ogre::ColourValue mBackgroundColour;
65 
66  bool isWriteAccessFolder( const Ogre::String &folderPath, const Ogre::String &fileToSave );
67 
69  virtual void processIncomingMessage( Mq::MessageId messageId, const void *data );
70 
71  static void addResourceLocation( const Ogre::String &archName, const Ogre::String &typeName,
72  const Ogre::String &secName );
73  void loadTextureCache(void);
74  void saveTextureCache(void);
75  void loadHlmsDiskCache(void);
76  void saveHlmsDiskCache(void);
77  virtual void setupResources(void);
78  virtual void registerHlms(void);
81  virtual void loadResources(void);
82  virtual void chooseSceneManager(void);
83  virtual void createCamera(void);
87  virtual Ogre::CompositorWorkspace* setupCompositor(void);
88 
90  virtual void initMiscParamsListener( Ogre::NameValuePairList &params );
91 
93  virtual void createResourceListener(void) {}
94 
95  void gameEntityAdded( const GameEntityManager::CreatedGameEntity *createdGameEntity );
96  void gameEntityRemoved( GameEntity *toRemove );
97  public:
98 
99 
101 
102  GraphicsSystem( GameState *gameState = nullptr, Ogre::String resourcePath = Ogre::String(""), Ogre::ColourValue backgroundColour = Ogre::ColourValue( 0.2f, 0.4f, 0.6f ) );
103  virtual ~GraphicsSystem();
104 
105  void _notifyLogicSystem( BaseSystem *logicSystem ) { mLogicSystem = logicSystem; }
106 
107  void initialize( const Ogre::String &windowTitle );
108  void deinitialize(void);
109 
110 #if OGRE_USE_SDL2
111  void handleWindowEvent(const SDL_Event& evt);
112  SdlInputHandler* mInputHandler;
113 #endif
114 
115  void update( float timeSinceLast );
116 
125  void updateGameEntities( const GameEntityVec &gameEntities, float weight );
126 
128  virtual void execute( size_t threadId, size_t numThreads );
129 
132  const GameEntityVec& getGameEntities( Ogre::SceneMemoryMgrTypes type ) const
133  { return mGameEntities[type]; }
134 
135  #if OGRE_USE_SDL2
136  SdlInputHandler* getInputHandler(void) { return mInputHandler; }
137  #endif
138 
139  void setQuit(void) { mQuit = true; }
140  bool getQuit(void) const { return mQuit; }
141 
143 
144  Ogre::Root* getRoot(void) const { return mRoot; }
145  Ogre::Window* getRenderWindow(void) const { return mRenderWindow; }
146  Ogre::SceneManager* getSceneManager(void) const { return mSceneManager; }
147  Ogre::Camera* getCamera(void) const { return mCamera; }
148  Ogre::CompositorWorkspace* getCompositorWorkspace(void) const { return mWorkspace; }
149  Ogre::v1::OverlaySystem* getOverlaySystem(void) const { return mOverlaySystem; }
150 
151  void setAlwaysAskForConfig( bool alwaysAskForConfig );
152  bool getAlwaysAskForConfig( void ) const { return mAlwaysAskForConfig; }
153 
154  const Ogre::String& getPluginsFolder(void) const { return mPluginsFolder; }
155  const Ogre::String& getWriteAccessFolder(void) const { return mWriteAccessFolder; }
156  const Ogre::String& getResourcePath(void) const { return mResourcePath; }
157  const char *getMediaReadArchiveType( void ) const;
158 
159  virtual void stopCompositor(void);
160  virtual void restartCompositor(void);
161  };
162 }
163 
164 #endif
Demo::GraphicsSystem::mGameEntities
GameEntityVec mGameEntities[Ogre::NUM_SCENE_MEMORY_MANAGER_TYPES]
Definition: GraphicsSystem.h:55
Demo::GraphicsSystem::mUseMicrocodeCache
bool mUseMicrocodeCache
Definition: GraphicsSystem.h:62
Demo::GraphicsSystem::getRenderWindow
Ogre::Window * getRenderWindow(void) const
Definition: GraphicsSystem.h:145
Demo::GraphicsSystem::mPluginsFolder
Ogre::String mPluginsFolder
Definition: GraphicsSystem.h:43
Demo::GraphicsSystem::loadResources
virtual void loadResources(void)
Optional override method where you can perform resource group loading Must at least do ResourceGroupM...
Definition: GraphicsSystem.cpp:801
Demo::GraphicsSystem::addResourceLocation
static void addResourceLocation(const Ogre::String &archName, const Ogre::String &typeName, const Ogre::String &secName)
Definition: GraphicsSystem.cpp:482
Demo::GraphicsSystem::ogre_pass_registry
BlamCompositorPassRegistry * ogre_pass_registry
Definition: GraphicsSystem.h:100
Demo::GraphicsSystem::getResourcePath
const Ogre::String & getResourcePath(void) const
Definition: GraphicsSystem.h:156
Demo::GraphicsSystem::mThreadWeight
float mThreadWeight
Definition: GraphicsSystem.h:57
Demo::GraphicsSystem::getGameEntities
const GameEntityVec & getGameEntities(Ogre::SceneMemoryMgrTypes type) const
Returns the GameEntities that are ready to be rendered.
Definition: GraphicsSystem.h:132
Demo::GraphicsSystem::mCamera
Ogre::Camera * mCamera
Definition: GraphicsSystem.h:41
Demo::GraphicsSystem::gameEntityRemoved
void gameEntityRemoved(GameEntity *toRemove)
Definition: GraphicsSystem.cpp:981
Demo::GraphicsSystem::getWriteAccessFolder
const Ogre::String & getWriteAccessFolder(void) const
Definition: GraphicsSystem.h:155
Demo::GraphicsSystem::mCurrentTransformIdx
Ogre::uint32 mCurrentTransformIdx
Definition: GraphicsSystem.h:54
Demo::GraphicsSystem::mWriteAccessFolder
Ogre::String mWriteAccessFolder
Definition: GraphicsSystem.h:44
Demo::GraphicsSystem::mOverlaySystem
Ogre::v1::OverlaySystem * mOverlaySystem
Definition: GraphicsSystem.h:47
Demo::GraphicsSystem::initMiscParamsListener
virtual void initMiscParamsListener(Ogre::NameValuePairList &params)
Called right before initializing Ogre's first window, so the params can be customized.
Definition: GraphicsSystem.cpp:881
Demo::GraphicsSystem::getCompositorWorkspace
Ogre::CompositorWorkspace * getCompositorWorkspace(void) const
Definition: GraphicsSystem.h:148
Demo::GraphicsSystem::getAccumTimeSinceLastLogicFrame
float getAccumTimeSinceLastLogicFrame(void) const
Definition: GraphicsSystem.h:142
Demo
Definition: BaseSystem.cpp:5
Demo::GraphicsSystem::loadTextureCache
void loadTextureCache(void)
Definition: GraphicsSystem.cpp:499
Demo::GraphicsSystem::getAlwaysAskForConfig
bool getAlwaysAskForConfig(void) const
Definition: GraphicsSystem.h:152
Demo::GraphicsSystem::isWriteAccessFolder
bool isWriteAccessFolder(const Ogre::String &folderPath, const Ogre::String &fileToSave)
Definition: GraphicsSystem.cpp:109
SdlEmulationLayer.h
Demo::GraphicsSystem::execute
virtual void execute(size_t threadId, size_t numThreads)
Overload Ogre::UniformScalableTask.
Definition: GraphicsSystem.cpp:1013
Demo::GraphicsSystem::getSceneManager
Ogre::SceneManager * getSceneManager(void) const
Definition: GraphicsSystem.h:146
GameEntityManager.h
Demo::GraphicsSystem::mRenderWindow
Ogre::Window * mRenderWindow
Definition: GraphicsSystem.h:39
Demo::GraphicsSystem::stopCompositor
virtual void stopCompositor(void)
Definition: GraphicsSystem.cpp:899
Blam::Globals::String
@ String
Represents a std::string.
Definition: globals.h:48
Demo::GraphicsSystem::mStaticPluginLoader
StaticPluginLoader mStaticPluginLoader
Definition: GraphicsSystem.h:49
Demo::GameState
Definition: GameState.h:9
Demo::GraphicsSystem::saveHlmsDiskCache
void saveHlmsDiskCache(void)
Definition: GraphicsSystem.cpp:615
Demo::GraphicsSystem::setupResources
virtual void setupResources(void)
Definition: GraphicsSystem.cpp:657
Demo::GraphicsSystem::getMediaReadArchiveType
const char * getMediaReadArchiveType(void) const
Definition: GraphicsSystem.cpp:890
Demo::BaseSystem
Definition: BaseSystem.h:11
Demo::GraphicsSystem::setupCompositor
virtual Ogre::CompositorWorkspace * setupCompositor(void)
Virtual so that advanced samples such as Sample_Compositor can override this method to change the def...
Definition: GraphicsSystem.cpp:866
Demo::GraphicsSystem::mSceneManager
Ogre::SceneManager * mSceneManager
Definition: GraphicsSystem.h:40
Demo::GraphicsSystem::~GraphicsSystem
virtual ~GraphicsSystem()
Definition: GraphicsSystem.cpp:100
Demo::GraphicsSystem::getCamera
Ogre::Camera * getCamera(void) const
Definition: GraphicsSystem.h:147
Demo::GraphicsSystem::registerHlms
virtual void registerHlms(void)
Definition: GraphicsSystem.cpp:700
Demo::GraphicsSystem::getOverlaySystem
Ogre::v1::OverlaySystem * getOverlaySystem(void) const
Definition: GraphicsSystem.h:149
Demo::GraphicsSystem::GraphicsSystem
GraphicsSystem(GameState *gameState=nullptr, Ogre::String resourcePath=Ogre::String(""), Ogre::ColourValue backgroundColour=Ogre::ColourValue(0.2f, 0.4f, 0.6f))
Definition: GraphicsSystem.cpp:52
Demo::GraphicsSystem::saveTextureCache
void saveTextureCache(void)
Definition: GraphicsSystem.cpp:539
Demo::GraphicsSystem::getPluginsFolder
const Ogre::String & getPluginsFolder(void) const
Definition: GraphicsSystem.h:154
Demo::GraphicsSystem::_notifyLogicSystem
void _notifyLogicSystem(BaseSystem *logicSystem)
Definition: GraphicsSystem.h:105
Demo::GraphicsSystem::deinitialize
void deinitialize(void)
Definition: GraphicsSystem.cpp:347
Demo::GraphicsSystem::mResourcePath
Ogre::String mResourcePath
Definition: GraphicsSystem.h:45
Demo::GraphicsSystem::mAlwaysAskForConfig
bool mAlwaysAskForConfig
Definition: GraphicsSystem.h:60
Demo::GraphicsSystem::gameEntityAdded
void gameEntityAdded(const GameEntityManager::CreatedGameEntity *createdGameEntity)
Definition: GraphicsSystem.cpp:938
Demo::GraphicsSystem::mQuit
bool mQuit
Definition: GraphicsSystem.h:59
Demo::GraphicsSystem::setQuit
void setQuit(void)
Definition: GraphicsSystem.h:139
Demo::Mq::MessageId
MessageId
Definition: MqMessages.h:12
Demo::GraphicsSystem::updateGameEntities
void updateGameEntities(const GameEntityVec &gameEntities, float weight)
Updates the SceneNodes of all the game entities in the container, interpolating them according to wei...
Definition: GraphicsSystem.cpp:1002
StaticPluginLoader.h
Demo::GameEntity
Definition: GameEntity.h:35
Demo::GraphicsSystem::loadHlmsDiskCache
void loadHlmsDiskCache(void)
Definition: GraphicsSystem.cpp:557
Demo::GraphicsSystem::setAlwaysAskForConfig
void setAlwaysAskForConfig(bool alwaysAskForConfig)
Definition: GraphicsSystem.cpp:885
timeSinceLast
double timeSinceLast
Definition: ogre.cpp:30
BaseSystem.h
Demo::GraphicsSystem
Definition: GraphicsSystem.h:26
Demo::GraphicsSystem::processIncomingMessage
virtual void processIncomingMessage(Mq::MessageId messageId, const void *data)
Definition: GraphicsSystem.cpp:442
Demo::GraphicsSystem::mBackgroundColour
Ogre::ColourValue mBackgroundColour
Definition: GraphicsSystem.h:64
Demo::GraphicsSystem::mThreadGameEntityToUpdate
const GameEntityVec * mThreadGameEntityToUpdate
Definition: GraphicsSystem.h:56
Demo::GraphicsSystem::createResourceListener
virtual void createResourceListener(void)
Optional override method where you can create resource listeners (e.g. for loading screens)
Definition: GraphicsSystem.h:93
BlamCompositorPassRegistry
Definition: compositor.h:29
Demo::GraphicsSystem::update
void update(float timeSinceLast)
Definition: GraphicsSystem.cpp:381
Demo::GraphicsSystem::getQuit
bool getQuit(void) const
Definition: GraphicsSystem.h:140
Demo::GameEntityManager::CreatedGameEntity
Definition: GameEntityManager.h:16
Demo::GraphicsSystem::chooseSceneManager
virtual void chooseSceneManager(void)
Definition: GraphicsSystem.cpp:829
Demo::GameEntityVec
std::vector< GameEntity * > GameEntityVec
Definition: GameEntity.h:88
Demo::GraphicsSystem::restartCompositor
virtual void restartCompositor(void)
Definition: GraphicsSystem.cpp:909
Demo::StaticPluginLoader
Utility class to load plugins statically.
Definition: StaticPluginLoader.h:59
Demo::GraphicsSystem::mAccumTimeSinceLastLogicFrame
float mAccumTimeSinceLastLogicFrame
Tracks the amount of elapsed time since we last heard from the LogicSystem finishing a frame.
Definition: GraphicsSystem.h:53
Demo::BaseSystem::initialize
virtual void initialize(void)
Definition: BaseSystem.cpp:16
compositor.h
SDL_Event
Definition: SdlEmulationLayer.h:735
Demo::GraphicsSystem::mWorkspace
Ogre::CompositorWorkspace * mWorkspace
Definition: GraphicsSystem.h:42
Demo::GraphicsSystem::getRoot
Ogre::Root * getRoot(void) const
Definition: GraphicsSystem.h:144
Demo::GraphicsSystem::mRoot
Ogre::Root * mRoot
Definition: GraphicsSystem.h:38
Demo::GraphicsSystem::mUseHlmsDiskCache
bool mUseHlmsDiskCache
Definition: GraphicsSystem.h:61
Demo::GraphicsSystem::createCamera
virtual void createCamera(void)
Definition: GraphicsSystem.cpp:853
Demo::GraphicsSystem::mLogicSystem
BaseSystem * mLogicSystem
Definition: GraphicsSystem.h:32