World は NavData の 1 つまたは複数のセットと、その NavData を使用する他の動的なオブジェクトを含む、コアのランタイム オブジェクトです。
ゲームでは必要な数だけ World を作成することができます。
World を作成する場合は、その World が作成、維持する必要がある Database の数を示します。このチュートリアルの使用目的では、1 つの Database のみ必要です。最終的に、World にロードしようと考えている NavData のセットごとに別個の Database を作成する必要があります。つまり、固有の NavData セットが必要であるほど物理的特性や移動能力が異なっているキャラクタのタイプごとに、1 つのデータベースが必要になります。
例: [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();
...
}