mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-16 10:55:01 -04:00
some fixes
This commit is contained in:
parent
ff2de678a1
commit
5f9058e44a
@ -24,6 +24,10 @@ object BlockPositionUtil {
|
|||||||
return hash shr 16
|
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) {
|
inline fun assertPosition(condition: Boolean) {
|
||||||
if (!DebugOptions.VERIFY_COORDINATES) return
|
if (!DebugOptions.VERIFY_COORDINATES) return
|
||||||
if (!condition) throw AssertionError("Position assert failed!")
|
if (!condition) throw AssertionError("Position assert failed!")
|
||||||
|
@ -40,7 +40,7 @@ value class InSectionPosition(
|
|||||||
|
|
||||||
|
|
||||||
inline fun plusX(): 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)
|
return InSectionPosition(index + X * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,12 +50,12 @@ value class InSectionPosition(
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun minusX(): InSectionPosition {
|
inline fun minusX(): InSectionPosition {
|
||||||
assertPosition(this.x > 0)
|
assertPosition(this.x > 0, "x > 0")
|
||||||
return InSectionPosition(index - X * 1)
|
return InSectionPosition(index - X * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun plusY(): InSectionPosition {
|
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)
|
return InSectionPosition(index + Y * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,12 +65,12 @@ value class InSectionPosition(
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun minusY(): InSectionPosition {
|
inline fun minusY(): InSectionPosition {
|
||||||
assertPosition(this.y > 0)
|
assertPosition(this.y > 0, "y > 0")
|
||||||
return InSectionPosition(index - Y * 1)
|
return InSectionPosition(index - Y * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun plusZ(): InSectionPosition {
|
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)
|
return InSectionPosition(index + Z * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ value class InSectionPosition(
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun minusZ(): InSectionPosition {
|
inline fun minusZ(): InSectionPosition {
|
||||||
assertPosition(this.z > 0)
|
assertPosition(this.z > 0, "z > 0")
|
||||||
return InSectionPosition(index - Z * 1)
|
return InSectionPosition(index - Z * 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ object AmbientOcclusionUtil {
|
|||||||
|
|
||||||
val EMPTY = IntArray(LEVELS) { LEVEL_NONE }
|
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
|
if (this == null) return 0
|
||||||
var x = x
|
var x = x
|
||||||
var y = y
|
var y = y
|
||||||
@ -163,7 +163,7 @@ object AmbientOcclusionUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun applyWest(section: ChunkSection, position: InSectionPosition, ao: IntArray): IntArray {
|
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)
|
return setX(section.neighbours?.get(O_WEST), position.with(x = ProtocolDefinition.SECTION_MAX_X), true, ao)
|
||||||
} else {
|
} else {
|
||||||
return setX(section, position.minusX(), false, ao)
|
return setX(section, position.minusX(), false, ao)
|
||||||
@ -171,7 +171,7 @@ object AmbientOcclusionUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun applyEast(section: ChunkSection, position: InSectionPosition, ao: IntArray): IntArray {
|
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)
|
return setX(section.neighbours?.get(O_EAST), position.with(x = 0), true, ao)
|
||||||
} else {
|
} else {
|
||||||
return setX(section, position.plusX(), true, ao)
|
return setX(section, position.plusX(), true, ao)
|
||||||
|
@ -28,7 +28,7 @@ class CloudLayer(
|
|||||||
val index: Int,
|
val index: Int,
|
||||||
var height: IntRange,
|
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 val arrays: Array<CloudArray> = arrayOfNulls<CloudArray?>(3 * 3).unsafeCast()
|
||||||
private var offset = 0.0f
|
private var offset = 0.0f
|
||||||
var movement = true
|
var movement = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user