1. 데이터 구조


2. BP_CharacterCustomization의 Initialize

BP_CharacterCustomization::InitializeFromCharacterBeginPlay 함수의 개요. 이 함수는 BP_Character::BeginPlay에서 호출됨.

BP_CharacterCustomization::InitializeFromCharacterBeginPlay 함수의 개요. 이 함수는 BP_Character::BeginPlay에서 호출됨.

2.1. 초기화 단계 (pseudocode)

//pseudocode
**BP_Character::BeginPlay()**
{
    BP_CharacterCustomization::InitializeFromCharacterBeginPlay(InitializeBehaivor, ProfileToLoad, OnInitialized_CharacterCustomization);

    OnInitialized_CharacterCustomization
    {
        BP_CharacterEditor::InitializeFromCharacterBeginPlay(OnInitialized_CharacterEditor);
    }

    OnInitialized_CharacterEditor
    {
        // My Space
    }
}

**BP_CharacterCustomization::InitializeFromCharacterBeginPlay(InitializeBehaivor, ProfileToLoad, OnInitialized_CharacterCustomization)**
{
    if(IsServer)
    {
        // OnInitialized 델리게이트에 OnInitialized_CharacterCustomization 바인딩.
        // CallOnInitialized 호출 시, BP_Character::BeginPlay의 OnInitialzied_CharacterCustomization 코드 블럭이 호출 됨.
        BindEventToOnInitialized(OnInitialized_CharacterCustomization);
        Initialize_Replicable(InitializeBehavior, ProfileToLoad);
    }
    else if(IsReplicatingClients)
    {
        if(GetValidatedCharacter()->IsLocallyController() == FALSE)
        {
            InitializeLocalUncontrolled();
        }
    }

    if(NotReplicatingPlayer)
    {
        ServerRequestCustomizationProfilesForOtherCharacters();
    }
}

**BP_CharacterEditor::InitializeFromCharacterBeginPlay(OnInitialized_CharacterEditor)**
{
    BindEventToOnInitialized(OnInitialized_CharacterEditor);
    Initialize_Replicable();
}

3. WBP_CharacterEditor의 Initialize

WBP.drawio.png