Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
UAT_MoveToLocationCurve 클래스 참조

#include <AT_MoveToLocationCurve.h>

UAT_MoveToLocationCurve에 대한 상속 다이어그램 :
Inheritance graph
UAT_MoveToLocationCurve에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 UAT_MoveToLocationCurve ()
 
virtual void Activate () override
 
virtual void TickTask (float DeltaTime) override
 
virtual void OnDestroy (bool bInOwnerFinished) override
 

정적 Public 멤버 함수

static UAT_MoveToLocationCurveMoveToLocationCurve (UGameplayAbility *OwningAbility, UCurveFloat *InProgressCurve, const FVector &InTargetLocation, float InNormalizationFactor, float InDuration)
 

Public 속성

FMoveToLocationCurveSignature OnCompleted
 

Protected 멤버 함수

void FinishMove ()
 

Protected 속성

TObjectPtr< UCurveFloat > ProgressCurve
 
TObjectPtr< ACharacter > OwnerCharacter
 
TObjectPtr< UCharacterMovementComponent > MovementComponent
 
FVector StartLocation = FVector::ZeroVector
 
FVector TargetLocation = FVector::ZeroVector
 
FVector MoveDirection = FVector::ZeroVector
 
float Elapsed = 0.0f
 
float MovedDistance = 0.0f
 
float TargetDistance = 0.0f
 
float TaskDuration = 0.0f
 
float NormalizationFactor = 0.0f
 
bool bOriginalUseControllerRotationYaw = false
 
bool bOriginalOrientRotationToMovement = false
 
bool bOriginalUseControllerDesiredRotation = false
 

생성자 & 소멸자 문서화

◆ UAT_MoveToLocationCurve()

UAT_MoveToLocationCurve::UAT_MoveToLocationCurve ( )
11{
12 bTickingTask = true;
13}

멤버 함수 문서화

◆ Activate()

void UAT_MoveToLocationCurve::Activate ( )
overridevirtual
28{
29 Super::Activate();
30
31 OwnerCharacter = Cast<ACharacter>(GetAvatarActor());
32
33 if (OwnerCharacter == nullptr)
34 {
35 FinishMove();
36 return;
37 }
38
39 MovementComponent = OwnerCharacter->GetCharacterMovement();
40 StartLocation = OwnerCharacter->GetActorLocation();
41 const FVector MoveVector = TargetLocation - StartLocation;
42 TargetDistance = MoveVector.Size();
43 MoveDirection = TargetDistance > KINDA_SMALL_NUMBER ? MoveVector / TargetDistance : FVector::ZeroVector;
44
46 {
47 bOriginalOrientRotationToMovement = MovementComponent->bOrientRotationToMovement;
48 bOriginalUseControllerDesiredRotation = MovementComponent->bUseControllerDesiredRotation;
49 MovementComponent->bOrientRotationToMovement = false;
50 MovementComponent->bUseControllerDesiredRotation = false;
51 MovementComponent->Velocity = FVector::ZeroVector;
52 }
53
54 bOriginalUseControllerRotationYaw = OwnerCharacter->bUseControllerRotationYaw;
55 OwnerCharacter->bUseControllerRotationYaw = false;
56
57 if (TaskDuration <= KINDA_SMALL_NUMBER || TargetDistance <= KINDA_SMALL_NUMBER)
58 {
59 FinishMove();
60 }
61}
bool bOriginalOrientRotationToMovement
Definition AT_MoveToLocationCurve.h:59
bool bOriginalUseControllerRotationYaw
Definition AT_MoveToLocationCurve.h:58
void FinishMove()
Definition AT_MoveToLocationCurve.cpp:120
FVector MoveDirection
Definition AT_MoveToLocationCurve.h:50
FVector StartLocation
Definition AT_MoveToLocationCurve.h:48
TObjectPtr< UCharacterMovementComponent > MovementComponent
Definition AT_MoveToLocationCurve.h:45
bool bOriginalUseControllerDesiredRotation
Definition AT_MoveToLocationCurve.h:60
TObjectPtr< ACharacter > OwnerCharacter
Definition AT_MoveToLocationCurve.h:42
float TargetDistance
Definition AT_MoveToLocationCurve.h:54
FVector TargetLocation
Definition AT_MoveToLocationCurve.h:49
float TaskDuration
Definition AT_MoveToLocationCurve.h:55
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ FinishMove()

void UAT_MoveToLocationCurve::FinishMove ( )
protected
121{
122 if (OwnerCharacter != nullptr)
123 {
124 OwnerCharacter->SetActorLocation(TargetLocation, false);
125 }
126
127 if (ShouldBroadcastAbilityTaskDelegates())
128 {
129 OnCompleted.Broadcast();
130 }
131
132 EndTask();
133}
FMoveToLocationCurveSignature OnCompleted
Definition AT_MoveToLocationCurve.h:32
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ MoveToLocationCurve()

