Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
HitMeshPulseTween.h
이 파일의 문서화 페이지로 가기
1#pragma once
2
3#include "CK_UE.h"
4#include "Components/SkeletalMeshComponent.h"
6#include "TypeTween.h"
7
8
11{
12 static FORCEINLINE bool IsPlayable(const FHitMeshPulseData& PulseData)
13 {
14 return PulseData.bEnabled && PulseData.Duration > 0.0f;
15 }
16
17 static void Execute(TypeTween::ITween<FVector>& Tween, const FHitMeshPulseData& PulseData, USkeletalMeshComponent* MeshComponent, const FVector& OriginalScale)
18 {
19 const FVector PulseScale = OriginalScale * PulseData.ScaleMultiplier;
20 const bool bPingPong = PulseData.Mode == EHitPulseMode::PingPong;
21 const bool bCustomCurve = PulseData.Mode == EHitPulseMode::CustomCurve;
22 const bool bStartFromOriginal = bPingPong || bCustomCurve;
23
24 // 왕복은 한 사이클이 Duration의 2배라 절반만 넣고, 커스텀 곡선은 전체 시간을 사용한다.
25 Tween
26 .From(bStartFromOriginal ? OriginalScale : PulseScale)
27 .To(bStartFromOriginal ? PulseScale : OriginalScale)
28 .Duration(bPingPong ? PulseData.Duration * 0.5f : PulseData.Duration)
29 .Ease(PulseData.Ease)
30 .OnUpdate([WeakMesh = TWeakObjectPtr<USkeletalMeshComponent>(MeshComponent)](const FVector& NewScale)
31 {
32 if (WeakMesh.IsValid() == false)
33 {
34 return;
35 }
36
37 WeakMesh->SetRelativeScale3D(NewScale);
38 });
39
40 if (bCustomCurve)
41 {
42 Tween.CustomEaseCurve(PulseData.CustomCurve);
43 }
44
45 if (bPingPong)
46 {
47 Tween.PingPong().ReverseDelay(PulseData.PeakHoldTime);
48 }
49 }
50};
Definition CharacterControlData.h:43
EHitPulseMode Mode
Definition CharacterControlData.h:52
uint8 bEnabled
Definition CharacterControlData.h:48
FVector ScaleMultiplier
Definition CharacterControlData.h:58
float PeakHoldTime
Definition CharacterControlData.h:66
FRuntimeFloatCurve CustomCurve
Definition CharacterControlData.h:76
float Duration
Definition CharacterControlData.h:62
ETweenEase Ease
Definition CharacterControlData.h:70
Definition HitMeshPulseTween.h:11
static void Execute(TypeTween::ITween< FVector > &Tween, const FHitMeshPulseData &PulseData, USkeletalMeshComponent *MeshComponent, const FVector &OriginalScale)
Definition HitMeshPulseTween.h:17
static FORCEINLINE bool IsPlayable(const FHitMeshPulseData &PulseData)
Definition HitMeshPulseTween.h:12