38{
39 Super::NotifyTick(MeshComp, Animation, FrameDeltaTime, EventReference);
40
41 if (IsValid(MeshComp) == false)
42 {
43 return;
44 }
45
46 FEffectSyncState* SyncState =
SyncStateMap.Find(MeshComp);
47
48 if (SyncState == nullptr)
49 {
50 return;
51 }
52
53 UFXSystemComponent* FXComponent = GetSpawnedEffect(MeshComp);
54
55 if (IsValid(FXComponent) == false)
56 {
57 return;
58 }
59
60 SyncState->Elapsed += FrameDeltaTime;
61
62
63 const float Progress = SyncState->Duration < KINDA_SMALL_NUMBER ? 1.0f : FMath::Clamp(SyncState->Elapsed / SyncState->Duration, 0.0f, 1.0f);
64
65 const float LocationAlpha = FMath::Clamp(
LocationSyncCurve.GetRichCurveConst()->Eval(Progress, 1.0f), 0.0f, 1.0f);
66 const float RotationAlpha = FMath::Clamp(
RotationSyncCurve.GetRichCurveConst()->Eval(Progress, 1.0f), 0.0f, 1.0f);
67
68
70 SyncState->Location = FMath::Lerp(SyncState->Location, SlotTransform.GetLocation(), LocationAlpha);
71 SyncState->Rotation = FQuat::Slerp(SyncState->Rotation, SlotTransform.GetRotation(), RotationAlpha).GetNormalized();
72
73 FXComponent->SetWorldLocationAndRotation(SyncState->Location, SyncState->Rotation);
74}
FRuntimeFloatCurve LocationSyncCurve
Definition AnimNotifyState_AttachedNiagaraEffect.h:37
FRuntimeFloatCurve RotationSyncCurve
Definition AnimNotifyState_AttachedNiagaraEffect.h:40