From 65e49cf9db7c53df17898465c1f2426c5f4bd029 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 15 Sep 2010 11:36:45 +0000 Subject: [PATCH] From Laura Cerritelli, "I modified TXPPagedLOD::traverse to prevent the terrain from inappropriately unloading the higher level of detail tiles. It wasn?t updating the frame number of the tile or the range it was traversing, causing PagedLOD::removeExpiredChildren to always consider the range expired." --- src/osgPlugins/txp/TXPPagedLOD.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/osgPlugins/txp/TXPPagedLOD.cpp b/src/osgPlugins/txp/TXPPagedLOD.cpp index 1e61e2a74..34194ff34 100644 --- a/src/osgPlugins/txp/TXPPagedLOD.cpp +++ b/src/osgPlugins/txp/TXPPagedLOD.cpp @@ -30,6 +30,15 @@ void TXPPagedLOD::traverse(osg::NodeVisitor& nv) double timeStamp = nv.getFrameStamp()?nv.getFrameStamp()->getReferenceTime():0.0; bool updateTimeStamp = nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR; + int frameNumber = nv.getFrameStamp()?nv.getFrameStamp()->getFrameNumber():0; + + // set the frame number of the traversal so that external nodes can find out how active this + // node is. + if (nv.getFrameStamp() && + nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR) + { + setFrameNumberOfLastTraversal(nv.getFrameStamp()->getFrameNumber()); + } switch(nv.getTraversalMode()) { @@ -55,7 +64,10 @@ void TXPPagedLOD::traverse(osg::NodeVisitor& nv) if (i<_children.size()) { if (updateTimeStamp) + { _perRangeDataList[i]._timeStamp=timeStamp; + _perRangeDataList[i]._frameNumber=frameNumber; + } _children[i]->accept(nv); lastChildTraversed = (int)i;