BsSavedResourceDataRTTI.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsSavedResourceData.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_CORE_EXPORT SavedResourceDataRTTI : public RTTIType <SavedResourceData, IReflectable, SavedResourceDataRTTI>
  8. {
  9. private:
  10. String& getDependency(SavedResourceData* obj, UINT32 arrayIdx)
  11. {
  12. return obj->mDependencies[arrayIdx];
  13. }
  14. void setDependency(SavedResourceData* obj, UINT32 arrayIdx, String& val)
  15. {
  16. obj->mDependencies[arrayIdx] = val;
  17. }
  18. UINT32 getNumDependencies(SavedResourceData* obj)
  19. {
  20. return (UINT32)obj->mDependencies.size();
  21. }
  22. void setNumDependencies(SavedResourceData* obj, UINT32 numEntries)
  23. {
  24. obj->mDependencies = Vector<String>(numEntries);
  25. }
  26. bool& getAllowAsyncLoading(SavedResourceData* obj)
  27. {
  28. return obj->mAllowAsync;
  29. }
  30. void setAllowAsyncLoading(SavedResourceData* obj, bool& value)
  31. {
  32. obj->mAllowAsync = value;
  33. }
  34. public:
  35. SavedResourceDataRTTI()
  36. {
  37. addPlainArrayField("mDependencies", 0, &SavedResourceDataRTTI::getDependency, &SavedResourceDataRTTI::getNumDependencies,
  38. &SavedResourceDataRTTI::setDependency, &SavedResourceDataRTTI::setNumDependencies);
  39. addPlainField("mAllowAsync", 1, &SavedResourceDataRTTI::getAllowAsyncLoading, &SavedResourceDataRTTI::setAllowAsyncLoading);
  40. }
  41. virtual const String& getRTTIName()
  42. {
  43. static String name = "ResourceDependencies";
  44. return name;
  45. }
  46. virtual UINT32 getRTTIId()
  47. {
  48. return TID_ResourceDependencies;
  49. }
  50. virtual std::shared_ptr<IReflectable> newRTTIObject()
  51. {
  52. return bs_shared_ptr_new<SavedResourceData>();
  53. }
  54. };
  55. }