BsResourceManifestRTTI.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsResourceManifest.h"
  5. namespace BansheeEngine
  6. {
  7. /** @cond RTTI */
  8. /** @addtogroup RTTI-Impl-Core
  9. * @{
  10. */
  11. class BS_CORE_EXPORT ResourceManifestRTTI : public RTTIType<ResourceManifest, IReflectable, ResourceManifestRTTI>
  12. {
  13. private:
  14. String& getName(ResourceManifest* obj) { return obj->mName; }
  15. void setName(ResourceManifest* obj, String& val) { obj->mName = val; }
  16. UnorderedMap<String, Path>& getUUIDMap(ResourceManifest* obj) { return obj->mUUIDToFilePath; }
  17. void setUUIDMap(ResourceManifest* obj, UnorderedMap<String, Path>& val)
  18. {
  19. obj->mUUIDToFilePath = val;
  20. obj->mFilePathToUUID.clear();
  21. for(auto& entry : obj->mUUIDToFilePath)
  22. {
  23. obj->mFilePathToUUID[entry.second] = entry.first;
  24. }
  25. }
  26. public:
  27. ResourceManifestRTTI()
  28. {
  29. addPlainField("mName", 0, &ResourceManifestRTTI::getName, &ResourceManifestRTTI::setName);
  30. addPlainField("mUUIDToFilePath", 1, &ResourceManifestRTTI::getUUIDMap, &ResourceManifestRTTI::setUUIDMap);
  31. }
  32. const String& getRTTIName() override
  33. {
  34. static String name = "ResourceManifest";
  35. return name;
  36. }
  37. UINT32 getRTTIId() override
  38. {
  39. return TID_ResourceManifest;
  40. }
  41. std::shared_ptr<IReflectable> newRTTIObject() override
  42. {
  43. return ResourceManifest::createEmpty();
  44. }
  45. };
  46. /** @} */
  47. /** @endcond */
  48. }