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

네트워크 복제를 위한 전역 브로드캐스트 Actor 더 자세히 ...

#include <ANetworkBroadcastActor.h>

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

Public 멤버 함수

 ANetworkBroadcastActor ()
 
void SendDoorMessage (int InDoorIndex, bool bOpen, AActor *EventInstigator)
 문 상태 변경 메시지를 네트워크로 전송
 
void SendHitStop (AActor *Target, EDamageType Type, AActor *EventInstigator)
 히트스톱 이벤트를 네트워크로 전송
 
void SendKnockback (AActor *Target, AActor *KnockbackInstigator, EDamageType Type, float Resistance, AActor *CallInstigator)
 넉백 이벤트를 네트워크로 전송
 
void SendTeleportAllPlayers (const FTransform &TargetTransform, AActor *EventInstigator)
 모든 플레이어를 지정된 위치로 텔레포트
 
void SendTutorMessage (const FText &Message, AActor *EventInstigator)
 튜터 메시지를 네트워크로 전송
 
void SendUpdateMissionTimerState (bool bIsActive, float TimeLimit, AActor *EventInstigator)
 미션 타이머 상태 변경 이벤트를 네트워크로 전송
 
void SendWeightSwitch (int InButtonIndex, bool bActive, AActor *EventInstigator)
 무게 스위치 상태 변경 메시지를 네트워크로 전송
 

정적 Public 멤버 함수

static ANetworkBroadcastActorGet (const UObject *WorldContextObject)
 싱글톤 인스턴스 가져오기
 

Protected 멤버 함수

void Multicast_SendDoorMessage (int InDoorIndex, bool bOpen, AActor *EventInstigator)
 
void Multicast_SendHitStop (AActor *Target, EDamageType Type)
 
void Multicast_SendKnockback (AActor *Target, AActor *KnockbackInstigator, EDamageType Type, float Resistance)
 
void Multicast_SendTeleportAllPlayers (const FTransform &TargetTransform)
 
void Multicast_SendTutorMessage (const FText &Message)
 
void Multicast_SendUpdateMissionTimerState (bool bIsActive, float TimeLimit)
 
void Multicast_SendWeightSwitch (int InButtonIndex, bool bActive)
 
void Server_SendDoorMessage (int InDoorIndex, bool bOpen, AActor *EventInstigator)
 
void Server_SendHitStop (AActor *Target, EDamageType Type, AActor *EventInstigator)
 
void Server_SendKnockback (AActor *Target, AActor *KnockbackInstigator, EDamageType Type, float Resistance, AActor *CallInstigator)
 
void Server_SendTeleportAllPlayers (const FTransform &TargetTransform, AActor *EventInstigator)
 
void Server_SendTutorMessage (const FText &Message, AActor *EventInstigator)
 
void Server_SendUpdateMissionTimerState (bool bIsActive, float TimeLimit, AActor *EventInstigator)
 
void Server_SendWeightSwitch (int InButtonIndex, bool bActive, AActor *EventInstigator)
 

Private 멤버 함수

class UBroadcastManagerGetLocalBroadcastManager () const
 로컬 BroadcastManager 가져오기
 
bool ValidateInstigator (AActor *EventInstigator) const
 권한 검증 - EventInstigator가 유효한지 확인
 

정적 Private 속성

static TMap< UWorld *, ANetworkBroadcastActor * > Instances
 World별 싱글톤 인스턴스 맵
 

상세한 설명

네트워크 복제를 위한 전역 브로드캐스트 Actor

GameMode에서 자동 생성되며, Server RPC와 Multicast RPC를 통해 모든 클라이언트에게 이벤트를 전파합니다.

주의
UGameInstanceSubsystem은 RPC를 가질 수 없으므로 Actor로 구현되었습니다. 이 Actor는 bAlwaysRelevant = true로 설정되어 모든 클라이언트에게 항상 복제됩니다.

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

생성자 & 소멸자 문서화

◆ ANetworkBroadcastActor()

ANetworkBroadcastActor::ANetworkBroadcastActor ( )

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

17{
18 PrimaryActorTick.bCanEverTick = false;
19
20 // 네트워크 복제 설정
21 bReplicates = true;
22 bAlwaysRelevant = true; // 모든 클라이언트에게 항상 복제
23
24 // Root component
25 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
26}

멤버 함수 문서화

◆ Get()

ANetworkBroadcastActor * ANetworkBroadcastActor::Get ( const UObject *  WorldContextObject)
static

싱글톤 인스턴스 가져오기

매개변수
WorldContextObjectWorld 컨텍스트
반환값
NetworkBroadcastActor 인스턴스 (없으면 자동 생성)

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

