ScriptedEntityTweenerSystemComponent.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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/Component/TickBus.h>
  10. #include <AzCore/Component/Component.h>
  11. #include <AzCore/std/containers/set.h>
  12. #include <ScriptedEntityTweener/ScriptedEntityTweenerBus.h>
  13. #include "ScriptedEntityTweenerTask.h"
  14. namespace ScriptedEntityTweener
  15. {
  16. class ScriptedEntityTweenerSystemComponent
  17. : public AZ::Component
  18. , protected ScriptedEntityTweenerBus::Handler
  19. , protected AZ::TickBus::Handler
  20. {
  21. public:
  22. AZ_COMPONENT(ScriptedEntityTweenerSystemComponent, "{6AAC4396-2FAB-4273-BA80-2D25DC91A116}", AZ::Component);
  23. static void Reflect(AZ::ReflectContext* context);
  24. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
  25. static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
  26. static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
  27. static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
  28. protected:
  29. ////////////////////////////////////////////////////////////////////////
  30. // AZ::Component interface implementation
  31. void Init() override;
  32. void Activate() override;
  33. void Deactivate() override;
  34. ////////////////////////////////////////////////////////////////////////
  35. ////////////////////////////////////////////////////////////////////////
  36. // ScriptedEntityTweenerManagerBus interface implementation
  37. void AnimateEntity(const AZ::EntityId& entityId, const AnimationParameters& params) override;
  38. //! Sets optional animation parameters to be used on next AnimateEntityScript call, needed as lua implementation doesn't support > 13 args in non-debug builds
  39. void SetOptionalParams(float timeIntoAnimation,
  40. float duration,
  41. int easingMethod,
  42. int easingType,
  43. float delayTime,
  44. int timesToPlay,
  45. bool isFrom,
  46. bool isPlayingBackward,
  47. const AZ::Uuid& animationId,
  48. int timelineId,
  49. int onCompleteCallbackId,
  50. int onUpdateCallbackId,
  51. int onLoopCallbackId) override;
  52. //! Script exposed version of the AnimateEntity call
  53. void AnimateEntityScript(const AZ::EntityId& entityId,
  54. const AZStd::string& componentName,
  55. const AZStd::string& virtualPropertyName,
  56. const AZStd::any& paramTarget) override;
  57. void Stop(int timelineId, const AZ::EntityId& entityId) override;
  58. void Pause(int timelineId, const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName) override;
  59. void Resume(int timelineId, const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName) override;
  60. void SetPlayDirectionReversed(int timelineId, const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName, bool rewind) override;
  61. void SetSpeed(int timelineId, const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName, float speed) override;
  62. void SetInitialValue(const AZ::Uuid& timelineId, const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName, const AZStd::any& initialValue) override;
  63. AZStd::any GetVirtualPropertyValue(const AZ::EntityId& entityId, const AZStd::string& componentName, const AZStd::string& virtualPropertyName) override;
  64. void Reset() override;
  65. ////////////////////////////////////////////////////////////////////////
  66. ////////////////////////////////////////////////////////////////////////
  67. // AZ::TickBus
  68. void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
  69. int GetTickOrder() override;
  70. ////////////////////////////////////////////////////////////////////////
  71. private:
  72. AZStd::set<ScriptedEntityTweenerTask> m_animationTasks;
  73. //! Used by AnimateEntityScript, setup by SetOptionalParams
  74. AnimationParameters m_tempParams;
  75. };
  76. }