1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
|