SoftNameSetting.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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/Math/Crc.h>
  10. #include <AzCore/Memory/SystemAllocator.h>
  11. #include <AzCore/std/containers/vector.h>
  12. #include <AzCore/std/string/string.h>
  13. #include <SceneAPI/SceneCore/Containers/SceneGraph.h>
  14. #include <SceneAPI/SceneCore/Utilities/PatternMatcher.h>
  15. namespace AZ
  16. {
  17. class ReflectContext;
  18. namespace SceneAPI
  19. {
  20. namespace Containers
  21. {
  22. class Scene;
  23. }
  24. }
  25. namespace SceneProcessingConfig
  26. {
  27. class SoftNameSetting
  28. {
  29. public:
  30. AZ_CLASS_ALLOCATOR(SoftNameSetting, SystemAllocator);
  31. AZ_RTTI(SoftNameSetting, "{FE7AAAF6-8BA5-4599-B9A6-CC28026A6FFE}");
  32. SoftNameSetting() = default;
  33. SoftNameSetting(const char* pattern, SceneAPI::SceneCore::PatternMatcher::MatchApproach approach,
  34. const char* virtualType);
  35. virtual ~SoftNameSetting() = 0;
  36. virtual const AZStd::string& GetVirtualType() const;
  37. virtual Crc32 GetVirtualTypeHash() const;
  38. virtual bool IsVirtualType(const SceneAPI::Containers::Scene& scene, SceneAPI::Containers::SceneGraph::NodeIndex node) const = 0;
  39. virtual const AZ::Uuid GetTypeId() const = 0;
  40. static void Reflect(ReflectContext* context);
  41. protected:
  42. AZStd::vector<AZStd::string> GetAllVirtualTypes() const;
  43. SceneAPI::SceneCore::PatternMatcher m_pattern;
  44. AZStd::string m_virtualType;
  45. mutable Crc32 m_virtualTypeHash;
  46. };
  47. } // namespace SceneProcessingConfig
  48. } // namespace AZ