From 1b871a822da48a7b1ca906edee846fb049e1c3c5 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 8 Nov 2012 15:45:23 +0000 Subject: [PATCH] Added support for --- include/osgPresentation/SlideShowConstructor | 3 ++- src/osgPlugins/p3d/ReaderWriterP3D.cpp | 1 + src/osgPresentation/SlideShowConstructor.cpp | 27 +++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/include/osgPresentation/SlideShowConstructor b/include/osgPresentation/SlideShowConstructor index 25214d9cf..28726b9e7 100644 --- a/include/osgPresentation/SlideShowConstructor +++ b/include/osgPresentation/SlideShowConstructor @@ -265,7 +265,8 @@ public: enum ImageSequenceInteractionMode { PLAY_AUTOMATICALLY_LIKE_MOVIE, - USE_MOUSE_X_POSITION + USE_MOUSE_X_POSITION, + USE_MOUSE_Y_POSITION }; ImageSequenceInteractionMode imageSequenceInteractionMode; diff --git a/src/osgPlugins/p3d/ReaderWriterP3D.cpp b/src/osgPlugins/p3d/ReaderWriterP3D.cpp index 64d4e2415..8667b3e64 100644 --- a/src/osgPlugins/p3d/ReaderWriterP3D.cpp +++ b/src/osgPlugins/p3d/ReaderWriterP3D.cpp @@ -895,6 +895,7 @@ bool ReaderWriterP3DXML::getProperties(osgDB::XmlNode*cur, osgPresentation::Slid if (str=="PLAY_AUTOMATICALLY_LIKE_MOVIE") value.imageSequenceInteractionMode = osgPresentation::SlideShowConstructor::ImageData::PLAY_AUTOMATICALLY_LIKE_MOVIE; else if (str=="USE_MOUSE_X_POSITION") value.imageSequenceInteractionMode = osgPresentation::SlideShowConstructor::ImageData::USE_MOUSE_X_POSITION; + else if (str=="USE_MOUSE_Y_POSITION") value.imageSequenceInteractionMode = osgPresentation::SlideShowConstructor::ImageData::USE_MOUSE_Y_POSITION; OSG_NOTIFY(_notifyLevel)<<"read imageSequencePagingMode \""<setName("USE_MOUSE_X_POSITION"); } + else if (imageData.imageSequenceInteractionMode==ImageData::USE_MOUSE_Y_POSITION) + { + imageSequence->setName("USE_MOUSE_Y_POSITION"); + } + imageSequence->play(); @@ -1131,9 +1136,16 @@ void SlideShowConstructor::addImage(const std::string& filename, const PositionD } osg::ImageSequence* imageSequence = dynamic_cast(image.get()); - if (imageSequence && imageData.imageSequenceInteractionMode==ImageData::USE_MOUSE_X_POSITION) + if (imageSequence) { - subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.x_normalized")); + if (imageData.imageSequenceInteractionMode==ImageData::USE_MOUSE_X_POSITION) + { + subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.x_normalized")); + } + else if (imageData.imageSequenceInteractionMode==ImageData::USE_MOUSE_Y_POSITION) + { + subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.y_normalized")); + } } // attached any rotation @@ -1318,9 +1330,16 @@ void SlideShowConstructor::addStereoImagePair(const std::string& filenameLeft, c subgraph->addChild(pictureRight); osg::ImageSequence* imageSequence = dynamic_cast(imageLeft.get()); - if (imageSequence && imageDataLeft.imageSequenceInteractionMode==ImageData::USE_MOUSE_X_POSITION) + if (imageSequence) { - subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.x_normalized")); + if (imageDataLeft.imageSequenceInteractionMode==ImageData::USE_MOUSE_X_POSITION) + { + subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.x_normalized")); + } + else if (imageDataLeft.imageSequenceInteractionMode==ImageData::USE_MOUSE_Y_POSITION) + { + subgraph->setUpdateCallback(new osgPresentation::ImageSequenceUpdateCallback(imageSequence, _propertyManager.get(), "mouse.y_normalized")); + } } // attach any meterial animation.