QuickTween 1.4.1
Loading...
Searching...
No Matches
QuickRotatorTween.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 "QuickRotatorTween.generated.h"
8
10
11DECLARE_DELEGATE_RetVal_OneParam(FRotator, FNativeRotatorGetter, UQuickRotatorTween*);
12DECLARE_DELEGATE_TwoParams( FNativeRotatorSetter, const FRotator&, UQuickRotatorTween* );
13
18UCLASS(BlueprintType)
19class QUICKTWEEN_API UQuickRotatorTween : public UQuickTweenBase
20{
21 GENERATED_BODY()
22private:
23 UQuickRotatorTween() = default;
24
28 void SetUp(
29 const UObject* worldContextObject,
30 FNativeRotatorGetter from,
31 FNativeRotatorGetter to,
32 bool bUseShortestPath,
33 FNativeRotatorSetter setter,
34 float duration = 1.0f,
35 float timeScale = 1.0f,
36 EEaseType easeType = EEaseType::Linear,
37 UCurveFloat* easeCurve = nullptr,
38 int32 loops = 1,
39 ELoopType loopType = ELoopType::Restart,
40 const FString& tweenTag = FString(),
41 bool bShouldAutoKill = true,
42 bool bShouldPlayWhilePaused = false,
43 bool bShouldAutoPlay = false)
44 {
45 From = MoveTemp(from);
46 To = MoveTemp(to);
47 Setter = MoveTemp(setter);
48 bShortestPath = bUseShortestPath;
50 worldContextObject,
51 duration,
52 timeScale,
53 easeType,
54 easeCurve,
55 loops,
56 loopType,
57 tweenTag,
58 bShouldAutoKill,
59 bShouldPlayWhilePaused,
60 bShouldAutoPlay);
61
62 }
63public:
64
86 static UQuickRotatorTween* CreateTween(
87 UObject* worldContextObject,
88 FNativeRotatorGetter from,
89 FNativeRotatorGetter to,
90 bool bUseShortestPath,
91 FNativeRotatorSetter setter,
92 float duration = 1.0f,
93 float timeScale = 1.0f,
94 EEaseType easeType = EEaseType::Linear,
95 UCurveFloat* easeCurve = nullptr,
96 int32 loops = 1,
97 ELoopType loopType = ELoopType::Restart,
98 const FString& tweenTag = FString(),
99 bool bShouldAutoKill = true,
100 bool bShouldPlayWhilePaused = false,
101 bool bShouldAutoPlay = false)
102 {
103 if (!from.IsBound() || !to.IsBound() || !setter.IsBound())
104 {
105 UE_LOG(LogQuickTweenBase, Warning, TEXT("UQuickRotatorTween::CreateTween: One or more delegate functions are not bound."));
106 return nullptr;
107 }
108
109 UQuickRotatorTween* tween = NewObject<UQuickRotatorTween>(worldContextObject);
110 tween->SetUp(
111 worldContextObject,
112 MoveTemp(from),
113 MoveTemp(to),
114 bUseShortestPath,
115 MoveTemp(setter),
116 duration,
117 timeScale,
118 easeType,
119 easeCurve,
120 loops,
121 loopType,
122 tweenTag,
123 bShouldAutoKill,
124 bShouldPlayWhilePaused,
125 bShouldAutoPlay);
126 return tween;
127 }
128
130 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
131 [[nodiscard]] FRotator GetCurrentValue() const { return CurrentValue; }
132
134 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
135 [[nodiscard]] FRotator GetStartValue() const { return StartValue.Get(FRotator::ZeroRotator); }
136
138 UFUNCTION(BlueprintPure, meta = (Keywords = "Tween"), Category = "Tween|Info")
139 [[nodiscard]] FRotator GetEndValue() const { return EndValue.Get(FRotator::ZeroRotator); }
140protected:
141 virtual void ApplyAlphaValue(float alpha) override;
142
143 virtual void HandleOnStart() override;
144
145 virtual void HandleOnComplete() override;
146
147private:
149 FNativeRotatorGetter From;
150
152 FNativeRotatorGetter To;
153
155 TOptional<FRotator> StartValue;
156
158 TOptional<FRotator> EndValue;
159
161 FNativeRotatorSetter Setter;
162
164 bool bShortestPath = true;
165
167 FRotator CurrentValue;
168};
Definition QuickRotatorTween.h:20
virtual void HandleOnStart() override
Definition QuickRotatorTween.cpp:23
FRotator GetEndValue() const
Definition QuickRotatorTween.h:139
static UQuickRotatorTween * CreateTween(UObject *worldContextObject, FNativeRotatorGetter from, FNativeRotatorGetter to, bool bUseShortestPath, FNativeRotatorSetter 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 QuickRotatorTween.h:86
virtual void HandleOnComplete() override
Definition QuickRotatorTween.cpp:50
virtual void ApplyAlphaValue(float alpha) override
Definition QuickRotatorTween.cpp:8
FRotator GetCurrentValue() const
Definition QuickRotatorTween.h:131
FRotator GetStartValue() const
Definition QuickRotatorTween.h:135
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