WorldInfo

월드 전반에 걸친 정보를 관리하는 클래스. 현재 레벨의 포스트프로세싱정보, 기본앰비언트존 세팅, Controller리스트, Pawn리스트, Cover리스트, PylonList 따위를 관리한다.

Pawn 리스트

WorldInfo 가 Pawn 을 관리하는 방식에 대해 언급한다.

우선 변수 선언부는 다음과 같다.

PawnList 변수 선언
var const             Pawn        PawnList;

Pawn 은 멤버변수로 NextPawn 을 가지고 있으며, 단방향 링크드리스트로 관리되어 진다.

Pawn 추가

WorldInfo 가 관리하는 PawnList 에 새로운 Pawn 이 추가되는 경우는 다음과 같다.

  • 클라이언트 입장에서 (서버가 아님) 자신의 근처에 Pawn 이 접근한 경우
    콜 스택
    UWorld::AddPawn
    APawn::PostBeginPlay
    UWorld::SpawnActor
    UActorChannel::ReceiveBunch
    UChannel::ReceiveSequencedBunch
    UChannel::ReceivedRawBunch
    UNetConnection::ReceivedPacket
    UNetConnection::ReceivedRawPacket
    UTcpNetDriver::TickDispatch
    UWorld::Tick

Pawn 삭제

WorldInfo 가 관리하는 PawnList 로부터 Pawn 이 삭제되는 경우는 다음과 같다.

  • 새로운 맵이 로드되며 기존에 관리하던 Pawn 들을 파괴하는 경우
    콜 스택
    UWorld::RemovePawn
    APawn::PostScriptDestroy
    UWorld::DestroyActor
    UGameEngine::LoadMap
    UGameEngine::Browse
    UGameEngine::Tick
    FEngineLoop::Tick
  • 클라이언트 입장에서 (서버가 아님) 자신으로부터 Pawn 이 멀어지는 경우
    콜 스택
    UWorld::RemovePawn
    APawn::PostScriptDestroyed
    UWorld::DestroyActor
    UActorChannel::CleanUp
    UChannel::ConditionalCleanUp
    UChannel::ReceivedSequencedBunch
    UChannel::ReceivedRawBunch
    UNetConnection::ReceivedPacket
    UNetConnection::ReceivedRawPacket
    UTcpNetDriver::TickDispatch
    UWorld::Tick