Modified Files:
src/Scenery/tileentry.cxx: Jonathan Wagner: Removes black dots by accounting for radius of nodes when calculating visible nodes for traversal without removing the optimization. Confirmed fix with a few people on IRC.
This commit is contained in:
parent
0b44409fca
commit
4317dbf729
1 changed files with 3 additions and 2 deletions
|
@ -66,6 +66,7 @@
|
||||||
|
|
||||||
SG_USING_STD(string);
|
SG_USING_STD(string);
|
||||||
|
|
||||||
|
// FIXME: investigate what huge update flood is clamped away here ...
|
||||||
class FGTileUpdateCallback : public osg::NodeCallback {
|
class FGTileUpdateCallback : public osg::NodeCallback {
|
||||||
public:
|
public:
|
||||||
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
|
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
|
||||||
|
@ -74,9 +75,9 @@ public:
|
||||||
SGUpdateVisitor* updateVisitor = static_cast<SGUpdateVisitor*>(nv);
|
SGUpdateVisitor* updateVisitor = static_cast<SGUpdateVisitor*>(nv);
|
||||||
|
|
||||||
osg::Vec3 center = node->getBound().center();
|
osg::Vec3 center = node->getBound().center();
|
||||||
double dist2 = distSqr(updateVisitor->getGlobalEyePos(),
|
double distance = dist(updateVisitor->getGlobalEyePos(),
|
||||||
SGVec3d(center[0], center[1], center[2]));
|
SGVec3d(center[0], center[1], center[2]));
|
||||||
if (updateVisitor->getSqrVisibility() < dist2)
|
if (updateVisitor->getVisibility() + node->getBound().radius() < distance)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
traverse(node, nv);
|
traverse(node, nv);
|
||||||
|
|
Loading…
Reference in a new issue