diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Scripting/ScriptingManager.h |
Diffstat (limited to 'Runtime/Scripting/ScriptingManager.h')
-rw-r--r-- | Runtime/Scripting/ScriptingManager.h | 63 |
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 |