29{
30 if (!WorldContextObject)
31 {
32 PRINTLOG(TEXT("NetworkBroadcastActor::Get - WorldContextObject is null"));
33 return nullptr;
34 }
35
36 UWorld* World = WorldContextObject->GetWorld();
37 if (!World)
38 {
39 PRINTLOG(TEXT("NetworkBroadcastActor::Get - World is null"));
40 return nullptr;
41 }
42
43 // 이미 존재하는 인스턴스 확인
44 if (Instances.Contains(World))
45 {
46 ANetworkBroadcastActor* Instance = Instances[World];
47 if (IsValid(Instance))
48 {
49 return Instance;
50 }
51 else
52 {
53 // 유효하지 않은 인스턴스 제거
54 Instances.Remove(World);
55 }
56 }
57
58 // 새 인스턴스 생성 (Server에서만)
59 if (World->GetAuthGameMode())
60 {
61 FActorSpawnParameters SpawnParams;
62 SpawnParams.Owner = nullptr;
63 SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
64
65 ANetworkBroadcastActor* NewInstance = World->SpawnActor<ANetworkBroadcastActor>(
66 ANetworkBroadcastActor::StaticClass(),
67 FVector::ZeroVector,
68 FRotator::ZeroRotator,
69 SpawnParams
70 );
71
72 if (NewInstance)
73 {
74 Instances.Add(World, NewInstance);
75 PRINTLOG(TEXT("NetworkBroadcastActor: Created new instance"));
76 return NewInstance;
77 }
78 else
79 {
80 PRINTLOG(TEXT("NetworkBroadcastActor: Failed to spawn actor"));
81 }
82 }
83 else
84 {
85 PRINTLOG(TEXT("NetworkBroadcastActor: Not on server, cannot create instance"));
86 }
87
88 return nullptr;
89}
#define PRINTLOG(fmt,...)
Definition GameLogging.h:30
네트워크 복제를 위한 전역 브로드캐스트 Actor
static TMap< UWorld *, ANetworkBroadcastActor * > Instances
World별 싱글톤 인스턴스 맵

다음을 참조함 : Instances, PRINTLOG.

다음에 의해서 참조됨 : UNetworkBroadcastLibrary::GetNetworkBroadcastActor(), AHolder::OnBoxOverlapBegin(), AFoodHolder::OnFoodBoxOverlapBegin(), ALingoGameState::OnMissionTimerEnd(), ATeleportTrigger::OnTriggerBeginOverlap(), ALingoGameState::StartMissionTimer(), ALingoGameState::StopMissionTimer().

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

◆ GetLocalBroadcastManager()

UBroadcastManager * ANetworkBroadcastActor::GetLocalBroadcastManager ( ) const
private

로컬 BroadcastManager 가져오기

반환값
현재 World의 UBroadcastManager 인스턴스

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

393{
394 if (!GetWorld())
395 {
396 PRINTLOG(TEXT("NetworkBroadcastActor: GetWorld() returned nullptr"));
397 return nullptr;
398 }
399
400 UBroadcastManager* LocalBroadcast = UBroadcastManager::Get(GetWorld());
401 if (!LocalBroadcast)
402 {
403 PRINTLOG(TEXT("NetworkBroadcastActor: Failed to get UBroadcastManager"));
404 }
405
406 return LocalBroadcast;
407}
게임 내 전역 이벤트를 중계하는 중앙 이벤트 버스(Event Bus) 서브시스템입니다.

다음을 참조함 : PRINTLOG.

◆ Multicast_SendDoorMessage()

void ANetworkBroadcastActor::Multicast_SendDoorMessage ( int  InDoorIndex,
bool  bOpen,
AActor *  EventInstigator 
)
protected

◆ Multicast_SendHitStop()

void ANetworkBroadcastActor::Multicast_SendHitStop ( AActor *  Target,
EDamageType  Type 
)
protected

◆ Multicast_SendKnockback()

void ANetworkBroadcastActor::Multicast_SendKnockback ( AActor *  Target,
AActor *  KnockbackInstigator,
EDamageType  Type,
float  Resistance 
)
protected

◆ Multicast_SendTeleportAllPlayers()

void ANetworkBroadcastActor::Multicast_SendTeleportAllPlayers ( const FTransform &  TargetTransform)
protected

◆ Multicast_SendTutorMessage()

void ANetworkBroadcastActor::Multicast_SendTutorMessage ( const FText &  Message)
protected

◆ Multicast_SendUpdateMissionTimerState()

void ANetworkBroadcastActor::Multicast_SendUpdateMissionTimerState ( bool  bIsActive,
float  TimeLimit 
)
protected

