mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-02-16 02:20:44 +00:00
improve matter generator once again
This commit is contained in:
@@ -27,17 +27,22 @@ 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) {
|
||||||
|
runBlocking {
|
||||||
radius(x, z, pair.b) { x, z ->
|
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) {
|
for (c in pair.a) {
|
||||||
launch(multicore) {
|
launch(multicore) {
|
||||||
writer.acquireChunk(x, z)
|
mc.raiseFlagSuspend(MantleFlag.PLANNED, c.flag) {
|
||||||
.raiseFlagSuspend(MantleFlag.PLANNED, c.flag) {
|
|
||||||
c.generateLayer(writer, x, z, context)
|
c.generateLayer(writer, x, z, context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
radius(x, z, realRadius) { x, z ->
|
radius(x, z, realRadius) { x, z ->
|
||||||
writer.acquireChunk(x, z)
|
writer.acquireChunk(x, z)
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user