UAT_MoveToLocationCurve * UAT_MoveToLocationCurve::MoveToLocationCurve ( UGameplayAbility *  OwningAbility,
UCurveFloat *  InProgressCurve,
const FVector &  InTargetLocation,
float  InNormalizationFactor,
float  InDuration 
)
static
17{
18 UAT_MoveToLocationCurve* NewTask = NewAbilityTask<UAT_MoveToLocationCurve>(OwningAbility);
19 NewTask->ProgressCurve = InProgressCurve;
20 NewTask->TargetLocation = InTargetLocation;
21 NewTask->NormalizationFactor = InNormalizationFactor;
22 NewTask->TaskDuration = InDuration;
23 return NewTask;
24}
Definition AT_MoveToLocationCurve.h:16
float NormalizationFactor
Definition AT_MoveToLocationCurve.h:56
TObjectPtr< UCurveFloat > ProgressCurve
Definition AT_MoveToLocationCurve.h:39
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnDestroy()

void UAT_MoveToLocationCurve::OnDestroy ( bool  bInOwnerFinished)
overridevirtual
103{
104 if (OwnerCharacter != nullptr)
105 {
106 OwnerCharacter->bUseControllerRotationYaw = bOriginalUseControllerRotationYaw;
107 }
108
109 if (MovementComponent != nullptr)
110 {
111 MovementComponent->bOrientRotationToMovement = bOriginalOrientRotationToMovement;
112 MovementComponent->bUseControllerDesiredRotation = bOriginalUseControllerDesiredRotation;
113 MovementComponent->Velocity = FVector::ZeroVector;
114 }
115
116 Super::OnDestroy(bInOwnerFinished);
117}

◆ TickTask()

void UAT_MoveToLocationCurve::TickTask ( float  DeltaTime)
overridevirtual
65{
66 Super::TickTask(DeltaTime);
67
68 if (OwnerCharacter == nullptr)
69 {
70 FinishMove();
71 return;
72 }
73
74 if (ProgressCurve == nullptr || NormalizationFactor <= KINDA_SMALL_NUMBER)
75 {
76 const float Alpha = FMath::Clamp((Elapsed + DeltaTime) / TaskDuration, 0.0f, 1.0f);
78 OwnerCharacter->SetActorLocation(FMath::Lerp(StartLocation, TargetLocation, Alpha), false);
79 Elapsed = FMath::Clamp(Elapsed + DeltaTime, 0.0f, TaskDuration);
80 }
81 else
82 {
83 Elapsed = FMath::Clamp(Elapsed + DeltaTime, 0.0f, TaskDuration);
84 const float CurveAlpha = Elapsed / TaskDuration;
85 const float MoveSpeed = ProgressCurve->GetFloatValue(CurveAlpha) * NormalizationFactor;
86 MovedDistance = FMath::Min(MovedDistance + MoveSpeed * DeltaTime, TargetDistance);
87 OwnerCharacter->SetActorLocation(StartLocation + MoveDirection * MovedDistance, false);
88 }
89
91 {
92 MovementComponent->Velocity = FVector::ZeroVector;
93 }
94
96 {
97 FinishMove();
98 }
99}
float Elapsed
Definition AT_MoveToLocationCurve.h:52
float MovedDistance
Definition AT_MoveToLocationCurve.h:53
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ bOriginalOrientRotationToMovement

bool UAT_MoveToLocationCurve::bOriginalOrientRotationToMovement = false
protected

◆ bOriginalUseControllerDesiredRotation

bool UAT_MoveToLocationCurve::bOriginalUseControllerDesiredRotation = false
protected

◆ bOriginalUseControllerRotationYaw

bool UAT_MoveToLocationCurve::bOriginalUseControllerRotationYaw = false
protected

◆ Elapsed

float UAT_MoveToLocationCurve::Elapsed = 0.0f
protected

◆ MovedDistance

float UAT_MoveToLocationCurve::MovedDistance = 0.0f
protected

◆ MoveDirection

FVector UAT_MoveToLocationCurve::MoveDirection = FVector::ZeroVector
protected

◆ MovementComponent

TObjectPtr<UCharacterMovementComponent> UAT_MoveToLocationCurve::MovementComponent
protected

◆ NormalizationFactor

float UAT_MoveToLocationCurve::NormalizationFactor = 0.0f
protected

◆ OnCompleted

FMoveToLocationCurveSignature UAT_MoveToLocationCurve::OnCompleted

◆ OwnerCharacter

TObjectPtr<ACharacter> UAT_MoveToLocationCurve::OwnerCharacter
protected

◆ ProgressCurve

TObjectPtr<UCurveFloat> UAT_MoveToLocationCurve::ProgressCurve
protected

◆ StartLocation

FVector UAT_MoveToLocationCurve::StartLocation = FVector::ZeroVector
protected

◆ TargetDistance

float UAT_MoveToLocationCurve::TargetDistance = 0.0f
protected

◆ TargetLocation

FVector UAT_MoveToLocationCurve::TargetLocation = FVector::ZeroVector
protected

◆ TaskDuration

float UAT_MoveToLocationCurve::TaskDuration = 0.0f
protected

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: