BsProjectResourceMeta.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Library/BsProjectResourceMeta.h"
  4. #include "RTTI/BsProjectResourceMetaRTTI.h"
  5. #include "String/BsUnicode.h"
  6. namespace bs
  7. {
  8. ProjectResourceMeta::ProjectResourceMeta(const ConstructPrivately& dummy)
  9. :mTypeId(0)
  10. {
  11. }
  12. String ProjectResourceMeta::getUniqueName() const
  13. {
  14. return UTF8::fromWide(mName);
  15. }
  16. SPtr<ProjectResourceMeta> ProjectResourceMeta::create(const String& name, const UUID& uuid, UINT32 typeId,
  17. const SPtr<ResourceMetaData>& resourceMetaData)
  18. {
  19. SPtr<ProjectResourceMeta> meta = bs_shared_ptr_new<ProjectResourceMeta>(ConstructPrivately());
  20. meta->mName = UTF8::toWide(name); // Using wide string internally to keep compatibility with older versions
  21. meta->mUUID = uuid;
  22. meta->mTypeId = typeId;
  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. bool ProjectFileMeta::hasTypeId(UINT32 typeId) const
  68. {
  69. for(auto& entry : mResourceMetaData)
  70. {
  71. if (entry->getTypeID() == typeId)
  72. return true;
  73. }
  74. return false;
  75. }
  76. bool ProjectFileMeta::hasUUID(const UUID& uuid) const
  77. {
  78. for (auto& entry : mResourceMetaData)
  79. {
  80. if (entry->getUUID() == uuid)
  81. return true;
  82. }
  83. return false;
  84. }
  85. SPtr<ProjectFileMeta> ProjectFileMeta::createEmpty()
  86. {
  87. return bs_shared_ptr_new<ProjectFileMeta>(ConstructPrivately());
  88. }
  89. /************************************************************************/
  90. /* RTTI */
  91. /************************************************************************/
  92. RTTITypeBase* ProjectFileMeta::getRTTIStatic()
  93. {
  94. return ProjectFileMetaRTTI::instance();
  95. }
  96. RTTITypeBase* ProjectFileMeta::getRTTI() const
  97. {
  98. return ProjectFileMeta::getRTTIStatic();
  99. }
  100. }