QuickTween 1.4.1
Loading...
Searching...
No Matches
QuickVector2DTween.h
1// Copyright 2025 Juan Pablo Hernandez Mosti. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "QuickTweenBase.h"
7#include "QuickVector2DTween.generated.h"
8
10DECLARE_DELEGATE_RetVal_OneParam(FVector2D, FNativeVector2DGetter, UQuickVector2DTween*);
11DECLARE_DELEGATE_TwoParams( FNativeVector2DSetter, const FVector2D&, UQuickVector2DTween* );
12
17UCLASS(BlueprintType)
18class QUICKTWEEN_API UQuickVector2DTween : public UQuickTweenBase
19{
20 GENERATED_BODY()
21private:
22 UQuickVector2DTween() = default;
23
27 void SetUp(
28 const UObject* worldContextObject,
29 FNativeVector2DGetter from,
30 FNativeVector2DGetter to,
31 FNativeVector2DSetter setter,
32 float duration = 1.0f,
33 float timeScale = 1.0f,
34 EEaseType easeType = EEaseType::Linear,
35 UCurveFloat* easeCurve = nullptr,
36 int32 loops = 1,
37 ELoopType loopType = ELoopType::Restart,
38 const FString& tweenTag = FString(),
39 bool bShouldAutoKill = true,
40 bool bShouldPlayWhilePaused = false,
41 bool bShouldAutoPlay = false)
42 {
43 From = MoveTemp(from);
44 To = MoveTemp(to);
45 Setter = MoveTemp(setter);
47 worldContextObject,
48 duration,
49 timeScale,
50 easeType,
51 easeCurve,
52 loops,
53 loopType,
54 tweenTag,
55 bShouldAutoKill,
56 bShouldPlayWhilePaused,
57 bShouldAutoPlay);
58
59 }
60public:
61
82 static UQuickVector2DTween* CreateTween(
83 UObject* worldContextObject,
84 FNativeVector2DGetter from,
85 FNativeVector2DGetter to,
86 FNativeVector2DSetter setter,
87 float duration = 1.0f,
88 float timeScale = 1.0f,
89 EEaseType easeType = EEaseType::Linear,
90 UCurveFloat* easeCurve = nullptr,
91 int32 loops = 1,
92 ELoopType loopType = ELoopType::Restart,
93 const FString& tweenTag = FString(),
94 bool bShouldAutoKill = true,
95 bool bShouldPlayWhilePaused = false,
96 bool bShouldAutoPlay = false)
97 {
98 if (!from.IsBound() || !to.IsBound() || !setter.IsBound())
99 {
100 UE_LOG(LogQuickTweenBase, Warning, TEXT("UQuickVector2DTween::CreateTween: One or more delegate functions are not bound."));
101 return nullptr;
102 }
103
104 UQuickVector2DTween* tween = NewObject<UQuickVector2DTween>(worldContextObject);
105 tween->SetUp(
106 worldContextObject,
107 MoveTemp(from),
108 MoveTemp(to),
109 MoveTemp(setter),
110 duration,
111 timeScale,
112 easeType,
113 easeCurve,
114 loops,
115 loopType,
116 tweenTag,
117 bShouldAutoKill,
118 bShouldPlayWhilePaused,
119 bShouldAutoPlay);
120 return tween;
121 }
122
124 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
125 [[nodiscard]] FVector2D GetCurrentValue() const { return CurrentValue; }
126
128 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
129 [[nodiscard]] FVector2D GetStartValue() const { return StartValue.Get(FVector2D::ZeroVector); }
130
132 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
133 [[nodiscard]] FVector2D GetEndValue() const { return EndValue.Get(FVector2D::ZeroVector); }
134protected:
135 virtual void ApplyAlphaValue(float alpha) override;
136
137 virtual void HandleOnStart() override;
138
139 virtual void HandleOnComplete() override;
140
141private:
143 FNativeVector2DGetter From;
144
146 FNativeVector2DGetter To;
147
149 TOptional<FVector2D> StartValue;
150
152 TOptional<FVector2D> EndValue;
153
155 FNativeVector2DSetter Setter;
156
158 FVector2D CurrentValue;
159};
Definition QuickTweenBase.h:26
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
Definition QuickVector2DTween.h:19
virtual void ApplyAlphaValue(float alpha) override
Definition QuickVector2DTween.cpp:8
FVector2D GetCurrentValue() const
Definition QuickVector2DTween.h:125
virtual void HandleOnStart() override
Definition QuickVector2DTween.cpp:21
FVector2D GetStartValue() const
Definition QuickVector2DTween.h:129
virtual void HandleOnComplete() override
Definition QuickVector2DTween.cpp:49
static UQuickVector2DTween * CreateTween(UObject *worldContextObject, FNativeVector2DGetter from, FNativeVector2DGetter to, FNativeVector2DSetter setter, float duration=1.0f, float timeScale=1.0f, EEaseType easeType=EEaseType::Linear, UCurveFloat *easeCurve=nullptr, int32 loops=1, ELoopType loopType=ELoopType::Restart, const FString &tweenTag=FString(), bool bShouldAutoKill=true, bool bShouldPlayWhilePaused=false, bool bShouldAutoPlay=false)
Definition QuickVector2DTween.h:82
FVector2D GetEndValue() const
Definition QuickVector2DTween.h:133