CmResourceManifest.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "CmResourceManifest.h"
  2. #include "CmResourceManifestRTTI.h"
  3. #include "CmPath.h"
  4. namespace CamelotFramework
  5. {
  6. void ResourceManifest::registerResource(const String& uuid, const WString& filePath)
  7. {
  8. auto iterFind = mUUIDToFilePath.find(uuid);
  9. WString standardizedFilePath = Path::standardizePath(filePath);
  10. StringUtil::toLowerCase(standardizedFilePath);
  11. if(iterFind != mUUIDToFilePath.end())
  12. {
  13. if(iterFind->second != standardizedFilePath)
  14. {
  15. mFilePathToUUID.erase(iterFind->second);
  16. mUUIDToFilePath[uuid] = standardizedFilePath;
  17. mFilePathToUUID[standardizedFilePath] = uuid;
  18. }
  19. }
  20. else
  21. {
  22. mUUIDToFilePath[uuid] = standardizedFilePath;
  23. mFilePathToUUID[standardizedFilePath] = uuid;
  24. }
  25. }
  26. void ResourceManifest::unregisterResource(const String& uuid)
  27. {
  28. auto iterFind = mUUIDToFilePath.find(uuid);
  29. if(iterFind != mUUIDToFilePath.end())
  30. {
  31. mFilePathToUUID.erase(iterFind->second);
  32. mUUIDToFilePath.erase(uuid);
  33. }
  34. }
  35. const WString& ResourceManifest::uuidToFilePath(const String& uuid) const
  36. {
  37. auto iterFind = mUUIDToFilePath.find(uuid);
  38. if(iterFind != mUUIDToFilePath.end())
  39. return iterFind->second;
  40. else
  41. return StringUtil::WBLANK;
  42. }
  43. const String& ResourceManifest::filePathToUUID(const WString& filePath) const
  44. {
  45. WString standardizedFilePath = Path::standardizePath(filePath);
  46. StringUtil::toLowerCase(standardizedFilePath);
  47. auto iterFind = mFilePathToUUID.find(standardizedFilePath);
  48. if(iterFind != mFilePathToUUID.end())
  49. return iterFind->second;
  50. else
  51. return StringUtil::BLANK;
  52. }
  53. bool ResourceManifest::uuidExists(const String& uuid) const
  54. {
  55. auto iterFind = mUUIDToFilePath.find(uuid);
  56. return iterFind != mUUIDToFilePath.end();
  57. }
  58. bool ResourceManifest::filePathExists(const WString& filePath) const
  59. {
  60. WString standardizedFilePath = Path::standardizePath(filePath);
  61. StringUtil::toLowerCase(standardizedFilePath);
  62. auto iterFind = mFilePathToUUID.find(standardizedFilePath);
  63. return iterFind != mFilePathToUUID.end();
  64. }
  65. RTTITypeBase* ResourceManifest::getRTTIStatic()
  66. {
  67. return ResourceManifestRTTI::instance();
  68. }
  69. RTTITypeBase* ResourceManifest::getRTTI() const
  70. {
  71. return ResourceManifest::getRTTIStatic();
  72. }
  73. }