KLingo Project Documentation 1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
USequenceManager 클래스 참조

여러 액터를 지정된 간격으로 순차적으로 활성화 또는 비활성화하는 시퀀스 관리 서브시스템입니다. 더 자세히 ...

#include <USequenceManager.h>

+ USequenceManager에 대한 상속 다이어그램 :
+ USequenceManager에 대한 협력 다이어그램:

Public 멤버 함수

void CancelAll ()
 
void RequestSequential (const TArray< AActor * > &Targets, bool bActivate, float InitialDelay=0.f, float Interval=0.1f, float Duration=0.5f)
 0.1초 간격으로 Targets를 순차 Activate/Deactivate InitialDelay: 첫 실행 지연 Interval : 대상 간 간격(예: 0.1f) Duration : Activate 시 각 대상에 전달되는 연출 길이
 

Private 멤버 함수

void TickStep ()
 

Private 속성

int32 Index = 0
 
FTimerHandle MainHandle
 
TArray< FSequenceCommandQueue
 
float StepInterval = 0.1f
 

상세한 설명

여러 액터를 지정된 간격으로 순차적으로 활성화 또는 비활성화하는 시퀀스 관리 서브시스템입니다.

ISequenceActivatable 인터페이스를 구현한 액터들을 대상으로, 정해진 순서에 따라 연출을 트리거하는 데 사용됩니다.

USequenceManager.h 파일의 37 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ CancelAll()

void USequenceManager::CancelAll ( )

USequenceManager.cpp 파일의 93 번째 라인에서 정의되었습니다.

94{
95 if (UWorld* World = GetWorld())
96 {
97 World->GetTimerManager().ClearTimer(MainHandle);
98 }
99 Queue.Reset();
100 Index = 0;
101}
TArray< FSequenceCommand > Queue
FTimerHandle MainHandle

다음을 참조함 : Index, MainHandle, Queue.

다음에 의해서 참조됨 : RequestSequential(), TickStep().

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RequestSequential()

void USequenceManager::RequestSequential ( const TArray< AActor * > &  Targets,
bool  bActivate,
float  InitialDelay = 0.f,
float  Interval = 0.1f,
float  Duration = 0.5f 
)

0.1초 간격으로 Targets를 순차 Activate/Deactivate InitialDelay: 첫 실행 지연 Interval : 대상 간 간격(예: 0.1f) Duration : Activate 시 각 대상에 전달되는 연출 길이

USequenceManager.cpp 파일의 13 번째 라인에서 정의되었습니다.

18{
19 CancelAll();
20
21 Queue.Reset();
22 Queue.Reserve(Targets.Num());
23
24 for (AActor* A : Targets)
25 {
26 if (!IsValid(A))
27 continue;
28
30 Cmd.Target = A;
31 Cmd.bActivate = bActivate;
32 Cmd.Duration = Duration;
33 Queue.Add(MoveTemp(Cmd));
34 }
35
36 Index = 0;
37 StepInterval = FMath::Max(0.f, Interval);
38
39 if (!GetWorld() || Queue.Num() == 0)
40 return;
41
42 GetWorld()->GetTimerManager().SetTimer(
44 this,
46 (StepInterval <= KINDA_SMALL_NUMBER) ? 0.0f : StepInterval, // 0이면 프레임마다 처리
47 (StepInterval > KINDA_SMALL_NUMBER), // 반복 타이머 여부
48 FMath::Max(0.f, InitialDelay) // 초기 지연
49 );
50
51 if (StepInterval <= KINDA_SMALL_NUMBER)
52 TickStep();
53}
USequenceManager에서 처리할 개별 시퀀스 명령을 정의하는 구조체입니다.
TWeakObjectPtr< AActor > Target

다음을 참조함 : FSequenceCommand::bActivate, CancelAll(), FSequenceCommand::Duration, Index, MainHandle, Queue, StepInterval, FSequenceCommand::Target, TickStep().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ TickStep()

void USequenceManager::TickStep ( )
private

USequenceManager.cpp 파일의 55 번째 라인에서 정의되었습니다.

56{
57 if (Queue.Num() == 0)
58 {
59 CancelAll();
60 return;
61 }
62
63 const int32 MaxPerTick = (StepInterval > KINDA_SMALL_NUMBER) ? 1 : 8;
64
65 int32 Processed = 0;
66 while (Index < Queue.Num() && Processed < MaxPerTick)
67 {
68 const FSequenceCommand& Cmd = Queue[Index];
69
70 AActor* Target = Cmd.Target.Get();
71 if (IsValid(Target) && Target->GetClass()->ImplementsInterface(USequenceActivatable::StaticClass()))
72 {
73 if (Cmd.bActivate)
74 {
75 ISequenceActivatable::Execute_Activate(Target, Index, Queue.Num(), Cmd.Duration);
76 }
77 else
78 {
79 ISequenceActivatable::Execute_Deactivate(Target, Index, Queue.Num(), Cmd.Duration);
80 }
81 }
82
83 ++Index;
84 ++Processed;
85 }
86
87 if (Index >= Queue.Num())
88 {
89 CancelAll();
90 }
91}

다음을 참조함 : FSequenceCommand::bActivate, CancelAll(), FSequenceCommand::Duration, Index, Queue, StepInterval, FSequenceCommand::Target.

다음에 의해서 참조됨 : RequestSequential().

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ Index

int32 USequenceManager::Index = 0
private

USequenceManager.h 파일의 62 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : CancelAll(), RequestSequential(), TickStep().

◆ MainHandle

FTimerHandle USequenceManager::MainHandle
private

USequenceManager.h 파일의 60 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : CancelAll(), RequestSequential().

◆ Queue

TArray<FSequenceCommand> USequenceManager::Queue
private

USequenceManager.h 파일의 61 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : CancelAll(), RequestSequential(), TickStep().

◆ StepInterval

float USequenceManager::StepInterval = 0.1f
private

USequenceManager.h 파일의 63 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : RequestSequential(), TickStep().


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