mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Recast: several fixes for traverse link renderer
-1 is used by the game, and means only traverse links on the same polygon island. This has now been properly implemented. Also fixed a crash when enabling the "Traverse Links" Detour render option with no navmesh loaded.
This commit is contained in:
parent
40d07f09a4
commit
ba43a1ab72
@ -862,12 +862,12 @@ void Editor::renderDetourDebugMenu()
|
|||||||
if (ImGui::Checkbox("Traverse Links", &isEnabled))
|
if (ImGui::Checkbox("Traverse Links", &isEnabled))
|
||||||
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_TRAVERSE_LINKS);
|
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_TRAVERSE_LINKS);
|
||||||
|
|
||||||
if (isEnabled)
|
if (isEnabled && m_navMesh) // Supplemental options only available with a valid navmesh!
|
||||||
{
|
{
|
||||||
ImGui::PushItemWidth(190);
|
ImGui::PushItemWidth(190);
|
||||||
ImGui::SliderInt("Traverse Type", &m_traverseLinkParams.traverseLinkType, -1, 31);
|
ImGui::SliderInt("Traverse Type", &m_traverseLinkParams.traverseLinkType, -1, 31);
|
||||||
ImGui::SliderInt("Traverse Dist", &m_traverseLinkParams.traverseLinkDistance, -1, 255);
|
ImGui::SliderInt("Traverse Dist", &m_traverseLinkParams.traverseLinkDistance, -1, 255);
|
||||||
ImGui::SliderInt("Traverse Anim", &m_traverseLinkParams.traverseAnimType, -1, m_navMesh->getParams()->traverseTableCount-1);
|
ImGui::SliderInt("Traverse Anim", &m_traverseLinkParams.traverseAnimType, -2, m_navMesh->getParams()->traverseTableCount-1);
|
||||||
ImGui::PopItemWidth();
|
ImGui::PopItemWidth();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,11 +48,14 @@ struct duDrawTraverseLinkParams
|
|||||||
duDrawTraverseLinkParams() :
|
duDrawTraverseLinkParams() :
|
||||||
traverseLinkType(-1),
|
traverseLinkType(-1),
|
||||||
traverseLinkDistance(-1),
|
traverseLinkDistance(-1),
|
||||||
traverseAnimType(-1)
|
traverseAnimType(-2)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
int traverseLinkType;
|
int traverseLinkType;
|
||||||
int traverseLinkDistance;
|
int traverseLinkDistance;
|
||||||
|
|
||||||
|
// -2 means all, -1 means disjoint poly groups only, anything above
|
||||||
|
// refers to an actual anim type and indexes into the traverse tables.
|
||||||
int traverseAnimType;
|
int traverseAnimType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -171,9 +171,9 @@ static void drawTraverseLinks(duDebugDraw* dd, const dtNavMesh& mesh, const dtNa
|
|||||||
const int drawAnimType = traverseLinkParams.traverseAnimType;
|
const int drawAnimType = traverseLinkParams.traverseAnimType;
|
||||||
const dtPolyRef basePolyRef = mesh.getPolyRefBase(tile) | (dtPolyRef)i;
|
const dtPolyRef basePolyRef = mesh.getPolyRefBase(tile) | (dtPolyRef)i;
|
||||||
|
|
||||||
if (drawAnimType != -1 &&
|
if (drawAnimType != -2 &&
|
||||||
!mesh.isGoalPolyReachable(basePolyRef, link->ref, false, drawAnimType) &&
|
!mesh.isGoalPolyReachable(basePolyRef, link->ref, drawAnimType == -1, drawAnimType) &&
|
||||||
!mesh.isGoalPolyReachable(link->ref, basePolyRef, false, drawAnimType))
|
!mesh.isGoalPolyReachable(link->ref, basePolyRef, drawAnimType == -1, drawAnimType))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const dtPoly* endPoly;
|
const dtPoly* endPoly;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user