void drawTiles(duDebugDraw* dd, dtTileCache* tc) { unsigned int fcol[6]; float bmin[3], bmax[3]; for (int i = 0; i < tc->getTileCount(); ++i) { const dtCompressedTile* tile = tc->getTile(i); if (!tile->header) continue; tc->calcTightTileBounds(tile->header, bmin, bmax); const unsigned int col = duIntToCol(i,64); duCalcBoxColors(fcol, col, col); duDebugDrawBox(dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], fcol); } for (int i = 0; i < tc->getTileCount(); ++i) { const dtCompressedTile* tile = tc->getTile(i); if (!tile->header) continue; tc->calcTightTileBounds(tile->header, bmin, bmax); const unsigned int col = duIntToCol(i,255); const float pad = tc->getParams()->cs * 0.1f; duDebugDrawBoxWire(dd, bmin[0]-pad,bmin[1]-pad,bmin[2]-pad, bmax[0]+pad,bmax[1]+pad,bmax[2]+pad, col, 2.0f); } }
void duDebugDrawHeightfieldSolid(duDebugDraw* dd, const rcHeightfield& hf) { if (!dd) return; const float* orig = hf.bmin; const float cs = hf.cs; const float ch = hf.ch; const int w = hf.width; const int h = hf.height; unsigned int fcol[6]; duCalcBoxColors(fcol, duRGBA(255,255,255,255), duRGBA(255,255,255,255)); dd->begin(DU_DRAW_QUADS); for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { float fx = orig[0] + x*cs; float fz = orig[2] + y*cs; const rcSpan* s = hf.spans[x + y*w]; while (s) { duAppendBox(dd, fx, orig[1]+s->smin*ch, fz, fx+cs, orig[1] + s->smax*ch, fz+cs, fcol); s = s->next; } } } dd->end(); }
void duDebugDrawHeightfieldWalkable(duDebugDraw* dd, const rcHeightfield& hf) { if (!dd) return; const float* orig = hf.bmin; const float cs = hf.cs; const float ch = hf.ch; const int w = hf.width; const int h = hf.height; unsigned int fcol[6]; duCalcBoxColors(fcol, duRGBA(255,255,255,255), duRGBA(217,217,217,255)); dd->begin(DU_DRAW_QUADS); for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { float fx = orig[0] + x*cs; float fz = orig[2] + y*cs; const rcSpan* s = hf.spans[x + y*w]; while (s) { if (s->area == RC_WALKABLE_AREA) fcol[0] = duRGBA(64,128,160,255); else if (s->area == RC_NULL_AREA) fcol[0] = duRGBA(64,64,64,255); else fcol[0] = duMultCol(duIntToCol(s->area, 255), 200); duAppendBox(dd, fx, orig[1]+s->smin*ch, fz, fx+cs, orig[1] + s->smax*ch, fz+cs, fcol); s = s->next; } } } dd->end(); }