From faea95b5fb894eb0a0e642ce1ddc8d2e90479289 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 10 Mar 2016 19:58:35 +0000 Subject: [PATCH] Added handling of auto stepping to ON_DEMAND handling. --- src/osgPresentation/SlideEventHandler.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/osgPresentation/SlideEventHandler.cpp b/src/osgPresentation/SlideEventHandler.cpp index 61f24ff99..b6ac0eb46 100644 --- a/src/osgPresentation/SlideEventHandler.cpp +++ b/src/osgPresentation/SlideEventHandler.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -1009,6 +1010,7 @@ bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAction _previousTime += getCurrentTimeDelayBetweenSlides(); nextLayerOrSlide(); + aa.requestRedraw(); } else { @@ -1676,6 +1678,17 @@ bool SlideEventHandler::checkNeedToDoFrame() if (_slideSwitch->getChild(_activeLayer)->getNumChildrenRequiringUpdateTraversal()>0) return true; } else if (_viewer->getSceneData()!=0 && _viewer->getSceneData()->getNumChildrenRequiringUpdateTraversal()>0) return true; + + if (_autoSteppingActive) + { + if (_firstTraversal) return true; + else + { + osg::Timer_t tick = osg::Timer::instance()->tick(); + double currentTime = osg::Timer::instance()->delta_s(_viewer->getStartTick(), tick); + if ((currentTime-_previousTime)>=getCurrentTimeDelayBetweenSlides()) return true; + } + } } // check if events are available and need processing