Added support for <imagesequence interaction_mode="USE_MOUSE_Y_POSITION">

This commit is contained in:
Robert Osfield
2012-11-08 15:45:23 +00:00
parent b6c6885a97
commit 1b871a822d
3 changed files with 26 additions and 5 deletions

View File

@@ -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;

View File

@@ -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 \""<<value.imageSequenceInteractionMode<<"\""<<std::endl;
}

View File

@@ -1037,6 +1037,11 @@ osg::Image* SlideShowConstructor::readImage(const std::string& filename, const I
{
imageSequence->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<osg::ImageSequence*>(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<osg::ImageSequence*>(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.