BsResourceManifestRTTI.h 1.3 KB

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