BsRuntimeScriptObjects.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptSerializableObjectInfo.h"
  4. #include "CmModule.h"
  5. #include <mono/jit/jit.h>
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BE_EXPORT RuntimeScriptObjects : public CM::Module<RuntimeScriptObjects>
  9. {
  10. public:
  11. RuntimeScriptObjects();
  12. ~RuntimeScriptObjects();
  13. void refreshScriptObjects(const CM::String& assemblyName);
  14. bool getSerializableObjectInfo(const CM::String& ns, const CM::String& typeName, std::shared_ptr<ScriptSerializableObjectInfo>& outInfo);
  15. bool hasSerializableObjectInfo(const CM::String& ns, const CM::String& typeName);
  16. bool isArray(MonoObject* object);
  17. private:
  18. CM::UnorderedMap<CM::String, std::shared_ptr<ScriptSerializableAssemblyInfo>>::type mAssemblyInfos;
  19. bool mBaseTypesInitialized;
  20. MonoClass* mSystemArrayClass;
  21. MonoClass* mSerializableAttribute;
  22. MonoClass* mNonSerializedAttribute;
  23. MonoClass* mComponentClass;
  24. MonoClass* mSceneObjectClass;
  25. MonoClass* mTextureClass;
  26. MonoClass* mSpriteTextureClass;
  27. MonoClass* mSerializeFieldAttribute;
  28. MonoClass* mHideInInspectorAttribute;
  29. void clearScriptObjects(const CM::String& assemblyName);
  30. void initializeBaseTypes();
  31. ScriptSerializableTypeInfoPtr determineType(MonoClass* monoClass);
  32. };
  33. }