5#include "CoreMinimal.h"
6#include "CommonValues.h"
7#include "QuickTweenable.h"
8#include "../Utils/EaseType.h"
9#include "../Utils/LoopType.h"
10#include "QuickTweenBase.generated.h"
15DEFINE_LOG_CATEGORY_STATIC(LogQuickTweenBase, Log, All);
17DECLARE_MULTICAST_DELEGATE_OneParam(FNativeDelegateTween,
UQuickTweenBase*);
18DECLARE_DYNAMIC_DELEGATE_OneParam(FDynamicDelegateTween,
UQuickTweenBase*, Tween);
24UCLASS(Blueprintable, BlueprintType, Abstract)
30#pragma region Tween Creation
46 const UObject* worldContextObject,
50 UCurveFloat* easeCurve,
53 const FString& tweenTag = FString(),
54 bool bShouldAutoKill =
true,
55 bool bShouldPlayWhilePaused =
false,
56 bool bShouldAutoPlay =
false);
62#pragma region Tween Control
65 virtual void Play()
override;
67 virtual void Pause()
override;
69 virtual void Reverse()
override;
71 virtual void Restart()
override;
73 virtual void Complete(
bool bSnapToEnd =
true)
override;
75 virtual void Kill()
override;
77 virtual void Update(
float deltaTime)
override;
83#pragma region Tween State Queries
86 [[nodiscard]]
virtual bool GetIsPendingKill()
const override {
return TweenState == EQuickTweenState::Kill; }
92 if (Loops == INFINITE_LOOPS)
94 return TNumericLimits<float>::Max();
99 [[nodiscard]]
virtual float GetElapsedTime()
const override {
return ElapsedTime; }
101 [[nodiscard]]
virtual float GetTimeScale()
const override {
return TimeScale; }
103 [[nodiscard]]
virtual bool GetIsPlaying()
const override {
return TweenState == EQuickTweenState::Play; }
105 [[nodiscard]]
virtual bool GetIsCompleted()
const override {
return TweenState == EQuickTweenState::Complete; }
107 [[nodiscard]]
virtual bool GetIsReversed()
const override {
return bIsReversed; }
109 [[nodiscard]]
virtual EEaseType
GetEaseType()
const override {
return EaseType; }
111 [[nodiscard]]
virtual UCurveFloat*
GetEaseCurve()
const override {
return EaseCurve; }
113 [[nodiscard]]
virtual int32
GetLoops()
const override{
return Loops; }
115 [[nodiscard]]
virtual ELoopType
GetLoopType()
const override {
return LoopType; }
117 [[nodiscard]]
virtual FString
GetTweenTag()
const override {
return TweenTag; }
119 [[nodiscard]]
virtual int32
GetCurrentLoop()
const override {
return CurrentLoop; }
121 [[nodiscard]]
virtual bool GetAutoKill()
const override {
return bAutoKill; }
125 [[nodiscard]]
bool GetSnapToEndOnComplete()
const {
return bSnapToEndOnComplete; }
128 bool InstigatorIsOwner(
const UQuickTweenable* instigator)
const {
return instigator == Owner; }
130 bool HasOwner()
const {
return Owner !=
nullptr; }
137 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
145 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
153 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
161 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
169 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
176 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
183 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
190 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
197 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
204 UFUNCTION(BlueprintCallable, meta = (Keywords =
"Tween | Event"), Category =
"Tween|Info")
254 struct FQuickTweenStateResult
269 FQuickTweenStateResult ComputeTweenState(
float time)
const;
279 bool RequestStateTransition(EQuickTweenState newState);
282 EQuickTweenState TweenState = EQuickTweenState::Idle;
285 float ElapsedTime = 0.0f;
288 float Duration = 0.0f;
291 float TimeScale = 1.0f;
294 bool bIsReversed =
false;
297 bool bWasActive =
false;
300 bool bSnapToEndOnComplete =
true;
303 bool bTriggerEvents =
true;
306 EEaseType EaseType = EEaseType::Linear;
310 UCurveFloat* EaseCurve =
nullptr;
313 int32 CurrentLoop = 0;
319 ELoopType LoopType = ELoopType::Restart;
322 FString TweenTag = FString();
329 bool bAutoKill = true;
332 bool bPlayWhilePaused = false;
335 const UObject* WorldContextObject =
nullptr;
Definition QuickTweenBase.h:26
void AssignOnStartEvent(FDynamicDelegateTween callback)
Definition QuickTweenBase.cpp:308
virtual FString GetTweenTag() const override
Definition QuickTweenBase.h:117
virtual void Reverse() override
Definition QuickTweenBase.cpp:226
void RemoveAllOnKilledEvent(const UObject *object)
Definition QuickTweenBase.cpp:348
virtual int32 GetCurrentLoop() const override
Definition QuickTweenBase.h:119
virtual int32 GetLoops() const override
Definition QuickTweenBase.h:113
virtual bool GetIsPendingKill() const override
Definition QuickTweenBase.h:86
FNativeDelegateTween OnComplete
Definition QuickTweenBase.h:214
virtual bool GetShouldPlayWhilePaused() const override
Definition QuickTweenBase.h:123
virtual void SetOwner(UQuickTweenable *owner) override
Definition QuickTweenBase.h:58
virtual bool GetIsCompleted() const override
Definition QuickTweenBase.h:105
void RemoveAllOnStartEvent(const UObject *object)
Definition QuickTweenBase.cpp:333
virtual void Evaluate(const FQuickTweenEvaluatePayload &payload, const UQuickTweenable *instigator) override
Definition QuickTweenBase.cpp:108
virtual float GetElapsedTime() const override
Definition QuickTweenBase.h:99
virtual EEaseType GetEaseType() const override
Definition QuickTweenBase.h:109
FNativeDelegateTween OnKilled
Definition QuickTweenBase.h:217
FNativeDelegateTween OnUpdate
Definition QuickTweenBase.h:211
virtual void HandleOnStart()
Definition QuickTweenBase.cpp:282
void AssignOnKilledEvent(FDynamicDelegateTween callback)
Definition QuickTweenBase.cpp:323
void RemoveAllOnLoopEvent(const UObject *object)
Definition QuickTweenBase.cpp:353
void AssignOnUpdateEvent(FDynamicDelegateTween callback)
Definition QuickTweenBase.cpp:313
virtual void Play() override
Definition QuickTweenBase.cpp:203
virtual void HandleOnKill()
Definition QuickTweenBase.cpp:300
FNativeDelegateTween OnStart
Definition QuickTweenBase.h:208
virtual void ApplyAlphaValue(float alpha)
Definition QuickTweenBase.cpp:198
virtual void Complete(bool bSnapToEnd=true) override
Definition QuickTweenBase.cpp:240
FNativeDelegateTween OnLoop
Definition QuickTweenBase.h:220
void AssignOnLoopEvent(FDynamicDelegateTween callback)
Definition QuickTweenBase.cpp:328
virtual UCurveFloat * GetEaseCurve() const override
Definition QuickTweenBase.h:111
virtual void Restart() override
Definition QuickTweenBase.cpp:233
virtual void Kill() override
Definition QuickTweenBase.cpp:258
virtual void Update(float deltaTime) override
Definition QuickTweenBase.cpp:65
virtual ELoopType GetLoopType() const override
Definition QuickTweenBase.h:115
virtual void HandleOnComplete()
Definition QuickTweenBase.cpp:290
virtual float GetTimeScale() const override
Definition QuickTweenBase.h:101
virtual bool GetAutoKill() const override
Definition QuickTweenBase.h:121
virtual bool GetIsPlaying() const override
Definition QuickTweenBase.h:103
void RemoveAllOnCompleteEvent(const UObject *object)
Definition QuickTweenBase.cpp:343
virtual void Pause() override
Definition QuickTweenBase.cpp:219
void SetUp(const UObject *worldContextObject, float duration, float timeScale, EEaseType easeType, UCurveFloat *easeCurve, int32 loops, ELoopType loopType, const FString &tweenTag=FString(), bool bShouldAutoKill=true, bool bShouldPlayWhilePaused=false, bool bShouldAutoPlay=false)
Definition QuickTweenBase.cpp:20
virtual bool GetIsReversed() const override
Definition QuickTweenBase.h:107
void RemoveAllOnUpdateEvent(const UObject *object)
Definition QuickTweenBase.cpp:338
virtual float GetLoopDuration() const override
Definition QuickTweenBase.h:88
virtual float GetTotalDuration() const override
Definition QuickTweenBase.h:90
void AssignOnCompleteEvent(FDynamicDelegateTween callback)
Definition QuickTweenBase.cpp:318
Definition QuickTweenSequence.h:49
Definition QuickTweenable.h:24
Definition CommonValues.h:52