BsManagedSerializableListRTTI.h 2.4 KB

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