13 #include "Kismet/BlueprintAsyncActionBase.h" 32 UCLASS(BlueprintType, Blueprintable)
51 template <
typename TDerivedPtr,
typename TEventParam>
53 TEventParam&& eventImplementParam) {
54 SetTweenEventParam(eventParam);
55 static_cast<TDerivedPtr
>(
this)->SetEventParam_Implementation(Forward<TEventParam>(eventImplementParam));
58 template <
typename TDerivedPtr,
typename TEventParam>
60 return static_cast<TDerivedPtr
>(
this)->GetEventParam_Implementation();
65 UPROPERTY(BlueprintAssignable, Category =
"HorizonPlugin|TweenEvent")
66 FOnHorizonTweenEvent OnTweenStart;
67 UPROPERTY(BlueprintAssignable, Category = "HorizonPlugin|TweenEvent")
68 FOnHorizonTweenEvent OnTweenUpdate;
69 UPROPERTY(BlueprintAssignable, Category = "HorizonPlugin|TweenEvent")
70 FOnHorizonTweenEvent OnTweenLoop;
71 UPROPERTY(BlueprintAssignable, Category = "HorizonPlugin|TweenEvent")
72 FOnHorizonTweenEvent OnTweenFinished;
75 FOnHorizonTweenEventNative OnTweenStartNative;
76 FOnHorizonTweenEventNative OnTweenUpdateNative;
77 FOnHorizonTweenEventNative OnTweenLoopNative;
78 FOnHorizonTweenEventNative OnTweenFinishedNative;
81 virtual
void TweenStart();
82 virtual
void TweenUpdate();
83 virtual
void TweenLoop();
84 virtual
void TweenFinished();
92 virtual
void Processing(
float DeltaTime);
95 bool IsFinished() {
return (ETweenEvent::Finished == EventStatus); };
98 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
99 float GetCurrentDuration() {
return CurrentDuration; };
100 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
101 float GetCurrentAlpha();
102 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
103 float GetCurrentNumOfLoop() {
return CurrentNumOfLoop; };
106 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
112 template <
typename THorizonTweenEventParameter,
typename TReturn>
114 TFunction<TReturn()> getDefaultValue) {
117 if (paramImpl.TweenStartList.Num() == 0) {
118 result = getDefaultValue();
121 int currentNumOfLoop = GetCurrentNumOfLoop();
122 if (paramImpl.bLoopTweenList) {
123 currentNumOfLoop = currentNumOfLoop % paramImpl.TweenStartList.Num();
126 if (currentNumOfLoop < paramImpl.TweenStartList.Num()) {
127 result = paramImpl.TweenStartList[currentNumOfLoop];
130 result = paramImpl.TweenStartList.Last();
138 template <
typename THorizonTweenEventParameter,
typename TReturn>
140 TFunction<TReturn()> getDefaultValue) {
143 if (paramImpl.TweenEndList.Num() == 0) {
144 result = getDefaultValue();
147 int currentNumOfLoop = GetCurrentNumOfLoop();
148 if (paramImpl.bLoopTweenList) {
149 currentNumOfLoop = currentNumOfLoop % paramImpl.TweenEndList.Num();
152 if (currentNumOfLoop < paramImpl.TweenEndList.Num()) {
153 result = paramImpl.TweenEndList[currentNumOfLoop];
156 result = paramImpl.TweenEndList.Last();
165 template <
typename THorizonTweenEventParameter,
typename TReturn>
167 TFunction<TReturn()> getDefaultValue) {
168 auto currentAlpha = GetCurrentAlpha();
169 if (paramImpl.bUseCustomCurve)
171 currentAlpha = paramImpl.CustomTweenCurve.Eval(GetCurrentAlpha());
175 auto tweenStart = GetTweenStart<decltype(paramImpl), TReturn>(paramImpl,
179 auto tweenEnd = GetTweenEnd<decltype(paramImpl), TReturn>(paramImpl,
182 auto& tweenEventParam = GetTweenEventParam();
183 auto result = UHorizonTweenFunctionLibrary::Lerp<TReturn>(tweenEventParam.LerpMode,
184 tweenStart, tweenEnd, currentAlpha, tweenEventParam.LerpModeExtraParameterList);
188 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
190 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
192 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
193 virtual void Pause();
194 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
195 virtual void Resume();
201 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
202 virtual void Finish(
bool bTweenToEnd);
204 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
205 void SetFreeze(
bool b) {bFreeze = b;};
206 UFUNCTION(BlueprintCallable, Category =
"HorizonPlugin|TweenEvent")
207 bool IsFreeze() {
return bFreeze;}
218 TWeakObjectPtr<AHorizonTweenSystem> TweenSystemWeakPtr;
220 float DelayCurrentDuration;
222 float CurrentDuration;
223 int CurrentNumOfLoop;
Definition: HorizonTweenSystem.h:20
Definition: HorizonTweenEvent.h:33
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHorizonTweenEvent, UHorizonTweenEvent *, pTweenEvent)
TReturn GetTweenLerpValue(const THorizonTweenEventParameter ¶mImpl, TFunction< TReturn()> getDefaultValue)
Definition: HorizonTweenEvent.h:166
Definition: HorizonTweenEventParameters.h:13
const TEventParam & GetEventParam()
Definition: HorizonTweenEvent.h:59
bool IsPlaying()
Definition: HorizonTweenEvent.h:96
#define HORIZONTWEEN_API
Definition: Definitions.HorizonTween.h:40
bool IsFinished()
Definition: HorizonTweenEvent.h:95
void SetTweenEventParam(const FHorizonTweenEventParameters ¶m)
Definition: HorizonTweenEvent.h:105
ETweenEvent
Definition: HorizonTweenEvent.h:42
FORCEINLINE void InitEvent(const FHorizonTweenEventParameters &eventParam, TEventParam &&eventImplementParam)
Definition: HorizonTweenEvent.h:52
DECLARE_MULTICAST_DELEGATE_OneParam(FOnHorizonTweenEventNative, UHorizonTweenEvent *)
TReturn GetTweenEnd(const THorizonTweenEventParameter ¶mImpl, TFunction< TReturn()> getDefaultValue)
Definition: HorizonTweenEvent.h:139
TReturn GetTweenStart(const THorizonTweenEventParameter ¶mImpl, TFunction< TReturn()> getDefaultValue)
Definition: HorizonTweenEvent.h:113