summaryrefslogtreecommitdiff
path: root/Runtime/Scripting/ScriptingManager.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/Scripting/ScriptingManager.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Scripting/ScriptingManager.h')
-rw-r--r--Runtime/Scripting/ScriptingManager.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Runtime/Scripting/ScriptingManager.h b/Runtime/Scripting/ScriptingManager.h
new file mode 100644
index 0000000..4c446f2
--- /dev/null
+++ b/Runtime/Scripting/ScriptingManager.h
@@ -0,0 +1,63 @@
+#ifndef _SCRIPTINGMANAGER_H_
+#define _SCRIPTINGMANAGER_H_
+
+#if ENABLE_SCRIPTING
+
+#include "Runtime/BaseClasses/GameManager.h"
+#include "Runtime/Mono/MonoScriptManager.h"
+#include "Runtime/Scripting/CommonScriptingClasses.h"
+#include "Runtime/Utilities/vector_map.h"
+#include "Runtime/Scripting/Backend/ScriptingMethodRegistry.h"
+#include "Runtime/Modules/ExportModules.h"
+
+class IScriptingTypeProvider;
+class ScriptingMethodRegistry;
+class ScriptingTypeRegistry;
+class IScriptingMethodFactory;
+
+extern const char* kEngineNameSpace;
+extern const char* kEditorNameSpace;
+extern ScriptingClassPtr gClassIDToClass;
+
+class EXPORT_COREMODULE ScriptingManager : public GlobalGameManager
+{
+public:
+ MonoScriptManager& GetMonoScriptManager() { return m_MonoScriptManager; }
+ ScriptingMethodRegistry& GetScriptingMethodRegistry() { return *m_ScriptingMethodRegistry; }
+ ScriptingTypeRegistry& GetScriptingTypeRegistry() { return *m_ScriptingTypeRegistry; }
+ const CommonScriptingClasses& GetCommonClasses () { return m_CommonScriptingClasses; }
+ ScriptingClassPtr ClassIDToScriptingClass (int classID);
+ int ClassIDForScriptingClass(ScriptingClassPtr klass);
+ virtual void RebuildClassIDToScriptingClass ();
+ ScriptingObjectPtr CreateInstance(ScriptingClassPtr klass);
+ virtual bool IsTrustedToken (const std::string& /*publicKeyToken*/){ return false; }
+
+ ~ScriptingManager();
+protected:
+ ScriptingManager (MemLabelId label, ObjectCreationMode mode, IScriptingTypeProvider* scriptingTypeProvider, IScriptingMethodFactory* scriptingMethodFactory);
+
+ MonoScriptManager m_MonoScriptManager;
+ CommonScriptingClasses m_CommonScriptingClasses;
+ typedef std::vector<ScriptingTypePtr> ClassIDToMonoClass;
+ ClassIDToMonoClass m_ClassIDToMonoClass;
+
+ typedef vector_map<ScriptingTypePtr, int> ScriptingClassMap;
+ ScriptingClassMap m_ScriptingClassToClassID;
+
+ ScriptingMethodRegistry* m_ScriptingMethodRegistry;
+ ScriptingTypeRegistry* m_ScriptingTypeRegistry;
+ IScriptingMethodFactory* m_ScriptingMethodFactory;
+};
+
+EXPORT_COREMODULE ScriptingManager& GetScriptingManager ();
+
+inline MonoScriptManager& GetMonoScriptManager() { return GetScriptingManager().GetMonoScriptManager(); }
+
+inline ScriptingMethodRegistry& GetScriptingMethodRegistry() { return GetScriptingManager().GetScriptingMethodRegistry(); }
+inline ScriptingTypeRegistry& GetScriptingTypeRegistry() { return GetScriptingManager().GetScriptingTypeRegistry(); }
+
+#define ScriptingClassFor(x) GetScriptingManager().ClassIDToScriptingClass(CLASS_##x)
+
+#endif
+
+#endif