diff --git a/simgear/scene/tgdb/VPBTechnique.cxx b/simgear/scene/tgdb/VPBTechnique.cxx index 7cae7154..107d12db 100644 --- a/simgear/scene/tgdb/VPBTechnique.cxx +++ b/simgear/scene/tgdb/VPBTechnique.cxx @@ -2251,6 +2251,13 @@ void VPBTechnique::removeElevationConstraint(osg::ref_ptr constraint) _constraintGroup->removeChild(constraint.get()); } +void VPBTechnique::clearElevationConstraints() +{ + const std::lock_guard lock(VPBTechnique::_constraint_mutex); // Lock the _constraintGroup for this scope + _constraintGroup = new osg::Group(); +} + + // Check a given vertex against any elevation constraints E.g. to ensure the terrain mesh doesn't // poke through any airport meshes. If such a constraint exists, the function will return a replacement // vertex displaces such that it lies 1m below the contraint relative to the passed in origin. diff --git a/simgear/scene/tgdb/VPBTechnique.hxx b/simgear/scene/tgdb/VPBTechnique.hxx index 0e24cc26..9053f2a4 100644 --- a/simgear/scene/tgdb/VPBTechnique.hxx +++ b/simgear/scene/tgdb/VPBTechnique.hxx @@ -95,6 +95,7 @@ class VPBTechnique : public TerrainTechnique static void addElevationConstraint(osg::ref_ptr constraint, osg::Group* terrain); static void removeElevationConstraint(osg::ref_ptr constraint); static osg::Vec3d checkAgainstElevationConstraints(osg::Vec3d origin, osg::Vec3d vertex, float vertex_gap); + static void clearElevationConstraints(); // LineFeatures and AreaFeatures are draped over the underlying mesh. static void addLineFeatureList(SGBucket bucket, LineFeatureBinList roadList); @@ -183,7 +184,7 @@ class VPBTechnique : public TerrainTechnique osg::ref_ptr _filterMatrixUniform; osg::ref_ptr _options; - inline static osg::ref_ptr _constraintGroup = new osg::Group();; + inline static osg::ref_ptr _constraintGroup = new osg::Group(); inline static std::mutex _constraint_mutex; // protects the _constraintGroup; typedef std::pair BucketLineFeatureBinList; @@ -198,10 +199,8 @@ class VPBTechnique : public TerrainTechnique inline static std::list _coastFeatureLists; inline static std::mutex _coastFeatureLists_mutex; // protects the _areaFeatureLists; - }; }; - #endif