From 052d87b462b8c06ef718e02eb868cb7168f481ef Mon Sep 17 00:00:00 2001 From: Jack Huey Date: Mon, 8 Sep 2014 03:04:45 -0500 Subject: [PATCH] Fixing ChunkModel unloading --- .../flowpowered/api/geo/reference/ChunkReference.java | 2 +- .../java/com/flowpowered/engine/render/FlowRenderer.java | 9 ++++++++- .../engine/scheduler/render/RenderThread.java | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/flowpowered/api/geo/reference/ChunkReference.java b/src/main/java/com/flowpowered/api/geo/reference/ChunkReference.java index 4cc29ed..10abff6 100644 --- a/src/main/java/com/flowpowered/api/geo/reference/ChunkReference.java +++ b/src/main/java/com/flowpowered/api/geo/reference/ChunkReference.java @@ -48,7 +48,7 @@ public ChunkReference(Chunk referent) { public ChunkReference(Point base) { this.chunk = null; - this.region = new RegionReference(new Point(base.getWorld(), base.getBlockX() >> Region.BLOCKS.BITS, base.getBlockY() >> Region.BLOCKS.BITS, base.getBlockZ() >> Region.BLOCKS.BITS)); + this.region = new RegionReference(new Point(base.getWorld(), base.getBlockX() & Region.BLOCKS.MASK, base.getBlockY() & Region.BLOCKS.MASK, base.getBlockZ() & Region.BLOCKS.MASK)); this.base = base; } diff --git a/src/main/java/com/flowpowered/engine/render/FlowRenderer.java b/src/main/java/com/flowpowered/engine/render/FlowRenderer.java index 72b8a5e..7592de9 100644 --- a/src/main/java/com/flowpowered/engine/render/FlowRenderer.java +++ b/src/main/java/com/flowpowered/engine/render/FlowRenderer.java @@ -109,6 +109,7 @@ public class FlowRenderer implements Renderer { private StringModel itpsMonitorModel; private StringModel positionModel; private StringModel genCountModel; + private StringModel modelsModel; private boolean fpsMonitorStarted = false; private FlowScheduler scheduler; @@ -260,7 +261,7 @@ private void addHUD() { e.printStackTrace(); return; } - final StringModel sandboxModel = new StringModel(context, graph.getProgram("font"), "FlowEngineFTPSInputPositionWRa0123456789.-: GenCount", ubuntu.deriveFont(Font.PLAIN, 15), windowSize.getX()); + final StringModel sandboxModel = new StringModel(context, graph.getProgram("font"), "FlowEngineFTPSInputPositionWRa0123456789.-: GenCountModels", ubuntu.deriveFont(Font.PLAIN, 15), windowSize.getX()); final float aspect = getAspectRatio(); sandboxModel.setPosition(new Vector3f(0.005, .97 * aspect, -0.1)); sandboxModel.setString("Flow Engine - WIP"); @@ -289,6 +290,11 @@ private void addHUD() { guiModels.add(genCoModel); genCountModel = genCoModel; + final StringModel modelModel = sandboxModel.getInstance(); + modelModel.setPosition(new Vector3f(0.005, .79 * aspect, -0.1)); + guiModels.add(modelModel); + modelsModel = modelModel; + updateHUD(); } @@ -333,6 +339,7 @@ private void updateHUD() { positionModel.setString("Position: " + camera.getPosition().toInt().toString() + " Rotation: " + camera.getRotation().toString()); genCountModel.setString("GenCount: " + RegionGenerator.getGenCount()); + modelsModel.setString("Models: " + models.size()); } /** diff --git a/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java b/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java index 1721579..09446bb 100644 --- a/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java +++ b/src/main/java/com/flowpowered/engine/scheduler/render/RenderThread.java @@ -147,7 +147,8 @@ private void updateChunkModels() { Set removeChunks = new HashSet<>(); toRemove.drainTo(removeChunks); for (ChunkReference ref : removeChunks) { - final Vector3i position = ref.getBase().getVector().toInt(); + final Vector3i blockBase = ref.getBase().getVector().toInt(); + final Vector3i position = new Vector3i(blockBase.getX() >> Chunk.BLOCKS.BITS, blockBase.getY() >> Chunk.BLOCKS.BITS, blockBase.getZ() >> Chunk.BLOCKS.BITS); chunks.remove(position); final ChunkModel model = chunkModels.remove(position); if (model == null) continue;