BsProjectResourceMeta.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsProjectResourceMeta.h"
  4. #include "BsProjectResourceMetaRTTI.h"
  5. namespace BansheeEngine
  6. {
  7. ProjectResourceMeta::ProjectResourceMeta(const ConstructPrivately& dummy)
  8. :mTypeId(0)
  9. {
  10. }
  11. SPtr<ProjectResourceMeta> ProjectResourceMeta::create(const WString& name, const String& uuid, UINT32 typeId,
  12. const SPtr<ResourceMetaData>& resourceMetaData)
  13. {
  14. SPtr<ProjectResourceMeta> meta = bs_shared_ptr_new<ProjectResourceMeta>(ConstructPrivately());
  15. meta->mName = name;
  16. meta->mUUID = uuid;
  17. meta->mTypeId = typeId;
  18. meta->mResourceMeta = resourceMetaData;
  19. return meta;
  20. }
  21. SPtr<ProjectResourceMeta> ProjectResourceMeta::createEmpty()
  22. {
  23. return bs_shared_ptr_new<ProjectResourceMeta>(ConstructPrivately());
  24. }
  25. /************************************************************************/
  26. /* RTTI */
  27. /************************************************************************/
  28. RTTITypeBase* ProjectResourceMeta::getRTTIStatic()
  29. {
  30. return ProjectResourceMetaRTTI::instance();
  31. }
  32. RTTITypeBase* ProjectResourceMeta::getRTTI() const
  33. {
  34. return ProjectResourceMeta::getRTTIStatic();
  35. }
  36. ProjectFileMeta::ProjectFileMeta(const ConstructPrivately& dummy)
  37. :mIncludeInBuild(false)
  38. {
  39. }
  40. SPtr<ProjectFileMeta> ProjectFileMeta::create(const SPtr<ImportOptions>& importOptions)
  41. {
  42. SPtr<ProjectFileMeta> meta = bs_shared_ptr_new<ProjectFileMeta>(ConstructPrivately());
  43. meta->mImportOptions = importOptions;
  44. meta->mIncludeInBuild = false;
  45. return meta;
  46. }
  47. void ProjectFileMeta::add(const SPtr<ProjectResourceMeta>& resourceMeta)
  48. {
  49. mResourceMetaData.push_back(resourceMeta);
  50. }
  51. void ProjectFileMeta::remove(const String& UUID)
  52. {
  53. auto iterFind = std::find_if(mResourceMetaData.begin(), mResourceMetaData.end(),
  54. [&](auto& x) { return x->getUUID() == UUID; });
  55. if (iterFind != mResourceMetaData.end())
  56. mResourceMetaData.erase(iterFind);
  57. }
  58. bool ProjectFileMeta::hasTypeId(UINT32 typeId) const
  59. {
  60. for(auto& entry : mResourceMetaData)
  61. {
  62. if (entry->getTypeID() == typeId)
  63. return true;
  64. }
  65. return false;
  66. }
  67. bool ProjectFileMeta::hasUUID(const String& uuid) const
  68. {
  69. for (auto& entry : mResourceMetaData)
  70. {
  71. if (entry->getUUID() == uuid)
  72. return true;
  73. }
  74. return false;
  75. }
  76. SPtr<ProjectFileMeta> ProjectFileMeta::createEmpty()
  77. {
  78. return bs_shared_ptr_new<ProjectFileMeta>(ConstructPrivately());
  79. }
  80. /************************************************************************/
  81. /* RTTI */
  82. /************************************************************************/
  83. RTTITypeBase* ProjectFileMeta::getRTTIStatic()
  84. {
  85. return ProjectFileMetaRTTI::instance();
  86. }
  87. RTTITypeBase* ProjectFileMeta::getRTTI() const
  88. {
  89. return ProjectFileMeta::getRTTIStatic();
  90. }
  91. }