mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Recast: add new render toggle settings
Synced from Perforce.
This commit is contained in:
parent
025a23991f
commit
33b6d9e351
@ -374,6 +374,20 @@ void Editor_TileMesh::handleDebugMode()
|
|||||||
|
|
||||||
if (unavail == MAX_DRAWMODE)
|
if (unavail == MAX_DRAWMODE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
imguiLabel("Render Options");
|
||||||
|
|
||||||
|
if (imguiCheck("Draw Vertex Points", (getNavMeshDrawFlags() & DU_DRAWNAVMESH_NO_VERTS) == 0))
|
||||||
|
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_NO_VERTS);
|
||||||
|
|
||||||
|
if (imguiCheck("Draw Inner Poly Boundaries", (getNavMeshDrawFlags() & DU_DRAWNAVMESH_NO_INNERBOUND) == 0))
|
||||||
|
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_NO_INNERBOUND);
|
||||||
|
|
||||||
|
if (imguiCheck("Draw Outer Poly Boundaries", (getNavMeshDrawFlags() & DU_DRAWNAVMESH_NO_OUTERBOUND) == 0))
|
||||||
|
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_NO_OUTERBOUND);
|
||||||
|
|
||||||
|
if (imguiCheck("Disable NavMesh Transparency", (getNavMeshDrawFlags() & DU_DRAWNAVMESH_NO_ALPHA)))
|
||||||
|
toggleNavMeshDrawFlag(DU_DRAWNAVMESH_NO_ALPHA);
|
||||||
|
|
||||||
imguiLabel("Draw");
|
imguiLabel("Draw");
|
||||||
if (imguiCheck("Input Mesh", m_drawMode == DRAWMODE_MESH, valid[DRAWMODE_MESH]))
|
if (imguiCheck("Input Mesh", m_drawMode == DRAWMODE_MESH, valid[DRAWMODE_MESH]))
|
||||||
|
@ -179,8 +179,10 @@ public:
|
|||||||
virtual float getAgentHeight() { return m_agentHeight; }
|
virtual float getAgentHeight() { return m_agentHeight; }
|
||||||
virtual float getAgentClimb() { return m_agentMaxClimb; }
|
virtual float getAgentClimb() { return m_agentMaxClimb; }
|
||||||
|
|
||||||
unsigned char getNavMeshDrawFlags() const { return m_navMeshDrawFlags; }
|
inline unsigned char getNavMeshDrawFlags() const { return m_navMeshDrawFlags; }
|
||||||
void setNavMeshDrawFlags(unsigned char flags) { m_navMeshDrawFlags = flags; }
|
inline void setNavMeshDrawFlags(unsigned char flags) { m_navMeshDrawFlags = flags; }
|
||||||
|
|
||||||
|
inline void toggleNavMeshDrawFlag(unsigned char flag) { m_navMeshDrawFlags ^= flag; }
|
||||||
|
|
||||||
void updateToolStates(const float dt);
|
void updateToolStates(const float dt);
|
||||||
void initToolStates(Editor* editor);
|
void initToolStates(Editor* editor);
|
||||||
|
@ -25,9 +25,13 @@
|
|||||||
|
|
||||||
enum DrawNavMeshFlags
|
enum DrawNavMeshFlags
|
||||||
{
|
{
|
||||||
DU_DRAWNAVMESH_OFFMESHCONS = 0x01,
|
DU_DRAWNAVMESH_OFFMESHCONS = 1 << 0,
|
||||||
DU_DRAWNAVMESH_CLOSEDLIST = 0x02,
|
DU_DRAWNAVMESH_CLOSEDLIST = 1 << 1,
|
||||||
DU_DRAWNAVMESH_COLOR_TILES = 0x04,
|
DU_DRAWNAVMESH_COLOR_TILES = 1 << 2,
|
||||||
|
DU_DRAWNAVMESH_NO_VERTS = 1 << 3, // Do not render vertex points
|
||||||
|
DU_DRAWNAVMESH_NO_INNERBOUND = 1 << 4, // Do not render inner poly boundaries
|
||||||
|
DU_DRAWNAVMESH_NO_OUTERBOUND = 1 << 5, // Do not render outer poly boundaries
|
||||||
|
DU_DRAWNAVMESH_NO_ALPHA = 1 << 6, // Render meshes as opaque.
|
||||||
};
|
};
|
||||||
|
|
||||||
void duDebugDrawNavMesh(struct duDebugDraw* dd, const dtNavMesh& mesh, unsigned char flags);
|
void duDebugDrawNavMesh(struct duDebugDraw* dd, const dtNavMesh& mesh, unsigned char flags);
|
||||||
|
@ -22,11 +22,11 @@
|
|||||||
#include "Detour/Include/DetourCommon.h"
|
#include "Detour/Include/DetourCommon.h"
|
||||||
#include "Detour/Include/DetourNode.h"
|
#include "Detour/Include/DetourNode.h"
|
||||||
|
|
||||||
static unsigned int getPolySurfaceColor(const dtPoly* poly, duDebugDraw* dd)
|
static unsigned int getPolySurfaceColor(const dtPoly* poly, duDebugDraw* dd, const unsigned int alpha)
|
||||||
{
|
{
|
||||||
return poly->groupId == DT_STRAY_POLY_GROUP
|
return poly->groupId == DT_STRAY_POLY_GROUP
|
||||||
? duTransCol(duRGBA(240,20,10,255), 170)
|
? duTransCol(duRGBA(240,20,10,255), alpha)
|
||||||
: duTransCol(dd->areaToCol(poly->getArea()), 170);
|
: duTransCol(dd->areaToCol(poly->getArea()), alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int getPolyBoundaryColor(const dtPoly* poly, const bool inner)
|
static unsigned int getPolyBoundaryColor(const dtPoly* poly, const bool inner)
|
||||||
@ -139,9 +139,13 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh& mesh, const dtNavMesh
|
|||||||
dtPolyRef base = mesh.getPolyRefBase(tile);
|
dtPolyRef base = mesh.getPolyRefBase(tile);
|
||||||
|
|
||||||
int tileNum = mesh.decodePolyIdTile(base);
|
int tileNum = mesh.decodePolyIdTile(base);
|
||||||
const unsigned int tileColor = duIntToCol(tileNum, 128);
|
|
||||||
|
// If "No Alpha" flag is set, force the colour to be opaque instead of semi-transparent.
|
||||||
|
const int tileAlpha = flags & DU_DRAWNAVMESH_NO_ALPHA ? 255 : 170;
|
||||||
|
|
||||||
|
const unsigned int tileColor = duIntToCol(tileNum, tileAlpha);
|
||||||
|
|
||||||
dd->depthMask(false);
|
dd->depthMask(true);
|
||||||
|
|
||||||
dd->begin(DU_DRAW_TRIS);
|
dd->begin(DU_DRAW_TRIS);
|
||||||
for (int i = 0; i < tile->header->polyCount; ++i)
|
for (int i = 0; i < tile->header->polyCount; ++i)
|
||||||
@ -160,7 +164,7 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh& mesh, const dtNavMesh
|
|||||||
if (flags & DU_DRAWNAVMESH_COLOR_TILES)
|
if (flags & DU_DRAWNAVMESH_COLOR_TILES)
|
||||||
col = tileColor;
|
col = tileColor;
|
||||||
else
|
else
|
||||||
col = getPolySurfaceColor(p, dd);
|
col = getPolySurfaceColor(p, dd, tileAlpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < pd->triCount; ++j)
|
for (int j = 0; j < pd->triCount; ++j)
|
||||||
@ -178,10 +182,12 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh& mesh, const dtNavMesh
|
|||||||
dd->end();
|
dd->end();
|
||||||
|
|
||||||
// Draw inner poly boundaries
|
// Draw inner poly boundaries
|
||||||
drawPolyBoundaries(dd, tile, 1.5f, true);
|
if (!(flags & DU_DRAWNAVMESH_NO_INNERBOUND))
|
||||||
|
drawPolyBoundaries(dd, tile, 1.5f, true);
|
||||||
|
|
||||||
// Draw outer poly boundaries
|
// Draw outer poly boundaries
|
||||||
drawPolyBoundaries(dd, tile, 2.5f, false);
|
if (!(flags & DU_DRAWNAVMESH_NO_OUTERBOUND))
|
||||||
|
drawPolyBoundaries(dd, tile, 2.5f, false);
|
||||||
|
|
||||||
// Draw poly centers
|
// Draw poly centers
|
||||||
drawPolyCenters(dd, tile, duRGBA(255, 255, 255, 100), 1.0f);
|
drawPolyCenters(dd, tile, duRGBA(255, 255, 255, 100), 1.0f);
|
||||||
@ -244,14 +250,17 @@ static void drawMeshTile(duDebugDraw* dd, const dtNavMesh& mesh, const dtNavMesh
|
|||||||
dd->end();
|
dd->end();
|
||||||
}
|
}
|
||||||
|
|
||||||
const unsigned int vcol = duRGBA(0,0,0,196);
|
if ((flags & DU_DRAWNAVMESH_NO_VERTS) == 0)
|
||||||
dd->begin(DU_DRAW_POINTS, 3.0f);
|
|
||||||
for (int i = 0; i < tile->header->vertCount; ++i)
|
|
||||||
{
|
{
|
||||||
const float* v = &tile->verts[i*3];
|
const unsigned int vcol = duRGBA(0,0,0,196);
|
||||||
dd->vertex(v[0], v[1], v[2], vcol);
|
dd->begin(DU_DRAW_POINTS, 3.0f);
|
||||||
|
for (int i = 0; i < tile->header->vertCount; ++i)
|
||||||
|
{
|
||||||
|
const float* v = &tile->verts[i*3];
|
||||||
|
dd->vertex(v[0], v[1], v[2], vcol);
|
||||||
|
}
|
||||||
|
dd->end();
|
||||||
}
|
}
|
||||||
dd->end();
|
|
||||||
|
|
||||||
dd->depthMask(true);
|
dd->depthMask(true);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user