From 315065df24f3364ade4c190604b8b1c7dfa70bc5 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sat, 20 Dec 2003 23:25:05 +0000 Subject: [PATCH] Fixed PagedLOD's handling of distances beyond the furthest range. --- src/osg/PagedLOD.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/osg/PagedLOD.cpp b/src/osg/PagedLOD.cpp index 400b3a815..10a2f73ca 100644 --- a/src/osg/PagedLOD.cpp +++ b/src/osg/PagedLOD.cpp @@ -33,28 +33,35 @@ void PagedLOD::traverse(NodeVisitor& nv) case(NodeVisitor::TRAVERSE_ACTIVE_CHILDREN): { float distance = nv.getDistanceToEyePoint(getCenter(),true); - - // first check to see if any children can be directly traversed. - unsigned int numChildren = minimum(_children.size(), - _rangeList.size()); - bool childTraversed = false; - for(unsigned int i=0;iaccept(nv); - childTraversed = true; + //std::cout<<"PagedLOD::traverse() - Selecting child "<accept(nv); + lastChildTraversed = (int)i; + } + else + { + needToLoadChild = true; + } } } - if (!childTraversed) + if (needToLoadChild) { + unsigned int numChildren = _children.size(); + //std::cout<<"PagedLOD::traverse() - falling back "<0) + if (numChildren>0 && ((int)numChildren-1)!=lastChildTraversed) { //std::cout<<" to child "<