9#include "Components/SkeletalMeshComponent.h"
10#include "Components/SceneComponent.h"
11#include "Components/StaticMeshComponent.h"
12#include "TimerManager.h"
14#include "Net/UnrealNetwork.h"
18 PrimaryActorTick.bCanEverTick =
false;
22 USceneComponent* Root = CreateDefaultSubobject<USceneComponent>(TEXT(
"Root"));
26 SkeletalMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT(
"SkeletalMesh"));
30 BoxCollision = CreateDefaultSubobject<UStaticMeshComponent>(TEXT(
"BoxCollision"));
32 BoxCollision->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
33 BoxCollision->SetCollisionResponseToAllChannels(ECR_Block);
36 SpawnPos = CreateDefaultSubobject<USceneComponent>(TEXT(
"SpawnPos"));
42 Super::GetLifetimeReplicatedProps(OutLifetimeProps);
51 PRINTLOG(TEXT(
"Dropper GUID = %s, Authority=%d"),
52 *GetPathName(), HasAuthority());
75 PRINTLOG(TEXT(
"ADropper::SpawnInternal - Invalid data"));
80 FActorSpawnParameters Params;
82 Params.Instigator = GetInstigator();
85 AActor* SpawnedActor = GetWorld()->SpawnActor<AActor>(
104 FTimerHandle TimerHandle;
105 GetWorld()->GetTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateLambda([
this, SpawnedActor]
109 if (
auto tmpLuggage = Cast<Aluggage>(SpawnedActor))
114 tmpLuggage->ApplyColorToMesh(ColorIdx);
117 tmpLuggage->ApplyPatternToMesh(PatternIdx);
123 GetWorldTimerManager().SetTimer(
132void ADropper::Server_Spawn_Implementation()
134 PRINTLOG(TEXT(
"Dropper Authority=%d RemoteRole=%d"), HasAuthority(), (
int)GetRemoteRole());
146 GetWorldTimerManager().SetTimer(
164void ADropper::Multicast_PlayAnimation_Implementation()
170void ADropper::Multicast_DisableCollision_Implementation()
173 BoxCollision->SetCollisionEnabled(ECollisionEnabled::NoCollision);
176void ADropper::Multicast_RestoreCollision_Implementation()
180 BoxCollision->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
181 BoxCollision->SetCollisionResponseToAllChannels(ECR_Block);
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
UDialogManager 클래스를 선언합니다.
void OnRestoreCompleted()
void Multicast_PlayAnimation()
애니메이션 재생
TSubclassOf< AActor > SpawnClass
이번 스폰에서 사용할 클래스
void Multicast_DisableCollision()
충돌 비활성화
FLuggageData NextData
이번 스폰에서 사용할 데이터
void Spawn()
서버에서만 실행되는 실제 스폰 로직
TObjectPtr< UAnimationAsset > AnimToPlay
드랍 시 재생할 애니메이션
TObjectPtr< USceneComponent > SpawnPos
스폰 위치
TObjectPtr< USkeletalMeshComponent > SkeletalMesh
드랍퍼 스켈레탈 메시
void Multicast_RestoreCollision()
충돌 복구
TObjectPtr< UStaticMeshComponent > BoxCollision
충돌 박스
FTimerHandle DelayTimerHandle
bool RequestSpawn()
스폰 요청 (서버에서만 동작)
bool bIsSpawnIng
이번 스폰에서 사용할 데이터
virtual void GetLifetimeReplicatedProps(TArray< FLifetimeProperty > &OutLifetimeProps) const override
FTimerHandle RestoreTimerHandle
FWordInfo word1
시나리오 단어 정보
int32 SpawnIndex
스폰 인덱스(선택적으로 사용)