AnimationData.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. /*
  3. * Copyright (c) Contributors to the Open 3D Engine Project.
  4. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. *
  6. * SPDX-License-Identifier: Apache-2.0 OR MIT
  7. *
  8. */
  9. #include <AzCore/std/string/string.h>
  10. #include <AzCore/std/containers/vector.h>
  11. #include <SceneAPI/SceneData/SceneDataConfiguration.h>
  12. #include <SceneAPI/SceneCore/DataTypes/GraphData/IAnimationData.h>
  13. #include <SceneAPI/SceneCore/DataTypes/MatrixType.h>
  14. namespace AZ
  15. {
  16. namespace SceneData
  17. {
  18. namespace GraphData
  19. {
  20. class SCENE_DATA_CLASS AnimationData
  21. : public SceneAPI::DataTypes::IAnimationData
  22. {
  23. public:
  24. AZ_RTTI(AnimationData, "{D350732E-4727-41C8-95E0-FBAF5F2AC074}", SceneAPI::DataTypes::IAnimationData);
  25. static void Reflect(ReflectContext* context);
  26. SCENE_DATA_API AnimationData();
  27. SCENE_DATA_API ~AnimationData() override = default;
  28. SCENE_DATA_API virtual void AddKeyFrame(const SceneAPI::DataTypes::MatrixType& keyFrameTransform);
  29. SCENE_DATA_API virtual void ReserveKeyFrames(size_t count);
  30. SCENE_DATA_API virtual void SetTimeStepBetweenFrames(double timeStep);
  31. SCENE_DATA_API size_t GetKeyFrameCount() const override;
  32. SCENE_DATA_API const SceneAPI::DataTypes::MatrixType& GetKeyFrame(size_t index) const override;
  33. SCENE_DATA_API double GetTimeStepBetweenFrames() const override;
  34. SCENE_DATA_API void GetDebugOutput(SceneAPI::Utilities::DebugOutput& output) const override;
  35. protected:
  36. AZStd::vector<SceneAPI::DataTypes::MatrixType> m_keyFrames;
  37. double m_timeStepBetweenFrames;
  38. };
  39. class BlendShapeAnimationData
  40. : public SceneAPI::DataTypes::IBlendShapeAnimationData
  41. {
  42. public:
  43. AZ_RTTI(BlendShapeAnimationData, "{02766CCF-BDA7-46B6-9BB1-58A90C1AD6AA}", SceneAPI::DataTypes::IBlendShapeAnimationData);
  44. static void Reflect(ReflectContext* context);
  45. SCENE_DATA_API BlendShapeAnimationData();
  46. SCENE_DATA_API ~BlendShapeAnimationData() override = default;
  47. SCENE_DATA_API void CloneAttributesFrom(const IGraphObject* sourceObject) override;
  48. SCENE_DATA_API virtual void SetBlendShapeName(const char* name);
  49. SCENE_DATA_API virtual void AddKeyFrame(double keyFrameValue);
  50. SCENE_DATA_API virtual void ReserveKeyFrames(size_t count);
  51. SCENE_DATA_API virtual void SetTimeStepBetweenFrames(double timeStep);
  52. SCENE_DATA_API const char* GetBlendShapeName() const override;
  53. SCENE_DATA_API size_t GetKeyFrameCount() const override;
  54. SCENE_DATA_API double GetKeyFrame(size_t index) const override;
  55. SCENE_DATA_API double GetTimeStepBetweenFrames() const override;
  56. SCENE_DATA_API void GetDebugOutput(SceneAPI::Utilities::DebugOutput& output) const override;
  57. protected:
  58. AZStd::string m_blendShapeName;
  59. AZStd::vector<double> m_keyFrames;
  60. double m_timeStepBetweenFrames;
  61. };
  62. }
  63. }
  64. }