BsResourceManifestRTTI.h 1.3 KB

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