BsManagedSerializableListRTTI.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsManagedSerializableList.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ManagedSerializableListRTTI : public RTTIType<ManagedSerializableList, IReflectable, ManagedSerializableListRTTI>
  8. {
  9. private:
  10. ManagedSerializableTypeInfoListPtr getTypeInfo(ManagedSerializableList* obj)
  11. {
  12. return obj->mListTypeInfo;
  13. }
  14. void setTypeInfo(ManagedSerializableList* obj, ManagedSerializableTypeInfoListPtr val)
  15. {
  16. obj->mListTypeInfo = val;
  17. }
  18. UINT32& getNumElements(ManagedSerializableList* obj)
  19. {
  20. return (UINT32&)obj->mNumElements;
  21. }
  22. void setNumElements(ManagedSerializableList* obj, UINT32& numElements)
  23. {
  24. obj->mNumElements = numElements;
  25. }
  26. ManagedSerializableFieldDataPtr getListEntry(ManagedSerializableList* obj, UINT32 arrayIdx)
  27. {
  28. return obj->getFieldData(arrayIdx);
  29. }
  30. void setListEntry(ManagedSerializableList* obj, UINT32 arrayIdx, ManagedSerializableFieldDataPtr val)
  31. {
  32. obj->setFieldData(arrayIdx, val);
  33. }
  34. UINT32 getNumListEntries(ManagedSerializableList* obj)
  35. {
  36. return (UINT32)obj->mNumElements;
  37. }
  38. void setNumListEntries(ManagedSerializableList* obj, UINT32 numEntries)
  39. {
  40. obj->mCachedEntries = Vector<ManagedSerializableFieldDataPtr>(numEntries);
  41. }
  42. public:
  43. ManagedSerializableListRTTI()
  44. {
  45. addReflectablePtrField("mListTypeInfo", 0, &ManagedSerializableListRTTI::getTypeInfo, &ManagedSerializableListRTTI::setTypeInfo);
  46. addPlainField("mNumElements", 1, &ManagedSerializableListRTTI::getNumElements, &ManagedSerializableListRTTI::setNumElements);
  47. addReflectablePtrArrayField("mListEntries", 2, &ManagedSerializableListRTTI::getListEntry, &ManagedSerializableListRTTI::getNumListEntries,
  48. &ManagedSerializableListRTTI::setListEntry, &ManagedSerializableListRTTI::setNumListEntries);
  49. }
  50. virtual const String& getRTTIName()
  51. {
  52. static String name = "ScriptSerializableList";
  53. return name;
  54. }
  55. virtual UINT32 getRTTIId()
  56. {
  57. return TID_ScriptSerializableList;
  58. }
  59. virtual std::shared_ptr<IReflectable> newRTTIObject()
  60. {
  61. return ManagedSerializableList::createEmpty();
  62. }
  63. };
  64. }