BsMonoManager.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #include "BsMonoPrerequisites.h"
  3. #include "BsScriptMeta.h"
  4. #include "CmModule.h"
  5. #include <mono/jit/jit.h>
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @brief Loads Mono script assemblies and manages script objects.
  10. */
  11. class BS_MONO_EXPORT MonoManager : public CM::Module<MonoManager>
  12. {
  13. public:
  14. MonoManager();
  15. ~MonoManager();
  16. MonoAssembly& loadAssembly(const CM::String& path, const CM::String& name, const CM::String& entryPoint = CM::StringUtil::BLANK);
  17. void unloadAssembly(MonoAssembly& assembly);
  18. MonoDomain* getDomain() const { return mDomain; }
  19. static void registerScriptType(ScriptMeta* metaData);
  20. private:
  21. static const CM::String MONO_LIB_DIR;
  22. static const CM::String MONO_ETC_DIR;
  23. static CM::UnorderedMap<CM::String, CM::Vector<ScriptMeta*>::type>::type& getTypesToInitialize()
  24. {
  25. static CM::UnorderedMap<CM::String, CM::Vector<ScriptMeta*>::type>::type mTypesToInitialize;
  26. return mTypesToInitialize;
  27. }
  28. CM::UnorderedMap<CM::String, MonoAssembly*>::type mAssemblies;
  29. MonoDomain* mDomain;
  30. };
  31. }