BsScriptSerializableObject.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "CmIReflectable.h"
  4. #include <mono/jit/jit.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ScriptSerializableObject : public CM::IReflectable
  8. {
  9. private:
  10. struct ConstructPrivately {};
  11. public:
  12. ScriptSerializableObject(const ConstructPrivately& dummy, ScriptSerializableObjectInfoPtr objInfo, MonoObject* managedInstance);
  13. ScriptSerializableObject(const ConstructPrivately& dummy);
  14. static ScriptSerializableObjectPtr create(MonoObject* managedInstance);
  15. protected:
  16. ScriptSerializableObjectInfoPtr mObjInfo;
  17. MonoObject* mManagedInstance;
  18. CM::Vector<ScriptSerializableFieldDataEntryPtr>::type mFieldEntries;
  19. void setFieldData(const ScriptSerializableFieldInfoPtr& fieldInfo, const ScriptSerializableFieldDataPtr& val);
  20. ScriptSerializableFieldDataPtr getFieldData(const ScriptSerializableFieldInfoPtr& fieldInfo);
  21. void setValue(const ScriptSerializableFieldInfoPtr& fieldInfo, void* val);
  22. void* getValue(const ScriptSerializableFieldInfoPtr& fieldInfo);
  23. /************************************************************************/
  24. /* RTTI */
  25. /************************************************************************/
  26. static ScriptSerializableObjectPtr createEmpty();
  27. public:
  28. friend class ScriptSerializableObjectRTTI;
  29. static CM::RTTITypeBase* getRTTIStatic();
  30. virtual CM::RTTITypeBase* getRTTI() const;
  31. };
  32. }