◆ Multicast_SendWeightSwitch()

void ANetworkBroadcastActor::Multicast_SendWeightSwitch ( int  InButtonIndex,
bool  bActive 
)
protected

◆ SendDoorMessage()

void ANetworkBroadcastActor::SendDoorMessage ( int  InDoorIndex,
bool  bOpen,
AActor *  EventInstigator 
)

문 상태 변경 메시지를 네트워크로 전송

매개변수
InDoorIndex문 인덱스
bOpen열기 여부
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

96{
97 if (!EventInstigator)
98 {
99 PRINTLOG(TEXT("NetworkBroadcastActor: SendDoorMessage - EventInstigator is null"));
100 return;
101 }
102
103 PRINTLOG(TEXT("NetworkBroadcastActor: SendDoorMessage called - Index: %d, Open: %d, EventInstigator: %s"),
104 InDoorIndex, bOpen, *EventInstigator->GetName());
105
106 Server_SendDoorMessage(InDoorIndex, bOpen, EventInstigator);
107}
void Server_SendDoorMessage(int InDoorIndex, bool bOpen, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendDoorMessage().

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

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

◆ SendHitStop()

void ANetworkBroadcastActor::SendHitStop ( AActor *  Target,
EDamageType  Type,
AActor *  EventInstigator 
)

히트스톱 이벤트를 네트워크로 전송

매개변수
Target타겟 Actor
Type데미지 타입
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

188{
189 if (!EventInstigator || !Target)
190 {
191 PRINTLOG(TEXT("NetworkBroadcastActor: SendHitStop - Invalid parameters"));
192 return;
193 }
194
195 Server_SendHitStop(Target, Type, EventInstigator);
196}
void Server_SendHitStop(AActor *Target, EDamageType Type, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendHitStop().

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

◆ SendKnockback()

void ANetworkBroadcastActor::SendKnockback ( AActor *  Target,
AActor *  KnockbackInstigator,
EDamageType  Type,
float  Resistance,
AActor *  CallInstigator 
)

넉백 이벤트를 네트워크로 전송

매개변수
Target타겟 Actor
KnockbackInstigator넉백을 발생시킨 Actor
Type데미지 타입
Resistance저항력
CallInstigatorRPC 호출자 (권한 검증용)

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

223{
224 if (!CallInstigator || !Target)
225 {
226 PRINTLOG(TEXT("NetworkBroadcastActor: SendKnockback - Invalid parameters"));
227 return;
228 }
229
230 Server_SendKnockback(Target, KnockbackInstigator, Type, Resistance, CallInstigator);
231}
void Server_SendKnockback(AActor *Target, AActor *KnockbackInstigator, EDamageType Type, float Resistance, AActor *CallInstigator)

다음을 참조함 : PRINTLOG, Server_SendKnockback().

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

◆ SendTeleportAllPlayers()

void ANetworkBroadcastActor::SendTeleportAllPlayers ( const FTransform &  TargetTransform,
AActor *  EventInstigator 
)

모든 플레이어를 지정된 위치로 텔레포트

매개변수
TargetLocation목표 위치
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

349{
350 if (!EventInstigator)
351 {
352 PRINTLOG(TEXT("NetworkBroadcastActor: SendTeleportAllPlayers - EventInstigator is null"));
353 return;
354 }
355
356 PRINTLOG(TEXT("NetworkBroadcastActor: SendTeleportAllPlayers called - Location: %s, EventInstigator: %s"),
357 *TargetTransform.ToString(), *EventInstigator->GetName());
358
359 Server_SendTeleportAllPlayers(TargetTransform, EventInstigator);
360}
void Server_SendTeleportAllPlayers(const FTransform &TargetTransform, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendTeleportAllPlayers().

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

◆ SendTutorMessage()

void ANetworkBroadcastActor::SendTutorMessage ( const FText &  Message,
AActor *  EventInstigator 
)

튜터 메시지를 네트워크로 전송

매개변수
Message전송할 메시지
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

305{
306 if (!EventInstigator)
307 {
308 PRINTLOG(TEXT("NetworkBroadcastActor: SendTutorMessage - EventInstigator is null"));
309 return;
310 }
311
312 PRINTLOG(TEXT("NetworkBroadcastActor: SendTutorMessage called - Message: %s, EventInstigator: %s"),
313 *Message.ToString(), *EventInstigator->GetName());
314
315 Server_SendTutorMessage(Message, EventInstigator);
316}
void Server_SendTutorMessage(const FText &Message, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendTutorMessage().

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

◆ SendUpdateMissionTimerState()

void ANetworkBroadcastActor::SendUpdateMissionTimerState ( bool  bIsActive,
float  TimeLimit,
AActor *  EventInstigator 
)

미션 타이머 상태 변경 이벤트를 네트워크로 전송

매개변수
bIsActive타이머 활성화 여부
TimeLimit타이머 제한 시간 (초 단위)
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

258{
259 if (!EventInstigator)
260 {
261 PRINTLOG(TEXT("NetworkBroadcastActor: SendUpdateMissionTimerState - EventInstigator is null"));
262 return;
263 }
264
265 PRINTLOG(TEXT("NetworkBroadcastActor: SendUpdateMissionTimerState called - bIsActive: %s, TimeLimit: %.1f"),
266 bIsActive ? TEXT("true") : TEXT("false"), TimeLimit);
267
268 Server_SendUpdateMissionTimerState(bIsActive, TimeLimit, EventInstigator);
269}
void Server_SendUpdateMissionTimerState(bool bIsActive, float TimeLimit, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendUpdateMissionTimerState().

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

◆ SendWeightSwitch()

void ANetworkBroadcastActor::SendWeightSwitch ( int  InButtonIndex,
bool  bActive,
AActor *  EventInstigator 
)

무게 스위치 상태 변경 메시지를 네트워크로 전송

매개변수
InButtonIndex버튼 인덱스
bActive활성화 여부
EventInstigator이벤트를 발생시킨 Actor (권한 검증용)

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

145{
146 if (!EventInstigator)
147 {
148 PRINTLOG(TEXT("NetworkBroadcastActor: SendWeightSwitch - EventInstigator is null"));
149 return;
150 }
151
152 PRINTLOG(TEXT("NetworkBroadcastActor: SendWeightSwitch called - Index: %d, Active: %d"), InButtonIndex, bActive);
153
154 Server_SendWeightSwitch(InButtonIndex, bActive, EventInstigator);
155}
void Server_SendWeightSwitch(int InButtonIndex, bool bActive, AActor *EventInstigator)

다음을 참조함 : PRINTLOG, Server_SendWeightSwitch().

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

◆ Server_SendDoorMessage()

void ANetworkBroadcastActor::Server_SendDoorMessage ( int  InDoorIndex,
bool  bOpen,
AActor *  EventInstigator 
)
protected

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

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

◆ Server_SendHitStop()

void ANetworkBroadcastActor::Server_SendHitStop ( AActor *  Target,
EDamageType  Type,
AActor *  EventInstigator 
)
protected

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

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

◆ Server_SendKnockback()

void ANetworkBroadcastActor::Server_SendKnockback ( AActor *  Target,
AActor *  KnockbackInstigator,
EDamageType  Type,
float  Resistance,
AActor *  CallInstigator 
)
protected

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

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

◆ Server_SendTeleportAllPlayers()

void ANetworkBroadcastActor::Server_SendTeleportAllPlayers ( const FTransform &  TargetTransform,
AActor *  EventInstigator 
)
protected

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

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

◆ Server_SendTutorMessage()

void ANetworkBroadcastActor::Server_SendTutorMessage ( const FText &  Message,
AActor *  EventInstigator 
)
protected

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

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

◆ Server_SendUpdateMissionTimerState()

void ANetworkBroadcastActor::Server_SendUpdateMissionTimerState ( bool  bIsActive,
float  TimeLimit,
AActor *  EventInstigator 
)
protected

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

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

◆ Server_SendWeightSwitch()

void ANetworkBroadcastActor::Server_SendWeightSwitch ( int  InButtonIndex,
bool  bActive,
AActor *  EventInstigator 
)
protected

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

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

◆ ValidateInstigator()

bool ANetworkBroadcastActor::ValidateInstigator ( AActor *  EventInstigator) const
private

권한 검증 - EventInstigator가 유효한지 확인

매개변수
EventInstigator검증할 Actor
반환값
유효하면 true

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

410{
411 if (!EventInstigator || !IsValid(EventInstigator))
412 {
413 PRINTLOG(TEXT("NetworkBroadcastActor: EventInstigator is null or invalid"));
414 return false;
415 }
416
417 if (!EventInstigator->GetWorld())
418 {
419 PRINTLOG(TEXT("NetworkBroadcastActor: EventInstigator not in world"));
420 return false;
421 }
422
423 return true;
424}

다음을 참조함 : PRINTLOG.

멤버 데이터 문서화

◆ Instances

TMap< UWorld *, ANetworkBroadcastActor * > ANetworkBroadcastActor::Instances
staticprivate

World별 싱글톤 인스턴스 맵

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

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


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