BsScriptAssemblyManager.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsManagedSerializableObjectInfo.h"
  4. #include "BsModule.h"
  5. #include <mono/jit/jit.h>
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BE_EXPORT ScriptAssemblyManager : public Module<ScriptAssemblyManager>
  9. {
  10. public:
  11. ScriptAssemblyManager();
  12. ~ScriptAssemblyManager();
  13. void loadAssemblyInfo(const String& assemblyName);
  14. void refreshAssemblyInfo();
  15. bool getSerializableObjectInfo(const String& ns, const String& typeName, std::shared_ptr<ManagedSerializableObjectInfo>& outInfo);
  16. bool hasSerializableObjectInfo(const String& ns, const String& typeName);
  17. Vector<String> getScriptAssemblies() const;
  18. MonoClass* getSystemArrayClass() const { return mSystemArrayClass; }
  19. MonoClass* getSystemGenericListClass() const { return mSystemGenericListClass; }
  20. MonoClass* getSystemGenericDictionaryClass() const { return mSystemGenericDictionaryClass; }
  21. MonoClass* getComponentClass() const { return mComponentClass; }
  22. MonoClass* getMissingComponentClass() const { return mMissingComponentClass; }
  23. MonoClass* getSceneObjectClass() const { return mSceneObjectClass; }
  24. MonoClass* getManagedResourceClass() const { return mManagedResourceClass; }
  25. MonoClass* getTexture2DClass() const { return mTexture2DClass; }
  26. MonoClass* getTexture3DClass() const { return mTexture3DClass; }
  27. MonoClass* getTextureCubeClass() const { return mTextureCubeClass; }
  28. MonoClass* getSpriteTextureClass() const { return mSpriteTextureClass; }
  29. MonoClass* getShaderClass() const { return mShaderClass; }
  30. MonoClass* getMaterialClass() const { return mMaterialClass; }
  31. MonoClass* getMeshClass() const { return mMeshClass; }
  32. MonoClass* getFontClass() const { return mFontClass; }
  33. MonoClass* getPrefabClass() const { return mPrefabClass; }
  34. MonoClass* getStringTableClass() const { return mStringTableClass; }
  35. MonoClass* getPlainTextClass() const { return mPlainTextClass; }
  36. MonoClass* getScriptCodeClass() const { return mScriptCodeClass; }
  37. ManagedSerializableTypeInfoPtr determineType(MonoClass* monoClass);
  38. private:
  39. UnorderedMap<String, std::shared_ptr<ManagedSerializableAssemblyInfo>> mAssemblyInfos;
  40. bool mBaseTypesInitialized;
  41. MonoClass* mSystemArrayClass;
  42. MonoClass* mSystemGenericListClass;
  43. MonoClass* mSystemGenericDictionaryClass;
  44. MonoClass* mComponentClass;
  45. MonoClass* mSceneObjectClass;
  46. MonoClass* mMissingComponentClass;
  47. MonoClass* mTexture2DClass;
  48. MonoClass* mTexture3DClass;
  49. MonoClass* mTextureCubeClass;
  50. MonoClass* mSpriteTextureClass;
  51. MonoClass* mShaderClass;
  52. MonoClass* mMaterialClass;
  53. MonoClass* mMeshClass;
  54. MonoClass* mManagedResourceClass;
  55. MonoClass* mFontClass;
  56. MonoClass* mPrefabClass;
  57. MonoClass* mStringTableClass;
  58. MonoClass* mPlainTextClass;
  59. MonoClass* mScriptCodeClass;
  60. MonoClass* mSerializeObjectAttribute;
  61. MonoClass* mDontSerializeFieldAttribute;
  62. MonoClass* mSerializeFieldAttribute;
  63. MonoClass* mHideInInspectorAttribute;
  64. void clearScriptObjects();
  65. void initializeBaseTypes();
  66. };
  67. }