aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/lodmod/renderer
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-07 21:59:12 +0200
committermakamys <makamys@outlook.com>2022-06-07 21:59:12 +0200
commit7d6ee74f2c6b591bd64532a21d3170889fa5483d (patch)
tree5cbefbeb67cb1e6694a4ea1004ddecf4e07b99e5 /src/main/java/makamys/lodmod/renderer
parentfd1ad07f7e9759c43c3dae0affcaa910b06d2fb1 (diff)
downloadNeodymium-7d6ee74f2c6b591bd64532a21d3170889fa5483d.tar.gz
Neodymium-7d6ee74f2c6b591bd64532a21d3170889fa5483d.tar.bz2
Neodymium-7d6ee74f2c6b591bd64532a21d3170889fa5483d.zip
Fix meshes not getting deleted when their world renderers are deleted
Diffstat (limited to 'src/main/java/makamys/lodmod/renderer')
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODRenderer.java13
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