diff --git a/RecastDemo/Include/Sample.h b/RecastDemo/Include/Sample.h index 9deb99ed..847d3e66 100644 --- a/RecastDemo/Include/Sample.h +++ b/RecastDemo/Include/Sample.h @@ -109,9 +109,9 @@ class Sample { public: InputGeom* inputGeometry = nullptr; + dtNavMesh* navMesh = nullptr; protected: - dtNavMesh* navMesh = nullptr; dtNavMeshQuery* navQuery = nullptr; dtCrowd* crowd = nullptr; @@ -175,7 +175,6 @@ public: virtual void handleUpdate(float dt); virtual void collectSettings(struct BuildSettings& settings); - dtNavMesh* getNavMesh() { return navMesh; } dtNavMeshQuery* getNavMeshQuery() { return navQuery; } dtCrowd* getCrowd() { return crowd; } float getAgentRadius() { return agentRadius; } diff --git a/RecastDemo/Source/CrowdTool.cpp b/RecastDemo/Source/CrowdTool.cpp index e119d204..dbe09b28 100644 --- a/RecastDemo/Source/CrowdTool.cpp +++ b/RecastDemo/Source/CrowdTool.cpp @@ -124,29 +124,21 @@ CrowdToolState::~CrowdToolState() void CrowdToolState::init(Sample* newSample) { - if (newSample != sample) + sample = newSample; + + dtNavMesh* navmesh = sample->navMesh; + if (!navmesh) { - sample = newSample; + return; } - dtNavMesh* navmesh = sample->getNavMesh(); dtCrowd* crowd = sample->getCrowd(); - - dtNavMesh* newNavmesh = newSample->getNavMesh(); - if (!newNavmesh || newNavmesh == navmesh) + if (!crowd) { return; } - navmesh = newNavmesh; - dtCrowd* newCrowd = newSample->getCrowd(); - if (!newCrowd || newCrowd == crowd) - { - return; - } - crowd = newCrowd; - - crowd->init(MAX_AGENTS, newSample->getAgentRadius(), navmesh); + crowd->init(MAX_AGENTS, sample->getAgentRadius(), navmesh); // Make polygons with 'disabled' flag invalid. crowd->getEditableFilter(0)->setExcludeFlags(SAMPLE_POLYFLAGS_DISABLED); @@ -193,7 +185,7 @@ void CrowdToolState::handleRender() duDebugDraw& dd = sample->getDebugDraw(); const float rad = sample->getAgentRadius(); - dtNavMesh* nav = sample->getNavMesh(); + dtNavMesh* nav = sample->navMesh; dtCrowd* crowd = sample->getCrowd(); if (!nav || !crowd) { @@ -1013,7 +1005,7 @@ void CrowdToolState::updateTick(const float dt) { return; } - dtNavMesh* nav = sample->getNavMesh(); + dtNavMesh* nav = sample->navMesh; dtCrowd* crowd = sample->getCrowd(); if (!nav || !crowd) { @@ -1188,7 +1180,7 @@ void CrowdTool::handleClick(const float* s, const float* p, bool shift) } else if (mode == ToolMode::TOGGLE_POLYS) { - dtNavMesh* nav = sample->getNavMesh(); + dtNavMesh* nav = sample->navMesh; dtNavMeshQuery* navquery = sample->getNavMeshQuery(); if (nav && navquery) { diff --git a/RecastDemo/Source/NavMeshPruneTool.cpp b/RecastDemo/Source/NavMeshPruneTool.cpp index 6b5fbed2..a7049a43 100644 --- a/RecastDemo/Source/NavMeshPruneTool.cpp +++ b/RecastDemo/Source/NavMeshPruneTool.cpp @@ -222,7 +222,7 @@ void NavMeshPruneTool::handleMenu() return; } - dtNavMesh* nav = sample->getNavMesh(); + dtNavMesh* nav = sample->navMesh; if (!nav) { return; @@ -255,7 +255,7 @@ void NavMeshPruneTool::handleClick(const float* s, const float* p, bool shift) { return; } - dtNavMesh* nav = sample->getNavMesh(); + dtNavMesh* nav = sample->navMesh; if (!nav) { return; @@ -301,7 +301,7 @@ void NavMeshPruneTool::handleRender() debugDraw.end(); } - const dtNavMesh* nav = sample->getNavMesh(); + const dtNavMesh* nav = sample->navMesh; if (flags && nav) { for (int i = 0; i < nav->getMaxTiles(); ++i) diff --git a/RecastDemo/Source/NavMeshTesterTool.cpp b/RecastDemo/Source/NavMeshTesterTool.cpp index bc9252c8..3285c178 100644 --- a/RecastDemo/Source/NavMeshTesterTool.cpp +++ b/RecastDemo/Source/NavMeshTesterTool.cpp @@ -195,7 +195,7 @@ NavMeshTesterTool::NavMeshTesterTool() void NavMeshTesterTool::init(Sample* sample) { m_sample = sample; - m_navMesh = sample->getNavMesh(); + m_navMesh = sample->navMesh; m_navQuery = sample->getNavMeshQuery(); recalc();