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.
This commit is contained in:
@@ -130,6 +130,12 @@ struct ReaderWriterSTG::_ModelBin {
|
|||||||
proxy->setLoadingExternalReferenceMode(osg::ProxyNode::DEFER_LOADING_TO_DATABASE_PAGER);
|
proxy->setLoadingExternalReferenceMode(osg::ProxyNode::DEFER_LOADING_TO_DATABASE_PAGER);
|
||||||
proxy->setFileName(0, o._name);
|
proxy->setFileName(0, o._name);
|
||||||
proxy->setDatabaseOptions(o._options.get());
|
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;
|
node = proxy;
|
||||||
} else {
|
} else {
|
||||||
node = osgDB::readRefNodeFile(o._name, o._options.get());
|
node = osgDB::readRefNodeFile(o._name, o._options.get());
|
||||||
@@ -292,7 +298,7 @@ struct ReaderWriterSTG::_ModelBin {
|
|||||||
// read a line
|
// read a line
|
||||||
std::string line;
|
std::string line;
|
||||||
std::getline(stream, line);
|
std::getline(stream, line);
|
||||||
|
|
||||||
// strip comments
|
// strip comments
|
||||||
std::string::size_type hash_pos = line.find('#');
|
std::string::size_type hash_pos = line.find('#');
|
||||||
if (hash_pos != std::string::npos)
|
if (hash_pos != std::string::npos)
|
||||||
|
|||||||
Reference in New Issue
Block a user