From c48335baf7defcef1e05e876e4623fdac3f72a25 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 13 Nov 2012 16:15:20 +0000 Subject: [PATCH] Added support for P3D_UPDATE env var for setting the UpdateVisitor::TRAVERSAL_MODE. Accepted settings are "active", "Active", "ACTIVE", or "all", "All", "ALL". --- applications/present3D/present3D.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/applications/present3D/present3D.cpp b/applications/present3D/present3D.cpp index a707d78a8..29c509342 100644 --- a/applications/present3D/present3D.cpp +++ b/applications/present3D/present3D.cpp @@ -536,11 +536,25 @@ int main( int argc, char **argv ) bool loopPresentation = false; while (arguments.read("--loop")) loopPresentation = true; + { + // set update hte default traversal mode settings for update visitor + osg::NodeVisitor::TraversalMode updateTraversalMode = viewer.getUpdateVisitor()->getTraversalMode(); - while(arguments.read("--update-active")) viewer.getUpdateVisitor()->setTraversalMode(osg::NodeVisitor::TRAVERSE_ACTIVE_CHILDREN); - while(arguments.read("--update-all")) viewer.getUpdateVisitor()->setTraversalMode(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN); + const char* p3dUpdateStr = getenv("P3D_UPDATE"); + if (p3dUpdateStr) + { + std::string updateStr(p3dUpdateStr); + if (updateStr=="active" || updateStr=="Active" || updateStr=="ACTIVE") updateTraversalMode = osg::NodeVisitor::TRAVERSE_ACTIVE_CHILDREN; + else if (updateStr=="all" || updateStr=="All" || updateStr=="ALL") updateTraversalMode = osg::NodeVisitor::TRAVERSE_ALL_CHILDREN; + } + while(arguments.read("--update-active")) updateTraversalMode = osg::NodeVisitor::TRAVERSE_ACTIVE_CHILDREN; + while(arguments.read("--update-all")) updateTraversalMode = osg::NodeVisitor::TRAVERSE_ALL_CHILDREN; + viewer.getUpdateVisitor()->setTraversalMode(updateTraversalMode); + } + + // register the slide event handler - which moves the presentation from slide to slide, layer to layer. osg::ref_ptr seh = new osgPresentation::SlideEventHandler(&viewer); viewer.addEventHandler(seh.get());