편집기 또는 게임의 3D 보기에서 데이터베이스의 모든 게임 NavData를 렌더링할 수 있습니다. 이렇게 하면 NavData가 제대로 로드되는지, 지세와 제대로 일치하는지 등을 확인할 수 있습니다.
class NavDataVisualGeometryBuilder : public Kaim::IVisualGeometry { public: virtual void DoBegin(const Kaim::VisualGeometrySetupConfig& /*setupConfig*/) { m_triangles.Clear(); } virtual void DoPushTriangle(const Kaim::VisualTriangle& triangle) { m_triangles.PushBack(triangle); } virtual void DoPushLine(const Kaim::VisualLine& /*visualLine*/) {} virtual void DoPushText(const Kaim::VisualText& /*visualText*/) {} virtual void DoEnd() {} KyUInt32 GetTriangleCount() const { return m_triangles.GetCount(); } private: Kaim::KyArray<Kaim::VisualTriangle> m_triangles; };
데이터베이스에서 NavData 삼각형을 요청할 때마다 NavDataVisualGeometryBuilder 클래스의 인스턴스에 전달됩니다.
// Create a world and a database.
Kaim::Ptr<Kaim::World> world = *KY_NEW Kaim::World;
Kaim::Database* database = world->GetDatabase(0);
Kaim::Ptr<Kaim::NavData> navData = *KY_NEW Kaim::NavData(database);
Kaim::Ptr<NavDataVisualGeometryBuilder> geometry = *KY_NEW NavDataVisualGeometryBuilder;
database->SetVisualGeometry(geometry);
while (gameLoopRunning)
{
world->Update();
if (database->HasChangedLastFrame())
database->BuildVisualGeometry(); // Call BuildVisualGeometry() only if database has changed.
}
IVisualGeometry의 구현에 따라 게임 또는 편집기의 삼각형을 사용할 수 있습니다.