diff options
Diffstat (limited to 'Runtime/BaseClasses/ManagerContext.h')
-rw-r--r-- | Runtime/BaseClasses/ManagerContext.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Runtime/BaseClasses/ManagerContext.h b/Runtime/BaseClasses/ManagerContext.h new file mode 100644 index 0000000..af4de7b --- /dev/null +++ b/Runtime/BaseClasses/ManagerContext.h @@ -0,0 +1,61 @@ +#ifndef MANAGERCONTEXT_H +#define MANAGERCONTEXT_H + +class Object; +struct ManagerContext; + +EXPORT_COREMODULE Object& GetManagerFromContext (int index); +EXPORT_COREMODULE Object* GetManagerPtrFromContext (int index); +void SetManagerPtrInContext(int index, Object* ptr); +void ManagerContextInitializeClasses(); + +#define GET_MANAGER(x) x& Get##x () { return reinterpret_cast<x&> (GetManagerFromContext (ManagerContext::k##x)); } +#define GET_MANAGER_PTR(x) x* Get##x##Ptr () { return reinterpret_cast<x*> (GetManagerPtrFromContext (ManagerContext::k##x)); } + +const ManagerContext& GetManagerContext (); + +struct ManagerContext +{ + enum Managers + { + // Global managers + kPlayerSettings = 0, + kInputManager, + kTagManager, + kAudioManager, + kScriptMapper, + kMonoManager, + kGraphicsSettings, + kTimeManager, + kDelayedCallManager, + kPhysicsManager, + kBuildSettings, + kQualitySettings, + kResourceManager, + kNetworkManager, + kMasterServerInterface, + kNavMeshLayers, + #if ENABLE_2D_PHYSICS + kPhysics2DSettings, + #endif + kGlobalManagerCount, + + // Level managers + kSceneSettings = kGlobalManagerCount, + kRenderSettings, + kHaloManager, + kLightmapSettings, + kNavMeshSettings, + kManagerCount + }; + + ManagerContext (); + Object* m_Managers[kManagerCount]; + int m_ManagerClassIDs[kManagerCount]; + #if DEBUGMODE + const char* m_ManagerNames[kManagerCount]; + #endif + void InitializeClasses (); +}; + +#endif |