From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/BaseClasses/ManagerContext.cpp | 107 +++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Runtime/BaseClasses/ManagerContext.cpp (limited to 'Runtime/BaseClasses/ManagerContext.cpp') diff --git a/Runtime/BaseClasses/ManagerContext.cpp b/Runtime/BaseClasses/ManagerContext.cpp new file mode 100644 index 0000000..1824a84 --- /dev/null +++ b/Runtime/BaseClasses/ManagerContext.cpp @@ -0,0 +1,107 @@ +#include "UnityPrefix.h" +#include "ManagerContext.h" +#include "BaseObject.h" +#include "Configuration/UnityConfigure.h" + +ManagerContext::ManagerContext () +{ + for (int i=0;i allDerivedClasses; + Object::FindAllDerivedClasses(Object::StringToClassID("GameManager"), &allDerivedClasses); + if (allDerivedClasses.size() != kManagerCount) + { + ErrorString("Number of GameManager classes does not match number of game managers registered."); + } +#endif + +} + +static ManagerContext gContext; + +Object& GetManagerFromContext (int index) +{ +#if DEBUGMODE + + if( index >= ManagerContext::kManagerCount ) + FatalErrorString( "GetManagerFromContext: index for managers table is out of bounds" ); + + if( gContext.m_Managers[index] == NULL ) + { + char const* managerName = gContext.m_ManagerNames[ index ]; + FatalErrorString( Format("GetManagerFromContext: pointer to object of manager '%s' is NULL (table index %d)", managerName, index) ); + } +#endif + + return *gContext.m_Managers[index]; +} + +void ManagerContextInitializeClasses() +{ + gContext.InitializeClasses(); +} + +Object* GetManagerPtrFromContext (int index) +{ + return gContext.m_Managers[index]; +} + +void SetManagerPtrInContext(int index, Object* ptr) +{ + gContext.m_Managers[index] = ptr; +} + +const ManagerContext& GetManagerContext () +{ + return gContext; +} -- cgit v1.1-26-g67d0