集成阶段 1c:设置世界

世界是一个核心运行时对象,包含一个或多个 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();
    ...
}