some fixes

This commit is contained in:
Moritz Zwerger 2025-03-05 17:39:57 +01:00
parent ff2de678a1
commit 5f9058e44a
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
4 changed files with 14 additions and 10 deletions

View File

@ -24,6 +24,10 @@ object BlockPositionUtil {
return hash shr 16
}
inline fun assertPosition(condition: Boolean, message: String) {
if (!DebugOptions.VERIFY_COORDINATES) return
if (!condition) throw AssertionError("Position assert failed: $message")
}
inline fun assertPosition(condition: Boolean) {
if (!DebugOptions.VERIFY_COORDINATES) return
if (!condition) throw AssertionError("Position assert failed!")

View File

@ -40,7 +40,7 @@ value class InSectionPosition(
inline fun plusX(): InSectionPosition {
assertPosition(this.x < ProtocolDefinition.SECTION_MAX_X)
assertPosition(this.x < ProtocolDefinition.SECTION_MAX_X, "x < max")
return InSectionPosition(index + X * 1)
}
@ -50,12 +50,12 @@ value class InSectionPosition(
}
inline fun minusX(): InSectionPosition {
assertPosition(this.x > 0)
assertPosition(this.x > 0, "x > 0")
return InSectionPosition(index - X * 1)
}
inline fun plusY(): InSectionPosition {
assertPosition(this.y < ProtocolDefinition.SECTION_MAX_Y)
assertPosition(this.y < ProtocolDefinition.SECTION_MAX_Y, "y < max")
return InSectionPosition(index + Y * 1)
}
@ -65,12 +65,12 @@ value class InSectionPosition(
}
inline fun minusY(): InSectionPosition {
assertPosition(this.y > 0)
assertPosition(this.y > 0, "y > 0")
return InSectionPosition(index - Y * 1)
}
inline fun plusZ(): InSectionPosition {
assertPosition(this.z < ProtocolDefinition.SECTION_MAX_Z)
assertPosition(this.z < ProtocolDefinition.SECTION_MAX_Z, "z < max")
return InSectionPosition(index + Z * 1)
}
@ -80,7 +80,7 @@ value class InSectionPosition(
}
inline fun minusZ(): InSectionPosition {
assertPosition(this.z > 0)
assertPosition(this.z > 0, "z > 0")
return InSectionPosition(index - Z * 1)
}

View File

@ -33,7 +33,7 @@ object AmbientOcclusionUtil {
val EMPTY = IntArray(LEVELS) { LEVEL_NONE }
fun ChunkSection?.trace(x: Int, y: Int, z: Int): Int {
fun ChunkSection?.trace(x: Int, y: Int, z: Int): Int { // TODO: use packed and direction
if (this == null) return 0
var x = x
var y = y
@ -163,7 +163,7 @@ object AmbientOcclusionUtil {
}
fun applyWest(section: ChunkSection, position: InSectionPosition, ao: IntArray): IntArray {
if (position.z == 0) {
if (position.x == 0) {
return setX(section.neighbours?.get(O_WEST), position.with(x = ProtocolDefinition.SECTION_MAX_X), true, ao)
} else {
return setX(section, position.minusX(), false, ao)
@ -171,7 +171,7 @@ object AmbientOcclusionUtil {
}
fun applyEast(section: ChunkSection, position: InSectionPosition, ao: IntArray): IntArray {
if (position.z == ProtocolDefinition.SECTION_MAX_X) {
if (position.x == ProtocolDefinition.SECTION_MAX_X) {
return setX(section.neighbours?.get(O_EAST), position.with(x = 0), true, ao)
} else {
return setX(section, position.plusX(), true, ao)

View File

@ -28,7 +28,7 @@ class CloudLayer(
val index: Int,
var height: IntRange,
) {
private var position = ChunkPosition(Int.MIN_VALUE, Int.MIN_VALUE)
private var position = ChunkPosition(-ChunkPosition.MAX_X, -ChunkPosition.MAX_Z)
private val arrays: Array<CloudArray> = arrayOfNulls<CloudArray?>(3 * 3).unsafeCast()
private var offset = 0.0f
var movement = true