summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerdisplay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewerdisplay.cpp')
-rw-r--r--indra/newview/llviewerdisplay.cpp48
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