diff options
Diffstat (limited to 'indra/newview/llviewerdisplay.cpp')
-rw-r--r-- | indra/newview/llviewerdisplay.cpp | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index cb40af7061..e8029293fc 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -77,6 +77,9 @@ #include "llwlparammanager.h" #include "llwaterparammanager.h" #include "llpostprocess.h" +#include "LLPathingLib.h" +#include "llfloaterpathfindingconsole.h" +#include "llfloaterreg.h" extern LLPointer<LLViewerTexture> gStartTexture; @@ -880,7 +883,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } LLAppViewer::instance()->pingMainloopTimeout("Display:RenderGeom"); - + bool exclusiveDraw = false; + BOOL allowRenderables = false; + BOOL allowPathToBeDrawn = false; if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot()) && !gRestoreGL) { @@ -893,9 +898,48 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } else { - gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE); + //Render any navmesh geometry + if ( LLPathingLib::getInstance() ) + { + //Determine if we can should overlay the navmesh ontop of the scenes typical renderables + LLFloaterPathfindingConsole* pFloater = LLFloaterReg::getTypedInstance<LLFloaterPathfindingConsole>("pathfinding_console"); + if ( pFloater && pFloater->allowAllRenderables() ) + { + allowRenderables = true; + } + //Determine if we should also draw a user supplied path on top of the scene + if ( pFloater && pFloater->getShowPathToggle() ) + { + allowPathToBeDrawn = true; + } + //NavMesh + if ( LLPathingLib::getInstance()->getRenderNavMeshState() ) + { + glClearColor(0.0f, 0.0f, 0.0f, 0.5f); + glEnable(GL_DEPTH_TEST); + gGL.setAmbientLightColor( LLColor4::white ); + LLPathingLib::getInstance()->renderNavMesh( allowRenderables ); + exclusiveDraw = true; + } + //physics/exclusion shapes + if ( LLPathingLib::getInstance()->getRenderShapeState() ) + { + LLPathingLib::getInstance()->renderNavMeshShapesVBO(); + exclusiveDraw = true; + } + //User designated path + if ( allowPathToBeDrawn ) + { + LLPathingLib::getInstance()->renderPath(); + } + } } + if ( !exclusiveDraw || allowRenderables ) + { + gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE); + } + gGL.setColorMask(true, true); //store this frame's modelview matrix for use |