| 1358 | } |
| 1359 | |
| 1360 | void NavMesh::render(ObjectRenderInst *ri, SceneRenderState *state, BaseMatInstance *overrideMat) |
| 1361 | { |
| 1362 | if(overrideMat) |
| 1363 | return; |
| 1364 | |
| 1365 | if(state->isReflectPass()) |
| 1366 | return; |
| 1367 | |
| 1368 | PROFILE_SCOPE(NavMesh_Render); |
| 1369 | |
| 1370 | // Recast debug draw |
| 1371 | NetObject *no = getServerObject(); |
| 1372 | if(no) |
| 1373 | { |
| 1374 | NavMesh *n = static_cast<NavMesh*>(no); |
| 1375 | |
| 1376 | if(n->isSelected()) |
| 1377 | { |
| 1378 | GFXDrawUtil *drawer = GFX->getDrawUtil(); |
| 1379 | |
| 1380 | GFXStateBlockDesc desc; |
| 1381 | desc.setZReadWrite(true, false); |
| 1382 | desc.setBlend(true); |
| 1383 | desc.setCullMode(GFXCullNone); |
| 1384 | |
| 1385 | drawer->drawCube(desc, getWorldBox(), n->mBuilding |
| 1386 | ? ColorI(255, 0, 0, 80) |
| 1387 | : ColorI(136, 228, 255, 45)); |
| 1388 | desc.setFillModeWireframe(); |
| 1389 | drawer->drawCube(desc, getWorldBox(), ColorI::BLACK); |
| 1390 | } |
| 1391 | |
| 1392 | if(n->mBuilding) |
| 1393 | { |
| 1394 | int alpha = 80; |
| 1395 | if(!n->isSelected() || !Con::getBoolVariable("$Nav::EditorOpen")) |
| 1396 | alpha = 20; |
| 1397 | mDbgDraw.overrideColor(duRGBA(255, 0, 0, alpha)); |
| 1398 | } |
| 1399 | else |
| 1400 | { |
| 1401 | mDbgDraw.cancelOverride(); |
| 1402 | } |
| 1403 | |
| 1404 | if((!gEditingMission && n->mAlwaysRender) || (gEditingMission && Con::getBoolVariable("$Nav::Editor::renderMesh", 1))) mDbgDraw.renderGroup(0); |
| 1405 | if(Con::getBoolVariable("$Nav::Editor::renderPortals")) mDbgDraw.renderGroup(1); |
| 1406 | if(Con::getBoolVariable("$Nav::Editor::renderBVTree")) mDbgDraw.renderGroup(2); |
| 1407 | } |
| 1408 | } |
| 1409 | |
| 1410 | void NavMesh::renderLinks(duDebugDraw &dd) |
| 1411 | { |
no test coverage detected