diff --git a/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java b/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java index 566d138f6..ea116d88a 100644 --- a/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java +++ b/core/src/main/java/com/seibel/lod/core/render/LodQuadTree.java @@ -56,7 +56,7 @@ public class LodQuadTree extends QuadTree implements AutoClose this.renderSourceProvider = provider; this.blockRenderDistance = viewDistanceInBlocks; - this.horizontalScaleChangeListener = new ConfigChangeListener<>(Config.Client.Advanced.Graphics.Quality.horizontalScale, (newHorizontalScale) -> this.onHorizontalScaleChange(newHorizontalScale)); + this.horizontalScaleChangeListener = new ConfigChangeListener<>(Config.Client.Advanced.Graphics.Quality.horizontalScale, (newHorizontalScale) -> this.onHorizontalScaleChange()); } @@ -362,13 +362,24 @@ public class LodQuadTree extends QuadTree implements AutoClose // config listeners // //==================// - private void onHorizontalScaleChange(int newHorizontalScale) + private void onHorizontalScaleChange() { // TODO this Util should probably be somewhere else or handled differently, but it works for now // Updating the util is necessary whenever the horizontal quality or scale are changed, otherwise they won't be applied DetailDistanceUtil.updateSettings(); - // TODO clearing the tree may be necessary in some cases to make sure the render data is flushed + + // flush the current render data to make sure the new settings are used + Iterator> nodeIterator = this.nodeIterator(); + while (nodeIterator.hasNext()) + { + QuadNode quadNode = nodeIterator.next(); + if (quadNode.value != null) + { + quadNode.value.disposeRenderData(); + quadNode.value = null; + } + } }