Added LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL and LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL ImageSequence::Mode's to allow for ImageSequence usage without using background paging threads, instead loading all the images on demand in the update traversal.

This commit is contained in:
Robert Osfield
2013-01-18 16:21:17 +00:00
parent e7e517f2d0
commit a0980734ac
5 changed files with 52 additions and 5 deletions

View File

@@ -42,6 +42,14 @@ bool ImageSequence_readLocalData(Object& obj, Input& fr)
{
is.setMode(osg::ImageSequence::PAGE_AND_DISCARD_USED_IMAGES);
}
else if (modeStr=="LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL")
{
is.setMode(osg::ImageSequence::LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL);
}
else if (modeStr=="LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL")
{
is.setMode(osg::ImageSequence::LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL);
}
}
double length;
@@ -103,6 +111,12 @@ bool ImageSequence_writeLocalData(const Object& obj, Output& fw)
case(osg::ImageSequence::PAGE_AND_DISCARD_USED_IMAGES):
fw.indent()<<"Mode PAGE_AND_DISCARD_USED_IMAGES"<<std::endl;
break;
case(osg::ImageSequence::LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL):
fw.indent()<<"Mode LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL"<<std::endl;
break;
case(osg::ImageSequence::LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL):
fw.indent()<<"Mode LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL"<<std::endl;
break;
}
fw.indent()<<"Length "<<is.getLength()<<std::endl;

View File

@@ -80,6 +80,8 @@ REGISTER_OBJECT_WRAPPER( ImageSequence,
ADD_ENUM_VALUE( PRE_LOAD_ALL_IMAGES );
ADD_ENUM_VALUE( PAGE_AND_RETAIN_IMAGES );
ADD_ENUM_VALUE( PAGE_AND_DISCARD_USED_IMAGES );
ADD_ENUM_VALUE( LOAD_AND_DISCARD_IN_UPDATE_TRAVERSAL );
ADD_ENUM_VALUE( LOAD_AND_RETAIN_IN_UPDATE_TRAVERSAL );
END_ENUM_SERIALIZER(); // _mode
ADD_DOUBLE_SERIALIZER( Length, 1.0 ); // _length