mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-08 23:13:10 -04:00
models: correct fallback uv coordinates (e.g. for cauldrons)
This commit is contained in:
parent
95c4898f4a
commit
168d607c47
@ -1 +0,0 @@
|
||||
--enable-preview
|
@ -34,16 +34,20 @@ data class UnbakedElement(
|
||||
|
||||
operator fun invoke(data: Map<String, Any>): UnbakedElement {
|
||||
val faces: MutableSet<UnbakedElementFace> = mutableSetOf()
|
||||
val from = data["from"].toVec3() / BLOCK_RESOLUTION
|
||||
val to = data["to"].toVec3() / BLOCK_RESOLUTION
|
||||
|
||||
data["faces"].asCompound().let {
|
||||
for ((direction, faceData) in it) {
|
||||
faces += UnbakedElementFace(direction = Directions[direction], data = faceData.unsafeCast())
|
||||
for ((directionString, faceData) in it) {
|
||||
val direction = Directions[directionString]
|
||||
val (fallbackUVStart, fallbackUVEnd) = direction.getSize(from, to)
|
||||
faces += UnbakedElementFace(direction, faceData.unsafeCast(), fallbackUVStart, fallbackUVEnd)
|
||||
}
|
||||
}
|
||||
|
||||
return UnbakedElement(
|
||||
from = data["from"].toVec3() / BLOCK_RESOLUTION,
|
||||
to = data["to"].toVec3() / BLOCK_RESOLUTION,
|
||||
from = from,
|
||||
to = to,
|
||||
rotation = data["rotation"]?.compoundCast()?.let { return@let UnbakedElementRotation(data = it) },
|
||||
shade = data["shade"]?.toBoolean() ?: true,
|
||||
faces = faces,
|
||||
|
@ -29,10 +29,10 @@ data class UnbakedElementFace(
|
||||
val tintIndex: Int,
|
||||
) {
|
||||
companion object {
|
||||
operator fun invoke(direction: Directions, data: Map<String, Any>): UnbakedElementFace {
|
||||
operator fun invoke(direction: Directions, data: Map<String, Any>, fallbackUvStart: Vec2, fallbackUvEnd: Vec2): UnbakedElementFace {
|
||||
val uv = data["uv"]?.listCast<Number>()
|
||||
val uvStart = Vec2(uv?.get(0) ?: 0.0f, uv?.get(1) ?: 0.0f) / BLOCK_RESOLUTION
|
||||
val uvEnd = Vec2(uv?.get(2) ?: 16.0f, uv?.get(3) ?: 16.0f) / BLOCK_RESOLUTION
|
||||
val uvStart = uv?.let { Vec2(it[0], it[1]) / BLOCK_RESOLUTION } ?: fallbackUvStart
|
||||
val uvEnd = uv?.let { Vec2(it[2], it[3]) / BLOCK_RESOLUTION } ?: fallbackUvEnd
|
||||
|
||||
return UnbakedElementFace(
|
||||
direction = direction,
|
||||
|
Loading…
x
Reference in New Issue
Block a user