BsManagedSerializableObjectDataRTTI.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsManagedSerializableObjectData.h"
  5. #include "BsManagedSerializableField.h"
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BE_EXPORT ManagedSerializableObjectDataRTTI : public RTTIType <ManagedSerializableObjectData, IReflectable, ManagedSerializableObjectDataRTTI>
  9. {
  10. private:
  11. ManagedSerializableFieldDataEntryPtr getFieldEntry(ManagedSerializableObjectData* obj, UINT32 arrayIdx)
  12. {
  13. return obj->mFieldData[arrayIdx];
  14. }
  15. void setFieldsEntry(ManagedSerializableObjectData* obj, UINT32 arrayIdx, ManagedSerializableFieldDataEntryPtr val)
  16. {
  17. obj->mFieldData[arrayIdx] = val;
  18. }
  19. UINT32 getNumFieldEntries(ManagedSerializableObjectData* obj)
  20. {
  21. return (UINT32)obj->mFieldData.size();
  22. }
  23. void setNumFieldEntries(ManagedSerializableObjectData* obj, UINT32 numEntries)
  24. {
  25. obj->mFieldData = Vector<ManagedSerializableFieldDataEntryPtr>(numEntries);
  26. }
  27. public:
  28. ManagedSerializableObjectDataRTTI()
  29. {
  30. addReflectablePtrArrayField("mFieldEntries", 0, &ManagedSerializableObjectDataRTTI::getFieldEntry, &ManagedSerializableObjectDataRTTI::getNumFieldEntries,
  31. &ManagedSerializableObjectDataRTTI::setFieldsEntry, &ManagedSerializableObjectDataRTTI::setNumFieldEntries);
  32. }
  33. virtual const String& getRTTIName()
  34. {
  35. static String name = "ScriptSerializableObjectData";
  36. return name;
  37. }
  38. virtual UINT32 getRTTIId()
  39. {
  40. return TID_ScriptSerializableObjectData;
  41. }
  42. virtual std::shared_ptr<IReflectable> newRTTIObject()
  43. {
  44. return bs_shared_ptr<ManagedSerializableObjectData>();;
  45. }
  46. };
  47. }