3
0

ModelTraits.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/EBus/EBus.h>
  10. #include <AzCore/Asset/AssetManagerBus.h>
  11. #include <ScriptCanvas/Core/Core.h>
  12. namespace ScriptCanvasEditor
  13. {
  14. namespace VersionExplorer
  15. {
  16. struct ModifyConfiguration
  17. {
  18. AZStd::function<void(SourceHandle&)> modification;
  19. AZStd::function<bool()> onReadOnlyFile;
  20. SourceHandle modifySingleAsset;
  21. bool backupGraphBeforeModification = false;
  22. bool successfulDependencyUpgradeRequired = true;
  23. AZ::s32 perDependencyWaitSecondsMax = 20;
  24. };
  25. struct ModificationResult
  26. {
  27. SourceHandle asset;
  28. AZStd::string errorMessage;
  29. };
  30. struct ModificationResults
  31. {
  32. AZStd::vector<SourceHandle> m_successes;
  33. AZStd::vector<ModificationResult> m_failures;
  34. };
  35. struct ScanConfiguration
  36. {
  37. enum class Filter
  38. {
  39. Include,
  40. Exclude
  41. };
  42. AZStd::function<Filter(const SourceHandle&)> filter;
  43. bool reportFilteredGraphs = false;
  44. bool onlyIncludeLegacyXML = false;
  45. };
  46. struct ScanResult
  47. {
  48. AZStd::vector<SourceHandle> m_catalogAssets;
  49. AZStd::vector<SourceHandle> m_unfiltered;
  50. AZStd::vector<SourceHandle> m_filteredAssets;
  51. AZStd::vector<SourceHandle> m_loadErrors;
  52. };
  53. enum Result
  54. {
  55. Failure,
  56. Success
  57. };
  58. class ModificationNotificationsTraits
  59. : public AZ::EBusTraits
  60. {
  61. public:
  62. virtual void ModificationComplete(const ModificationResult& result) = 0;
  63. };
  64. using ModificationNotificationsBus = AZ::EBus<ModificationNotificationsTraits>;
  65. class ModelRequestsTraits
  66. : public AZ::EBusTraits
  67. {
  68. public:
  69. virtual const ModificationResults* GetResults() = 0;
  70. virtual void Modify(const ModifyConfiguration& modification) = 0;
  71. virtual void Scan(const ScanConfiguration& filter) = 0;
  72. };
  73. using ModelRequestsBus = AZ::EBus<ModelRequestsTraits>;
  74. class ModelNotificationsTraits
  75. : public AZ::EBusTraits
  76. {
  77. public:
  78. virtual void OnScanBegin(size_t assetCount) = 0;
  79. virtual void OnScanComplete(const ScanResult& result) = 0;
  80. virtual void OnScanFilteredGraph(const SourceHandle& info) = 0;
  81. virtual void OnScanLoadFailure(const SourceHandle& info) = 0;
  82. virtual void OnScanUnFilteredGraph(const SourceHandle& info) = 0;
  83. virtual void OnUpgradeBegin(const ModifyConfiguration& config, const AZStd::vector<SourceHandle>& assets) = 0;
  84. virtual void OnUpgradeComplete(const ModificationResults& results) = 0;
  85. virtual void OnUpgradeDependenciesGathered(const SourceHandle& info, Result result) = 0;
  86. virtual void OnUpgradeDependencySortBegin(const ModifyConfiguration& config, const AZStd::vector<SourceHandle>& assets) = 0;
  87. virtual void OnUpgradeDependencySortEnd
  88. ( const ModifyConfiguration& config
  89. , const AZStd::vector<SourceHandle>& assets
  90. , const AZStd::vector<size_t>& sortedOrder) = 0;
  91. virtual void OnUpgradeDependencyWaitInterval(const SourceHandle& info) = 0;
  92. virtual void OnUpgradeModificationBegin(const ModifyConfiguration& config, const SourceHandle& info) = 0;
  93. virtual void OnUpgradeModificationEnd(const ModifyConfiguration& config, const SourceHandle& info, ModificationResult result) = 0;
  94. };
  95. using ModelNotificationsBus = AZ::EBus<ModelNotificationsTraits>;
  96. }
  97. }