mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-01-04 15:41:30 +00:00
improve matter generator once again
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user