From 945fa03271cf8dd166e29d6d9c9a79a9bde4389c Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 14 Feb 2021 21:26:59 -0600 Subject: [PATCH] Fix a regressive bug that caused camera stuttering --- src/main/java/com/backsun/lod/renderer/LodRenderer.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/backsun/lod/renderer/LodRenderer.java b/src/main/java/com/backsun/lod/renderer/LodRenderer.java index eacc10bce..4a80027e1 100644 --- a/src/main/java/com/backsun/lod/renderer/LodRenderer.java +++ b/src/main/java/com/backsun/lod/renderer/LodRenderer.java @@ -197,6 +197,7 @@ public class LodRenderer double cameraZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; + // determine how far the game's render distance is currently set int renderDistWidth = mc.gameSettings.renderDistanceChunks; @@ -206,10 +207,14 @@ public class LodRenderer int totalLength = (int) farPlaneDistance * LOD_CHUNK_DISTANCE_RADIUS * 2; int numbChunksWide = (totalLength / LodChunk.WIDTH); + // this seemingly useless math is required, + // just using (int) camera doesn't work + int playerXChunkOffset = ((int) cameraX / LodChunk.WIDTH) * LodChunk.WIDTH; + int playerZChunkOffset = ((int) cameraZ / LodChunk.WIDTH) * LodChunk.WIDTH; // this where we will start drawing squares // (exactly half the total width) - int startX = (-LodChunk.WIDTH * (numbChunksWide / 2)) + (int)cameraX; - int startZ = (-LodChunk.WIDTH * (numbChunksWide / 2)) + (int)cameraZ; + int startX = (-LodChunk.WIDTH * (numbChunksWide / 2)) + playerXChunkOffset; + int startZ = (-LodChunk.WIDTH * (numbChunksWide / 2)) + playerZChunkOffset; // this is where we store the LOD objects