世界是一个核心运行时对象,包含一个或多个 NavData 集以及其他使用该 NavData 的动态对象。
当您创建世界时,应指定世界应创建和维护的数据库的数量。在本教程中,您只需要一个数据库。最后,您需要为计划加载到世界的每个 NavData 集创建单独的数据库:即,为每种类型的角色创建一个数据库,这些角色的物理特性和/或移动功能截然不同,因而需要属于自己的 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();
...
}