improve matter generator once again

This commit is contained in:
Julian Krings
2026-01-01 16:34:52 +01:00
parent d15f7d62d1
commit 40b020fc5d

View File

@@ -27,13 +27,18 @@ interface MatterGenerator {
mantle.write(engine.mantle, x, z, radius, multicore).use { writer -> mantle.write(engine.mantle, x, z, radius, multicore).use { writer ->
for (pair in components) { for (pair in components) {
radius(x, z, pair.b) { x, z -> runBlocking {
for (c in pair.a) { radius(x, z, pair.b) { x, z ->
launch(multicore) { val mc = writer.acquireChunk(x, z)
writer.acquireChunk(x, z) if (mc.isFlagged(MantleFlag.PLANNED))
.raiseFlagSuspend(MantleFlag.PLANNED, c.flag) { return@radius
for (c in pair.a) {
launch(multicore) {
mc.raiseFlagSuspend(MantleFlag.PLANNED, c.flag) {
c.generateLayer(writer, x, z, context) 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 (i in -radius..radius) {
for (j in -radius..radius) { for (j in -radius..radius) {
task(x + i, z + j) task(x + i, z + j)