diff options
Diffstat (limited to 'src/main/java/makamys/lodmod/renderer')
-rw-r--r-- | src/main/java/makamys/lodmod/renderer/LODRenderer.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/makamys/lodmod/renderer/LODRenderer.java b/src/main/java/makamys/lodmod/renderer/LODRenderer.java index 7dac491..3da4603 100644 --- a/src/main/java/makamys/lodmod/renderer/LODRenderer.java +++ b/src/main/java/makamys/lodmod/renderer/LODRenderer.java @@ -448,13 +448,16 @@ public class LODRenderer { ChunkMesh.usedRAM = 0; } - public void onWorldRendererChanged(WorldRenderer wr, boolean visible) { + public void onWorldRendererChanged(WorldRenderer wr, WorldRendererChange change) { int x = Math.floorDiv(wr.posX, 16); int y = Math.floorDiv(wr.posY, 16); int z = Math.floorDiv(wr.posZ, 16); LODChunk lodChunk = getLODChunk(x, z); - lodChunk.hidden[y] = LODMod.hideUnderVanillaChunks ? visible : !visible; + lodChunk.hidden[y] = change != WorldRendererChange.VISIBLE; + if(change == WorldRendererChange.DELETED) { + removeMesh(lodChunk.chunkMeshes[y]); + } lodChunkChanged(lodChunk); } @@ -578,6 +581,8 @@ public class LODRenderer { } public void removeMesh(Mesh mesh) { + if(mesh == null) return; + mem.deleteMeshFromGPU(mesh); sentMeshes[mesh.pass].remove(mesh); setMeshVisible(mesh, false); @@ -707,4 +712,8 @@ public class LODRenderer { } } + + public static enum WorldRendererChange { + VISIBLE, INVISIBLE, DELETED + } }
\ No newline at end of file |