Example #1
0
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);
}
Example #2
0
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;
}