25 #ifndef __I6ENGINE_CORE_SUBSYSTEMCONTROLLER_H__
26 #define __I6ENGINE_CORE_SUBSYSTEMCONTROLLER_H__
36 #include "boost/thread.hpp"
65 class EngineControllerInterface;
66 class EngineCoreController;
67 class ModuleController;
109 void JoinAllSubsystems();
122 void QueueSubSystemStart(
ModuleController * objSubsystem,
const uint32_t lngFrameTime);
130 void QueueSubSystemStart(
ModuleController * objSubsystem,
const std::set<Subsystem> & waitingFor);
141 bool isShutdownComplete();
149 bool _bolGlobalShutDown;
150 bool _bolWaitForInit;
151 std::vector<boost::thread *> _objThreadGrp;
152 std::vector<QueuedModule> _objQueuedSubSystems;
164 void startSubSystemTicking(
ModuleController * objSubSystem,
const uint32_t lngFrameTime);
169 void startSubSystemWaiting(
ModuleController * objSubSystem,
const std::set<Subsystem> & waitingFor);
size_t GetSubSystemAmount() const
This method returns the amount of subsystems.
bool getGlobalShutDown() const
This method will get the flag which indicates if the subsystems have to be shut down.
Part of the Subsystem that keeps the whole module running.
ModuleController * module
this class is used as an abstraction layer
void registerController(EngineCoreController *ecc)
registers an EngineCoreController for the SubSystemController
std::set< Subsystem > waitingFor
void SubSystemInitialized()
This methods tells the SubSystemController that the synchronously started SubSystem has been complete...
This class is used as an abstraction layer.