From 40b020fc5db49169598a230895fa22e3f947927f Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Thu, 1 Jan 2026 16:34:52 +0100 Subject: [PATCH] improve matter generator once again --- .../iris/engine/mantle/MatterGenerator.kt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/core/src/main/kotlin/com/volmit/iris/engine/mantle/MatterGenerator.kt b/core/src/main/kotlin/com/volmit/iris/engine/mantle/MatterGenerator.kt index 9a048b9f1..492f2dc85 100644 --- a/core/src/main/kotlin/com/volmit/iris/engine/mantle/MatterGenerator.kt +++ b/core/src/main/kotlin/com/volmit/iris/engine/mantle/MatterGenerator.kt @@ -27,13 +27,18 @@ interface MatterGenerator { mantle.write(engine.mantle, x, z, radius, multicore).use { writer -> for (pair in components) { - radius(x, z, pair.b) { x, z -> - for (c in pair.a) { - launch(multicore) { - writer.acquireChunk(x, z) - .raiseFlagSuspend(MantleFlag.PLANNED, c.flag) { + runBlocking { + radius(x, z, pair.b) { x, z -> + val mc = writer.acquireChunk(x, z) + if (mc.isFlagged(MantleFlag.PLANNED)) + return@radius + + for (c in pair.a) { + launch(multicore) { + mc.raiseFlagSuspend(MantleFlag.PLANNED, c.flag) { c.generateLayer(writer, x, z, context) } + } } } } @@ -46,7 +51,7 @@ interface MatterGenerator { } } - private inline fun radius(x: Int, z: Int, radius: Int, crossinline task: suspend CoroutineScope.(Int, Int) -> Unit) = runBlocking { + private inline fun radius(x: Int, z: Int, radius: Int, crossinline task: (Int, Int) -> Unit) { for (i in -radius..radius) { for (j in -radius..radius) { task(x + i, z + j)