server light receiving

This feature is disabled anyways, because it might not be correct and minosofts light engine is fast enough.
This commit is contained in:
Moritz Zwerger 2025-03-12 18:45:45 +01:00
parent fccc1e2782
commit 65799bb081
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
4 changed files with 18 additions and 5 deletions

View File

@ -59,6 +59,8 @@ class SectionLight(
if (level.block <= 1) return // can not decrease any further
val next = level.decrease()
// TODO: sky (trace and heightmap), check if light propagates in a direction
if (position.x > 0) trace(position.minusX(), next) else section.neighbours?.get(Directions.O_WEST)?.light?.trace(position.with(x = ProtocolDefinition.SECTION_MAX_X), next)
if (position.x < ProtocolDefinition.SECTION_MAX_X) trace(position.plusX(), next) else section.neighbours?.get(Directions.O_EAST)?.light?.trace(position.with(x = 0), next)
@ -111,5 +113,7 @@ class SectionLight(
}
override fun update(array: LightArray) = TODO("Save light from server")
override fun update(array: LightArray) {
System.arraycopy(array.array, 0, this.light.array, 0, array.array.size)
}
}

View File

@ -16,7 +16,6 @@ package de.bixilon.minosoft.data.world.chunk.light.section.border
import de.bixilon.minosoft.data.world.chunk.ChunkSection
import de.bixilon.minosoft.data.world.chunk.chunk.Chunk
import de.bixilon.minosoft.data.world.chunk.light.section.AbstractSectionLight
import de.bixilon.minosoft.data.world.chunk.light.types.LightArray
import de.bixilon.minosoft.data.world.chunk.light.types.LightLevel
import de.bixilon.minosoft.data.world.chunk.update.AbstractWorldUpdate
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
@ -49,7 +48,5 @@ abstract class BorderSectionLight(
return null
}
override fun propagate() = TODO()
override fun update(array: LightArray) = TODO("Save light from server")
override fun propagate() = Unit // TODO
}

View File

@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.world.chunk.light.section.border
import de.bixilon.kutil.array.ArrayUtil.getFirst
import de.bixilon.minosoft.data.world.chunk.chunk.Chunk
import de.bixilon.minosoft.data.world.chunk.light.types.LightArray
import de.bixilon.minosoft.data.world.chunk.light.types.LightLevel
import de.bixilon.minosoft.data.world.positions.InSectionPosition
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
@ -30,4 +31,8 @@ class BottomSectionLight(
override fun getNearestSection() = chunk.sections.getFirst()
override fun Chunk.getBorderLight() = this.light.bottom
override fun update(array: LightArray) {
System.arraycopy(array.array, InSectionPosition(0, ProtocolDefinition.SECTION_MAX_Y, 0).index, this.light, 0, ProtocolDefinition.SECTION_WIDTH_X * ProtocolDefinition.SECTION_WIDTH_Z)
}
}

View File

@ -15,8 +15,10 @@ package de.bixilon.minosoft.data.world.chunk.light.section.border
import de.bixilon.kutil.array.ArrayUtil.getLast
import de.bixilon.minosoft.data.world.chunk.chunk.Chunk
import de.bixilon.minosoft.data.world.chunk.light.types.LightArray
import de.bixilon.minosoft.data.world.chunk.light.types.LightLevel
import de.bixilon.minosoft.data.world.positions.InSectionPosition
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
class TopSectionLight(
chunk: Chunk,
@ -29,4 +31,9 @@ class TopSectionLight(
override fun getNearestSection() = chunk.sections.getLast()
override fun Chunk.getBorderLight() = this.light.top
override fun update(array: LightArray) {
System.arraycopy(array.array, InSectionPosition(0, 0, 0).index, this.light, 0, ProtocolDefinition.SECTION_WIDTH_X * ProtocolDefinition.SECTION_WIDTH_Z)
}
}