2
0

BsScriptSerializableObject.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief Interop class between C++ & CLR for ManagedSerializableObject.
  8. */
  9. class BS_SCR_BE_EXPORT ScriptSerializableObject : public ScriptObject<ScriptSerializableObject>
  10. {
  11. public:
  12. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableObject")
  13. /**
  14. * @brief Creates a new serializable object interop object from the data in the
  15. * provided property.
  16. */
  17. static ScriptSerializableObject* create(const ScriptSerializableProperty* parentProperty);
  18. private:
  19. ScriptSerializableObject(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
  20. /**
  21. * @brief Creates a new interop object for a serializable object from an existing managed instance and
  22. * an object info structure describing the type of the managed instance.
  23. *
  24. * @param instance Managed instance the interop object will reference.
  25. * @param objInfo Data about the type of the provided managed instance.
  26. */
  27. static ScriptSerializableObject* createInternal(MonoObject* instance, const ManagedSerializableObjectInfoPtr& objInfo);
  28. ManagedSerializableTypeInfoPtr mTypeInfo;
  29. static MonoField* FieldsField;
  30. /************************************************************************/
  31. /* CLR HOOKS */
  32. /************************************************************************/
  33. static void internal_createInstance(MonoObject* instance, MonoReflectionType* type);
  34. };
  35. }