BsProjectResourceMeta.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Library/BsProjectResourceMeta.h"
  4. #include "Private/RTTI/BsProjectResourceMetaRTTI.h"
  5. #include "String/BsUnicode.h"
  6. namespace bs
  7. {
  8. ProjectResourceMeta::ProjectResourceMeta(const ConstructPrivately& dummy)
  9. {
  10. }
  11. String ProjectResourceMeta::getUniqueName() const
  12. {
  13. return UTF8::fromWide(mName);
  14. }
  15. SPtr<ProjectResourceMeta> ProjectResourceMeta::create(const String& name, const UUID& uuid, UINT32 typeId,
  16. const ProjectResourceIcons& previewIcons, const SPtr<ResourceMetaData>& resourceMetaData)
  17. {
  18. SPtr<ProjectResourceMeta> meta = bs_shared_ptr_new<ProjectResourceMeta>(ConstructPrivately());
  19. meta->mName = UTF8::toWide(name); // Using wide string internally to keep compatibility with older versions
  20. meta->mUUID = uuid;
  21. meta->mTypeId = typeId;
  22. meta->mPreviewIcons = previewIcons;
  23. meta->mResourceMeta = resourceMetaData;
  24. return meta;
  25. }
  26. SPtr<ProjectResourceMeta> ProjectResourceMeta::createEmpty()
  27. {
  28. return bs_shared_ptr_new<ProjectResourceMeta>(ConstructPrivately());
  29. }
  30. /************************************************************************/
  31. /* RTTI */
  32. /************************************************************************/
  33. RTTITypeBase* ProjectResourceMeta::getRTTIStatic()
  34. {
  35. return ProjectResourceMetaRTTI::instance();
  36. }
  37. RTTITypeBase* ProjectResourceMeta::getRTTI() const
  38. {
  39. return ProjectResourceMeta::getRTTIStatic();
  40. }
  41. ProjectFileMeta::ProjectFileMeta(const ConstructPrivately& dummy)
  42. :mIncludeInBuild(false)
  43. {
  44. }
  45. SPtr<ProjectFileMeta> ProjectFileMeta::create(const SPtr<ImportOptions>& importOptions)
  46. {
  47. SPtr<ProjectFileMeta> meta = bs_shared_ptr_new<ProjectFileMeta>(ConstructPrivately());
  48. meta->mImportOptions = importOptions;
  49. meta->mIncludeInBuild = false;
  50. return meta;
  51. }
  52. void ProjectFileMeta::add(const SPtr<ProjectResourceMeta>& resourceMeta)
  53. {
  54. mResourceMetaData.push_back(resourceMeta);
  55. }
  56. void ProjectFileMeta::addInactive(const SPtr<ProjectResourceMeta>& resourceMeta)
  57. {
  58. mInactiveResourceMetaData.push_back(resourceMeta);
  59. }
  60. Vector<SPtr<ProjectResourceMeta>> ProjectFileMeta::getAllResourceMetaData() const
  61. {
  62. Vector<SPtr<ProjectResourceMeta>> output(mResourceMetaData);
  63. for (auto& entry : mInactiveResourceMetaData)
  64. output.push_back(entry);
  65. return output;
  66. }
  67. void ProjectFileMeta::clearResourceMetaData()
  68. {
  69. mResourceMetaData.clear();
  70. mInactiveResourceMetaData.clear();
  71. }
  72. bool ProjectFileMeta::hasTypeId(UINT32 typeId) const
  73. {
  74. for(auto& entry : mResourceMetaData)
  75. {
  76. if (entry->getTypeID() == typeId)
  77. return true;
  78. }
  79. return false;
  80. }
  81. bool ProjectFileMeta::hasUUID(const UUID& uuid) const
  82. {
  83. for (auto& entry : mResourceMetaData)
  84. {
  85. if (entry->getUUID() == uuid)
  86. return true;
  87. }
  88. return false;
  89. }
  90. SPtr<ProjectFileMeta> ProjectFileMeta::createEmpty()
  91. {
  92. return bs_shared_ptr_new<ProjectFileMeta>(ConstructPrivately());
  93. }
  94. /************************************************************************/
  95. /* RTTI */
  96. /************************************************************************/
  97. RTTITypeBase* ProjectFileMeta::getRTTIStatic()
  98. {
  99. return ProjectFileMetaRTTI::instance();
  100. }
  101. RTTITypeBase* ProjectFileMeta::getRTTI() const
  102. {
  103. return ProjectFileMeta::getRTTIStatic();
  104. }
  105. }