From: Stuart Buchanan Date: Fri, 6 Nov 2015 21:38:53 +0000 (+0000) Subject: QuadTree fix for large buildings. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=21e6dd34b260d2d65d1c6b968a8fc093d019a9a7;p=simgear.git QuadTree fix for large buildings. QuadTree relies on a bounding box to set up correctly. ProxyNodes don't have a BB until the model is loaded, causing the QuadTree to collapse if the DB loader can't keep up with the STG loader. Fix this by creating a default BB before the model is loaded. --- diff --git a/simgear/scene/tgdb/ReaderWriterSTG.cxx b/simgear/scene/tgdb/ReaderWriterSTG.cxx index 97216ec8..b0dfc10b 100644 --- a/simgear/scene/tgdb/ReaderWriterSTG.cxx +++ b/simgear/scene/tgdb/ReaderWriterSTG.cxx @@ -130,6 +130,12 @@ struct ReaderWriterSTG::_ModelBin { proxy->setLoadingExternalReferenceMode(osg::ProxyNode::DEFER_LOADING_TO_DATABASE_PAGER); proxy->setFileName(0, o._name); proxy->setDatabaseOptions(o._options.get()); + + // Give the node some values so the Quadtree builder has + // a BoundingBox to work with prior to the model being loaded. + proxy->setCenter(osg::Vec3f(0.0f,0.0f,0.0f)); + proxy->setRadius(10); + proxy->setCenterMode(osg::ProxyNode::UNION_OF_BOUNDING_SPHERE_AND_USER_DEFINED); node = proxy; } else { node = osgDB::readRefNodeFile(o._name, o._options.get()); @@ -292,7 +298,7 @@ struct ReaderWriterSTG::_ModelBin { // read a line std::string line; std::getline(stream, line); - + // strip comments std::string::size_type hash_pos = line.find('#'); if (hash_pos != std::string::npos)