QuickTween 1.4.1
Loading...
Searching...
No Matches
QuickFloatTween.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 "QuickFloatTween.generated.h"
8
10DECLARE_DELEGATE_RetVal_OneParam(float, FNativeFloatGetter, UQuickFloatTween*);
11DECLARE_DELEGATE_TwoParams( FNativeFloatSetter, const float, UQuickFloatTween* );
16UCLASS(BlueprintType)
17class QUICKTWEEN_API UQuickFloatTween : public UQuickTweenBase
18{
19 GENERATED_BODY()
20private:
21 UQuickFloatTween() = default;
22
26 void SetUp(
27 const UObject* worldContextObject,
28 FNativeFloatGetter from,
29 FNativeFloatGetter to,
30 FNativeFloatSetter setter,
31 float duration = 1.0f,
32 float timeScale = 1.0f,
33 EEaseType easeType = EEaseType::Linear,
34 UCurveFloat* easeCurve = nullptr,
35 int32 loops = 1,
36 ELoopType loopType = ELoopType::Restart,
37 const FString& tweenTag = FString(),
38 bool bShouldAutoKill = true,
39 bool bShouldPlayWhilePaused = false,
40 bool bShouldAutoPlay = false)
41 {
42 From = MoveTemp(from);
43 To = MoveTemp(to);
44 Setter = MoveTemp(setter);
46 worldContextObject,
47 duration,
48 timeScale,
49 easeType,
50 easeCurve,
51 loops,
52 loopType,
53 tweenTag,
54 bShouldAutoKill,
55 bShouldPlayWhilePaused,
56 bShouldAutoPlay);
57 }
58
59public:
60
81 static UQuickFloatTween* CreateTween(
82 UObject* worldContextObject,
83 FNativeFloatGetter from,
84 FNativeFloatGetter to,
85 FNativeFloatSetter setter,
86 float duration = 1.0f,
87 float timeScale = 1.0f,
88 EEaseType easeType = EEaseType::Linear,
89 UCurveFloat* easeCurve = nullptr,
90 int32 loops = 1,
91 ELoopType loopType = ELoopType::Restart,
92 const FString& tweenTag = FString(),
93 bool bShouldAutoKill = true,
94 bool bShouldPlayWhilePaused = false,
95 bool bShouldAutoPlay = false)
96 {
97 if (!from.IsBound() || !to.IsBound() || !setter.IsBound())
98 {
99 UE_LOG(LogQuickTweenBase, Warning, TEXT("UQuickFloatTween::CreateTween: One or more delegate functions are not bound."));
100 return nullptr;
101 }
102
103 UQuickFloatTween* tween = NewObject<UQuickFloatTween>(worldContextObject);
104 tween->SetUp(
105 worldContextObject,
106 MoveTemp(from),
107 MoveTemp(to),
108 MoveTemp(setter),
109 duration,
110 timeScale,
111 easeType,
112 easeCurve,
113 loops,
114 loopType,
115 tweenTag,
116 bShouldAutoKill,
117 bShouldPlayWhilePaused,
118 bShouldAutoPlay);
119 return tween;
120 }
121
123 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category= "Tween|Info")
124 [[nodiscard]] float GetCurrentValue() const { return CurrentValue; }
125
127 UFUNCTION(BlueprintCallable, meta = (Keywords = "Tween"), Category= "Tween|Info")
128 [[nodiscard]] float GetStartValue() const { return StartValue.Get(0.0f); }
129
131 UFUNCTION(BlueprintCallable, meta = (Keywords = "Tween"), Category= "Tween|Info")
132 [[nodiscard]] float GetEndValue() const { return EndValue.Get(0.0f); }
133protected:
134 virtual void ApplyAlphaValue(float alpha) override;
135
136 virtual void HandleOnStart() override;
137
138 virtual void HandleOnComplete() override;
139
140private:
142 FNativeFloatGetter From;
143
145 FNativeFloatGetter To;
146
148 TOptional<float> StartValue;
149
151 TOptional<float> EndValue;
152
154 FNativeFloatSetter Setter;
155
157 float CurrentValue = 0.0f;
158};
Definition QuickFloatTween.h:18
virtual void HandleOnStart() override
Definition QuickFloatTween.cpp:20
float GetCurrentValue() const
Definition QuickFloatTween.h:124
virtual void HandleOnComplete() override
Definition QuickFloatTween.cpp:48
virtual void ApplyAlphaValue(float alpha) override
Definition QuickFloatTween.cpp:8
float GetEndValue() const
Definition QuickFloatTween.h:132
static UQuickFloatTween * CreateTween(UObject *worldContextObject, FNativeFloatGetter from, FNativeFloatGetter to, FNativeFloatSetter 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 QuickFloatTween.h:81
float GetStartValue() const
Definition QuickFloatTween.h:128
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