CoordinateSystemRule.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 <SceneAPI/SceneCore/DataTypes/Rules/ICoordinateSystemRule.h>
  10. #include <SceneAPI/SceneData/SceneDataConfiguration.h>
  11. namespace AZ
  12. {
  13. class ReflectContext;
  14. }
  15. namespace AZ::SceneAPI::SceneData
  16. {
  17. class SCENE_DATA_CLASS CoordinateSystemRule
  18. : public DataTypes::ICoordinateSystemRule
  19. {
  20. public:
  21. AZ_RTTI(CoordinateSystemRule, "{53ECEEEA-C489-46DF-9FDB-05251AD960F4}", AZ::SceneAPI::DataTypes::ICoordinateSystemRule);
  22. AZ_CLASS_ALLOCATOR_DECL
  23. SCENE_DATA_API CoordinateSystemRule();
  24. SCENE_DATA_API ~CoordinateSystemRule() override = default;
  25. SCENE_DATA_API void UpdateCoordinateSystemConverter() override;
  26. SCENE_DATA_API void SetTargetCoordinateSystem(CoordinateSystem targetCoordinateSystem) override;
  27. SCENE_DATA_API CoordinateSystem GetTargetCoordinateSystem() const override;
  28. SCENE_DATA_API const CoordinateSystemConverter& GetCoordinateSystemConverter() const override { return m_coordinateSystemConverter; }
  29. SCENE_DATA_API static void Reflect(AZ::ReflectContext* context);
  30. SCENE_DATA_API static bool ConvertLegacyCoordinateSystemRule(AZ::SerializeContext& serializeContext,
  31. AZ::SerializeContext::DataElementNode& classElement);
  32. // advanced coordinate settings
  33. SCENE_DATA_API bool GetUseAdvancedData() const override;
  34. SCENE_DATA_API void SetUseAdvancedData(bool useAdvancedData);
  35. SCENE_DATA_API const AZStd::string& GetOriginNodeName() const override;
  36. SCENE_DATA_API void SetOriginNodeName(const AZStd::string& originNodeName);
  37. SCENE_DATA_API const Quaternion& GetRotation() const override;
  38. SCENE_DATA_API void SetRotation(const Quaternion& rotation);
  39. SCENE_DATA_API const Vector3& GetTranslation() const override;
  40. SCENE_DATA_API void SetTranslation(const Vector3& translation);
  41. SCENE_DATA_API float GetScale() const override;
  42. SCENE_DATA_API void SetScale(float scale);
  43. protected:
  44. AZ::Crc32 GetBasicVisibility() const;
  45. AZ::Crc32 GetAdvancedVisibility() const;
  46. CoordinateSystemConverter m_coordinateSystemConverter;
  47. CoordinateSystem m_targetCoordinateSystem;
  48. // advanced coordinate settings
  49. bool m_useAdvancedData = false;
  50. AZStd::string m_originNodeName;
  51. AZ::Quaternion m_rotation = AZ::Quaternion::CreateIdentity();
  52. AZ::Vector3 m_translation = AZ::Vector3::CreateZero();
  53. float m_scale = 1.0f;
  54. };
  55. } // namespace AZ::SceneAPI::SceneData