お使いのエディタやゲームの 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 の実装に基づいてゲームまたはエディタの三角形を使用することができます。
コード サンプルについては、「Tutorial_VisualGeometry.cpp」を参照してください。このチュートリアルでは、データベースにロードされた NavData の三角形にアクセスする方法を示します。