BsScriptSerializableObject.h 1.8 KB

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