QuickTween 1.4.1
Loading...
Searching...
No Matches
QuickIntTween.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 "QuickIntTween.generated.h"
8
10DECLARE_DELEGATE_RetVal_OneParam(int32, FNativeIntGetter, UQuickIntTween*);
11DECLARE_DELEGATE_TwoParams( FNativeIntSetter, const int32, UQuickIntTween* );
16UCLASS(BlueprintType)
17class QUICKTWEEN_API UQuickIntTween : public UQuickTweenBase
18{
19 GENERATED_BODY()
20private:
21 UQuickIntTween() = default;
22
26 void SetUp(
27 const UObject* worldContextObject,
28 FNativeIntGetter from,
29 FNativeIntGetter to,
30 FNativeIntSetter 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 UQuickIntTween* CreateTween(
82 UObject* worldContextObject,
83 FNativeIntGetter from,
84 FNativeIntGetter to,
85 FNativeIntSetter 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("UQuickIntTween::CreateTween: One or more delegate functions are not bound."));
100 return nullptr;
101 }
102
103 UQuickIntTween* tween = NewObject<UQuickIntTween>(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]] int32 GetCurrentValue() const { return CurrentValue; }
125
127 UFUNCTION(BlueprintCallable, meta = (Keywords = "Tween"), Category= "Tween|Info")
128 [[nodiscard]] int32 GetStartValue() const { return StartValue.Get(0); }
129
131 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category= "Tween|Info")
132 [[nodiscard]] int32 GetEndValue() const { return EndValue.Get(0); }
133protected:
134 virtual void ApplyAlphaValue(float alpha) override;
135
136 virtual void HandleOnStart() override;
137
138 virtual void HandleOnComplete() override;
139
140private:
142 FNativeIntGetter From;
143
145 FNativeIntGetter To;
146
148 TOptional<int32> StartValue;
149
151 TOptional<int32> EndValue;
152
154 FNativeIntSetter Setter;
155
157 int32 CurrentValue = 0;
158};
Definition QuickIntTween.h:18
virtual void HandleOnComplete() override
Definition QuickIntTween.cpp:48
int32 GetEndValue() const
Definition QuickIntTween.h:132
virtual void HandleOnStart() override
Definition QuickIntTween.cpp:21
int32 GetCurrentValue() const
Definition QuickIntTween.h:124
int32 GetStartValue() const
Definition QuickIntTween.h:128
static UQuickIntTween * CreateTween(UObject *worldContextObject, FNativeIntGetter from, FNativeIntGetter to, FNativeIntSetter 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 QuickIntTween.h:81
virtual void ApplyAlphaValue(float alpha) override
Definition QuickIntTween.cpp:8
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