bool SlideEventHandler::nextLayer() { LayerAttributes* la = (_slideSwitch.valid() && _activeLayer<static_cast<int>(_slideSwitch->getNumChildren())) ? dynamic_cast<LayerAttributes*>(_slideSwitch->getChild(_activeLayer)->getUserData()) : 0; if (la) { la->callLeaveCallbacks(_slideSwitch->getChild(_activeLayer)); if (la->requiresJump()) { if (la->getRelativeJump()) { int previousSlide = getActiveSlide(); int previousLayer = getActiveLayer(); int newSlide = previousSlide + la->getSlideNum(); int newLayer = previousLayer + la->getLayerNum(); if (newLayer<0) { newLayer = 0; } return selectSlide(newSlide, newLayer); } else { return selectSlide(la->getSlideNum(),la->getLayerNum()); } } } OSG_INFO<<"nextLayer() calling selectLayer("<<_activeLayer+1<<")"<<std::endl; return selectLayer(_activeLayer+1); }
bool SlideEventHandler::nextSlide() { OSG_INFO<<"nextSlide()"<<std::endl; LayerAttributes* la = _slideSwitch.valid() ? dynamic_cast<LayerAttributes*>(_slideSwitch->getUserData()) : 0; if (la && la->requiresJump()) { if (la->getRelativeJump()) { int previousSlide = getActiveSlide(); int previousLayer = getActiveLayer(); int newSlide = previousSlide + la->getSlideNum(); int newLayer = previousLayer + la->getLayerNum(); if (newLayer<0) { newLayer = 0; } return selectSlide(newSlide, newLayer); } else { return selectSlide(la->getSlideNum(),la->getLayerNum()); } } if (selectSlide(_activeSlide+1)) return true; else if (_loopPresentation) return selectSlide(0); else return false; }