summaryrefslogtreecommitdiff
path: root/Runtime/BaseClasses/ManagerContext.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/BaseClasses/ManagerContext.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/BaseClasses/ManagerContext.h')
-rw-r--r--Runtime/BaseClasses/ManagerContext.h61
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