From 4f60ef2286644420493ccdcae4e16fff826abdf5 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 21 Aug 2022 21:59:05 +0200 Subject: [PATCH] WorldRenderer: unload when client side view distance changes --- .../minosoft/gui/rendering/world/WorldRenderer.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt index 2ed4d0cd5..f02c05ee6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt @@ -34,7 +34,6 @@ import de.bixilon.minosoft.data.registries.fluid.FlowableFluid import de.bixilon.minosoft.data.world.World import de.bixilon.minosoft.data.world.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.ChunkSection -import de.bixilon.minosoft.data.world.view.ViewDistanceChangeEvent import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderingStates import de.bixilon.minosoft.gui.rendering.modding.events.RenderingStateChangeEvent @@ -277,8 +276,9 @@ class WorldRenderer( val rendering = connection.profiles.rendering rendering.performance::fastBedrock.profileWatch(this, false, rendering) { clearChunkCache() } - connection.registerEvent(CallbackEventInvoker.of { event -> - if (event.viewDistance < this.previousViewDistance) { + profile::viewDistance.profileWatch(this) { viewDistance -> + val distance = maxOf(viewDistance, profile.simulationDistance) + if (distance < this.previousViewDistance) { // Unload all chunks(-sections) that are out of view distance culledQueueLock.lock() queueLock.lock() @@ -333,8 +333,8 @@ class WorldRenderer( prepareWorld() } - this.previousViewDistance = event.viewDistance - }) + this.previousViewDistance = distance + } } fun silentlyClearChunkCache() {