aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/lodmod/renderer/LODRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/makamys/lodmod/renderer/LODRenderer.java')
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODRenderer.java45
1 files changed, 22 insertions, 23 deletions
diff --git a/src/main/java/makamys/lodmod/renderer/LODRenderer.java b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
index a821d73..28dd175 100644
--- a/src/main/java/makamys/lodmod/renderer/LODRenderer.java
+++ b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
@@ -91,12 +91,18 @@ public class LODRenderer {
hasInited = init();
}
- public void preRenderSortedRenderers(int renderPass, double alpha) {
+ public void preRenderSortedRenderers(int renderPass, double alpha, WorldRenderer[] sortedWorldRenderers) {
if(renderPass != 0) return;
Minecraft.getMinecraft().entityRenderer.enableLightmap((double)alpha);
if(hasInited) {
+ for(WorldRenderer wr : sortedWorldRenderers) {
+ if(wr != null) {
+ ((IWorldRenderer)wr).myTick();
+ }
+ }
+
mainLoop();
handleKeyboard();
gcInterval = 10 * 1000;
@@ -416,35 +422,28 @@ public class LODRenderer {
ChunkMesh.usedRAM = 0;
}
- public void onWorldRendererPost(WorldRenderer wr) {
- LODChunk lodChunk = getLODChunk(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16));
- lodChunk.putChunkMeshes(Math.floorDiv(wr.posY, 16), ((IWorldRenderer)wr).getChunkMeshes());
- }
-
- public void onWorldRendererRender(WorldRenderer wr) {
+ public void onWorldRendererChanged(WorldRenderer wr, boolean visible) {
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);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], false);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], false);
- setMeshVisible(lodChunk.simpleMeshes[0], false);
- setMeshVisible(lodChunk.simpleMeshes[1], false);
+ if(visible) {
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], false);
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], false);
+ setMeshVisible(lodChunk.simpleMeshes[0], false);
+ setMeshVisible(lodChunk.simpleMeshes[1], false);
+ } else {
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], true);
+ setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], true);
+ }
}
- public void onDontDraw(WorldRenderer wr) {
- int chunkX = Math.floorDiv(wr.posX, 16);
- int chunkY = Math.floorDiv(wr.posY, 16);
- int chunkZ = Math.floorDiv(wr.posZ, 16);
-
- Entity player = (Entity)Minecraft.getMinecraft().getIntegratedServer().getConfigurationManager().playerEntityList.get(0);
- LODChunk lodChunk = getLODChunk(chunkX, chunkZ);
-
- int y = Math.floorDiv(wr.posY, 16);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 0], true);
- setMeshVisible(lodChunk.chunkMeshes[y * 2 + 1], true);
+ public void onWorldRendererPost(WorldRenderer wr) {
+ if(Minecraft.getMinecraft().theWorld.getChunkFromChunkCoords(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16)).isChunkLoaded) {
+ LODChunk lodChunk = getLODChunk(Math.floorDiv(wr.posX, 16), Math.floorDiv(wr.posZ, 16));
+ lodChunk.putChunkMeshes(Math.floorDiv(wr.posY, 16), ((IWorldRenderer)wr).getChunkMeshes());
+ }
}
private double getLastSortDistanceSq(Entity player) {