SkeletonProxyRule.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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/Memory/Memory.h>
  10. #include <AzCore/std/containers/fixed_vector.h>
  11. #include <SceneAPI/SceneCore/DataTypes/Rules/ISkeletonProxyRule.h>
  12. namespace AZ
  13. {
  14. class ReflectContext;
  15. namespace SceneAPI
  16. {
  17. namespace Containers
  18. {
  19. class Scene;
  20. }
  21. namespace SceneData
  22. {
  23. struct SkeletonProxy
  24. {
  25. AZ_RTTI(SkeletonProxy, "{49E188A9-CA04-4B85-9AD8-A0262796EA27}");
  26. virtual ~SkeletonProxy() = default;
  27. AZStd::string m_jointName;
  28. AZStd::string m_proxyName;
  29. static void Reflect(ReflectContext* context);
  30. };
  31. struct SkeletonProxyGroup
  32. {
  33. AZ_RTTI(SkeletonProxyGroup, "{243B8186-EDDB-48C7-BCE7-FC2D1974B58A}");
  34. AZ_CLASS_ALLOCATOR_DECL
  35. virtual ~SkeletonProxyGroup() = default;
  36. AZStd::string m_proxyMaterialName;
  37. AZStd::vector<SkeletonProxy> m_skeletonProxies;
  38. static void Reflect(ReflectContext* context);
  39. };
  40. class SkeletonProxyRule
  41. : public DataTypes::ISkeletonProxyRule
  42. {
  43. public:
  44. AZ_RTTI(SkeletonProxyRule, "{142CF206-FC12-4138-B30C-FFA64EC3BB4E}", DataTypes::ISkeletonProxyRule);
  45. AZ_CLASS_ALLOCATOR_DECL
  46. ~SkeletonProxyRule() override = default;
  47. size_t GetProxyGroupCount() const override;
  48. const SkeletonProxyGroup& GetProxyGroup() const;
  49. static void Reflect(ReflectContext* context);
  50. protected:
  51. AZStd::vector<SkeletonProxyGroup> m_proxyGroups;
  52. };
  53. } // SceneData
  54. } // SceneAPI
  55. } // AZ