World는 하나 이상의 NavData 세트 및 NavData를 사용하는 다른 동적 오브젝트를 포함하는 코어 런타임 오브젝트입니다.
게임에서 필요한 만큼의 Worlds를 만들 수 있습니다.
World를 만들 때 World가 만들거나 유지해야 하는 Databases 수를 지정해야 합니다. 이 자습서에서는 하나의 Database만 필요합니다. 결국 World로 로드하려는 각 NavData 세트에 대해 별도의 Database를 만들어야 합니다. 예를 들어 고유한 NavData 세트를 필요로 하는 만큼 물리적 특징 및/또는 이동 기능이 다른 각 유형의 캐릭터에 하나씩입니다.
예: [Tutorial_FirstIntegration.cpp의 코드]
#include "gwnavruntime/world/world.h"
...
class MyGameWorld
{
public:
MyGameWorld() : m_gameFrameIdx(0), m_world(KY_NULL) {}
bool Initialize();
void Update(float deltaTimeInSeconds);
void Destroy();
...
protected:
KyUInt32 m_gameFrameIdx;
Kaim::Ptr<Kaim::World> m_world;
...
};
bool MyGameWorld::Initialize()
{
...
const KyUInt32 databaseCount = 1;
m_world = *KY_NEW Kaim::World(databaseCount);
...
}
void MyGameWorld::Update(float deltaTimeInSeconds)
{
...
m_world->Update(deltaTimeInSeconds);
...
}
void MyGameWorld::Destroy()
{
...
m_world = KY_NULL;
}
...
class MyGame
{
public:
bool Initialize();
void Update(float deltaTimeInSeconds);
void Destroy();
protected:
MyGameWorld m_world;
};
bool MyGame::Initialize()
{
...
return m_world.Initialize();
}
void MyGame::Update(float deltaTimeInSeconds)
{
m_world.Update(deltaTimeInSeconds);
}
void MyGame::Destroy()
{
m_world.Destroy();
...
}