통합 단계 1c: 월드 설정

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();
    ...
}