다중 월드 간에 NavData 공유

게임이 다중 독립 서버 또는 방이 있는 MMO 게임과 같은 동일한 지세를 로드해야 하는 다중 Worlds를 동시에 사용하는 경우 사전에 생성된 동일한 정적 NavData를 공유하도록 모든 Worlds를 설정하여 메모리를 절약할 수 있습니다.

그러나 만든 각 NavData 오브젝트는 단일 World의 단일 Database에만 추가할 수 있습니다. 따라서 다중 월드 간에 동일한 NavData를 공유하려면 각 World에 대해 하나의 NavData 오브젝트를 만들고, 동일한 원시 데이터를 사용하도록 각 NavData 오브젝트를 설정해야 합니다.

원시 데이터에 액세스하려면

각 NavData 인스턴스를 설정하려면 NavData::LoadFromMemory()를 호출할 때 원시 데이터 버퍼를 전달합니다.

for(KyUInt32 worldIdx = 0; worldIdx < worldCount; worldIdx++) // for each World
{
    Kaim::Ptr<Kaim::NavData> navData = *KY_NEW Kaim::NavData;
    navData->LoadFromMemory(myDataBuffer);

    ... // Add your NavData in the World with index worldIdx
}
주:게임 중 런타임 시 단일 Database에서 유지하는 NavData에 수행한 변경 사항(예: TagVolume 또는 NavGraph 추가)은 해당 Database에서 로컬로 발생합니다. 다른 월드와 공유 중인 사전에 생성된 정적 데이터는 영향을 받지 않습니다.
주:이 접근 방법을 사용하기로 선택한 경우 원시 데이터가 World에서 사용되는 한 메모리에 남아 있어야 합니다. 모든 Databases에서 제거할 때까지 메모리에서 원시 데이터를 릴리스하지 마십시오.