mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Recast: add more render options for tile overlay
This commit is contained in:
parent
00b8092d11
commit
8977b6ce04
@ -56,13 +56,22 @@ class NavMeshTileTool : public EditorTool
|
||||
|
||||
enum TextOverlayDrawMode
|
||||
{
|
||||
TO_DRAW_DISABLED = -1,
|
||||
TO_DRAW_POLY_GROUPS,
|
||||
TO_DRAW_POLY_SURF_AREAS
|
||||
TO_DRAW_MODE_DISABLED = -1,
|
||||
TO_DRAW_MODE_POLY_FLAGS,
|
||||
TO_DRAW_MODE_POLY_GROUPS,
|
||||
TO_DRAW_MODE_POLY_SURF_AREAS
|
||||
};
|
||||
|
||||
TextOverlayDrawMode m_textOverlayDrawMode;
|
||||
|
||||
enum TextOverlayDrawFlags
|
||||
{
|
||||
TO_DRAW_FLAGS_NONE = 1 << 0,
|
||||
TO_DRAW_FLAGS_INDICES = 1 << 1
|
||||
};
|
||||
|
||||
int m_textOverlayDrawFlags;
|
||||
|
||||
char m_polyRefTextInput[MAX_POLYREF_CHARS];
|
||||
bool m_hitPosSet;
|
||||
|
||||
@ -73,7 +82,8 @@ public:
|
||||
m_navMesh(0),
|
||||
m_selectedTraverseType(-2),
|
||||
m_markedPolyRef(0),
|
||||
m_textOverlayDrawMode(TO_DRAW_DISABLED),
|
||||
m_textOverlayDrawMode(TO_DRAW_MODE_DISABLED),
|
||||
m_textOverlayDrawFlags(TO_DRAW_FLAGS_NONE),
|
||||
m_hitPosSet(false)
|
||||
{
|
||||
rdVset(m_hitPos, 0.0f,0.0f,0.0f);
|
||||
@ -111,11 +121,17 @@ public:
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Debug Options");
|
||||
|
||||
if (ImGui::RadioButton("Show Poly Groups", m_textOverlayDrawMode == TO_DRAW_POLY_GROUPS))
|
||||
toggleTextOverlayDrawMode(TO_DRAW_POLY_GROUPS);
|
||||
if (ImGui::RadioButton("Show Poly Flags", m_textOverlayDrawMode == TO_DRAW_MODE_POLY_FLAGS))
|
||||
toggleTextOverlayDrawMode(TO_DRAW_MODE_POLY_FLAGS);
|
||||
|
||||
if (ImGui::RadioButton("Show Poly Surface Areas", m_textOverlayDrawMode == TO_DRAW_POLY_SURF_AREAS))
|
||||
toggleTextOverlayDrawMode(TO_DRAW_POLY_SURF_AREAS);
|
||||
if (ImGui::RadioButton("Show Poly Groups", m_textOverlayDrawMode == TO_DRAW_MODE_POLY_GROUPS))
|
||||
toggleTextOverlayDrawMode(TO_DRAW_MODE_POLY_GROUPS);
|
||||
|
||||
if (ImGui::RadioButton("Show Poly Surface Areas", m_textOverlayDrawMode == TO_DRAW_MODE_POLY_SURF_AREAS))
|
||||
toggleTextOverlayDrawMode(TO_DRAW_MODE_POLY_SURF_AREAS);
|
||||
|
||||
if (ImGui::RadioButton("Show Tile And Poly Indices", m_textOverlayDrawFlags & TO_DRAW_FLAGS_INDICES))
|
||||
toggleTextOverlayDrawFlags(TO_DRAW_FLAGS_INDICES);
|
||||
|
||||
if (m_navMesh)
|
||||
{
|
||||
@ -238,7 +254,7 @@ public:
|
||||
ImGui_RenderText(ImGuiTextAlign_e::kAlignCenter, ImVec2((float)x, h-((float)y-25)), ImVec4(0,0,0,0.8f), "(%d,%d)", tx,ty);
|
||||
}
|
||||
|
||||
if (m_navMesh && m_textOverlayDrawMode != TO_DRAW_DISABLED)
|
||||
if (m_navMesh && m_textOverlayDrawMode != TO_DRAW_MODE_DISABLED)
|
||||
{
|
||||
for (int i = 0; i < m_navMesh->getMaxTiles(); i++)
|
||||
{
|
||||
@ -250,12 +266,30 @@ public:
|
||||
const dtPoly* poly = &tile->polys[j];
|
||||
unsigned short value = 0;
|
||||
|
||||
const float* pos;
|
||||
if (poly->getType() == DT_POLYTYPE_OFFMESH_CONNECTION)
|
||||
{
|
||||
const unsigned int ip = (unsigned int)(poly - tile->polys);
|
||||
dtOffMeshConnection* con = &tile->offMeshCons[ip - tile->header->offMeshBase];
|
||||
|
||||
// Render on end position to prevent clutter, because
|
||||
// we already render ref positions on the start pos.
|
||||
pos = &con->pos[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
pos = poly->center;
|
||||
}
|
||||
|
||||
switch (m_textOverlayDrawMode)
|
||||
{
|
||||
case TO_DRAW_POLY_GROUPS:
|
||||
case TO_DRAW_MODE_POLY_FLAGS:
|
||||
value = poly->flags;
|
||||
break;
|
||||
case TO_DRAW_MODE_POLY_GROUPS:
|
||||
value = poly->groupId;
|
||||
break;
|
||||
case TO_DRAW_POLY_SURF_AREAS:
|
||||
case TO_DRAW_MODE_POLY_SURF_AREAS:
|
||||
value = poly->surfaceArea;
|
||||
break;
|
||||
default:
|
||||
@ -263,11 +297,15 @@ public:
|
||||
rdAssert(0);
|
||||
}
|
||||
|
||||
if (gluProject((GLdouble)poly->center[0]+drawOffset[0], (GLdouble)poly->center[1]+drawOffset[1], (GLdouble)poly->center[2]+drawOffset[2]+30,
|
||||
if (gluProject((GLdouble)pos[0]+drawOffset[0], (GLdouble)pos[1]+drawOffset[1], (GLdouble)pos[2]+drawOffset[2]+30,
|
||||
model, proj, view, &x, &y, &z))
|
||||
{
|
||||
const char* format = (m_textOverlayDrawFlags & TO_DRAW_FLAGS_INDICES)
|
||||
? "%hu (%d,%d)"
|
||||
: "%hu";
|
||||
|
||||
ImGui_RenderText(ImGuiTextAlign_e::kAlignCenter,
|
||||
ImVec2((float)x, h - (float)y), ImVec4(0, 0, 0, 0.8f), "%hu (%d,%d)", value, i, j);
|
||||
ImVec2((float)x, h - (float)y), ImVec4(0, 0, 0, 0.8f), format, value, i, j);
|
||||
}
|
||||
}
|
||||
|
||||
@ -293,9 +331,11 @@ public:
|
||||
void toggleTextOverlayDrawMode(const TextOverlayDrawMode drawMode)
|
||||
{
|
||||
m_textOverlayDrawMode == drawMode
|
||||
? m_textOverlayDrawMode = TO_DRAW_DISABLED
|
||||
? m_textOverlayDrawMode = TO_DRAW_MODE_DISABLED
|
||||
: m_textOverlayDrawMode = drawMode;
|
||||
}
|
||||
|
||||
void toggleTextOverlayDrawFlags(unsigned int flag) { m_textOverlayDrawFlags ^= flag; }
|
||||
};
|
||||
#undef STR_TO_ID
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user