Fix hang on "Loading Scenery" over the sea
Previously attempting to start on an ocean tile with static models present cause FG to spin on "Loading Scenery". This was caused by not creating a BVH for an ocean tile in the specific case where there was STG models, due to a PagedLOD node being inserted in the scene graph. So FG never thought the scenery was loaded sufficient to place the aircraft. By explicitly creating a BVH for ocean tiles the problem is fixed. Candidate for 2020.X
This commit is contained in:
parent
1d9fa929fa
commit
2ad4d2e672
@ -41,6 +41,7 @@
|
|||||||
#include <simgear/scene/material/EffectGeode.hxx>
|
#include <simgear/scene/material/EffectGeode.hxx>
|
||||||
#include <simgear/scene/material/mat.hxx>
|
#include <simgear/scene/material/mat.hxx>
|
||||||
#include <simgear/scene/material/matlib.hxx>
|
#include <simgear/scene/material/matlib.hxx>
|
||||||
|
#include <simgear/scene/model/BoundingVolumeBuildVisitor.hxx>
|
||||||
#include <simgear/scene/util/OsgMath.hxx>
|
#include <simgear/scene/util/OsgMath.hxx>
|
||||||
#include <simgear/scene/util/VectorArrayAdapter.hxx>
|
#include <simgear/scene/util/VectorArrayAdapter.hxx>
|
||||||
#include <simgear/scene/util/SGNodeMasks.hxx>
|
#include <simgear/scene/util/SGNodeMasks.hxx>
|
||||||
@ -340,5 +341,10 @@ osg::Node* SGOceanTile(const SGBucket& b, SGMaterialLib *matlib, int latPoints,
|
|||||||
transform->addChild(geode);
|
transform->addChild(geode);
|
||||||
transform->setNodeMask( ~(simgear::CASTSHADOW_BIT | simgear::MODELLIGHT_BIT) );
|
transform->setNodeMask( ~(simgear::CASTSHADOW_BIT | simgear::MODELLIGHT_BIT) );
|
||||||
|
|
||||||
|
// Create a BVH at this point. This is normally provided by the file loader, but as we create the
|
||||||
|
// geometry programmatically, no file loader is involved.
|
||||||
|
BoundingVolumeBuildVisitor bvhBuilder(false);
|
||||||
|
transform->accept(bvhBuilder);
|
||||||
|
|
||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user