BsBuildDataRTTI.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsBuildManager.h"
  5. namespace BansheeEngine
  6. {
  7. class BuildDataRTTI : public RTTIType <BuildData, IReflectable, BuildDataRTTI>
  8. {
  9. private:
  10. SPtr<PlatformInfo> getPlatformInfo(BuildData* obj, UINT32 idx) { return obj->platformData[idx]; }
  11. void setPlatformInfo(BuildData* obj, UINT32 idx, SPtr<PlatformInfo> val) { obj->platformData[idx] = val; }
  12. UINT32 getPlatformInfoArraySize(BuildData* obj) { return (UINT32)obj->platformData.size(); }
  13. void setPlatformInfoArraySize(BuildData* obj, UINT32 size) { obj->platformData.resize(size); }
  14. PlatformType& getActivePlatform(BuildData* obj) { return obj->activePlatform; }
  15. void setActivePlatform(BuildData* obj, PlatformType& val) { obj->activePlatform = val; }
  16. public:
  17. BuildDataRTTI()
  18. {
  19. addReflectablePtrArrayField("platformData", 0, &BuildDataRTTI::getPlatformInfo, &BuildDataRTTI::getPlatformInfoArraySize,
  20. &BuildDataRTTI::setPlatformInfo, &BuildDataRTTI::setPlatformInfoArraySize);
  21. addPlainField("activePlatform", 1, &BuildDataRTTI::getActivePlatform, &BuildDataRTTI::setActivePlatform);
  22. }
  23. virtual const String& getRTTIName()
  24. {
  25. static String name = "BuildData";
  26. return name;
  27. }
  28. virtual UINT32 getRTTIId()
  29. {
  30. return TID_BuildData;
  31. }
  32. virtual std::shared_ptr<IReflectable> newRTTIObject()
  33. {
  34. return bs_shared_ptr_new<BuildData>();
  35. }
  36. };
  37. }