BsRuntimeScriptObjects.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsManagedSerializableObjectInfo.h"
  4. #include "CmModule.h"
  5. #include <mono/jit/jit.h>
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BE_EXPORT RuntimeScriptObjects : public Module<RuntimeScriptObjects>
  9. {
  10. public:
  11. RuntimeScriptObjects();
  12. ~RuntimeScriptObjects();
  13. void refreshScriptObjects(const String& assemblyName);
  14. bool getSerializableObjectInfo(const String& ns, const String& typeName, std::shared_ptr<ManagedSerializableObjectInfo>& outInfo);
  15. bool hasSerializableObjectInfo(const String& ns, const String& typeName);
  16. MonoClass* getSystemArrayClass() const { return mSystemArrayClass; }
  17. MonoClass* getSystemGenericListClass() const { return mSystemGenericListClass; }
  18. MonoClass* getSystemGenericDictionaryClass() const { return mSystemGenericDictionaryClass; }
  19. MonoClass* getComponentClass() const { return mComponentClass; }
  20. MonoClass* getSceneObjectClass() const { return mSceneObjectClass; }
  21. MonoClass* getTextureClass() const { return mTextureClass; }
  22. MonoClass* getSpriteTextureClass() const { return mSpriteTextureClass; }
  23. private:
  24. UnorderedMap<String, std::shared_ptr<ManagedSerializableAssemblyInfo>>::type mAssemblyInfos;
  25. bool mBaseTypesInitialized;
  26. MonoClass* mSystemArrayClass;
  27. MonoClass* mSystemGenericListClass;
  28. MonoClass* mSystemGenericDictionaryClass;
  29. MonoClass* mComponentClass;
  30. MonoClass* mSceneObjectClass;
  31. MonoClass* mTextureClass;
  32. MonoClass* mSpriteTextureClass;
  33. MonoClass* mSerializeObjectAttribute;
  34. MonoClass* mDontSerializeFieldAttribute;
  35. MonoClass* mSerializeFieldAttribute;
  36. MonoClass* mHideInInspectorAttribute;
  37. void clearScriptObjects(const String& assemblyName);
  38. void initializeBaseTypes();
  39. ManagedSerializableTypeInfoPtr determineType(MonoClass* monoClass);
  40. };
  41. }