mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-09 15:29:20 -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 {
|
operator fun invoke(data: Map<String, Any>): UnbakedElement {
|
||||||
val faces: MutableSet<UnbakedElementFace> = mutableSetOf()
|
val faces: MutableSet<UnbakedElementFace> = mutableSetOf()
|
||||||
|
val from = data["from"].toVec3() / BLOCK_RESOLUTION
|
||||||
|
val to = data["to"].toVec3() / BLOCK_RESOLUTION
|
||||||
|
|
||||||
data["faces"].asCompound().let {
|
data["faces"].asCompound().let {
|
||||||
for ((direction, faceData) in it) {
|
for ((directionString, faceData) in it) {
|
||||||
faces += UnbakedElementFace(direction = Directions[direction], data = faceData.unsafeCast())
|
val direction = Directions[directionString]
|
||||||
|
val (fallbackUVStart, fallbackUVEnd) = direction.getSize(from, to)
|
||||||
|
faces += UnbakedElementFace(direction, faceData.unsafeCast(), fallbackUVStart, fallbackUVEnd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return UnbakedElement(
|
return UnbakedElement(
|
||||||
from = data["from"].toVec3() / BLOCK_RESOLUTION,
|
from = from,
|
||||||
to = data["to"].toVec3() / BLOCK_RESOLUTION,
|
to = to,
|
||||||
rotation = data["rotation"]?.compoundCast()?.let { return@let UnbakedElementRotation(data = it) },
|
rotation = data["rotation"]?.compoundCast()?.let { return@let UnbakedElementRotation(data = it) },
|
||||||
shade = data["shade"]?.toBoolean() ?: true,
|
shade = data["shade"]?.toBoolean() ?: true,
|
||||||
faces = faces,
|
faces = faces,
|
||||||
|
@ -29,10 +29,10 @@ data class UnbakedElementFace(
|
|||||||
val tintIndex: Int,
|
val tintIndex: Int,
|
||||||
) {
|
) {
|
||||||
companion object {
|
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 uv = data["uv"]?.listCast<Number>()
|
||||||
val uvStart = Vec2(uv?.get(0) ?: 0.0f, uv?.get(1) ?: 0.0f) / BLOCK_RESOLUTION
|
val uvStart = uv?.let { Vec2(it[0], it[1]) / BLOCK_RESOLUTION } ?: fallbackUvStart
|
||||||
val uvEnd = Vec2(uv?.get(2) ?: 16.0f, uv?.get(3) ?: 16.0f) / BLOCK_RESOLUTION
|
val uvEnd = uv?.let { Vec2(it[2], it[3]) / BLOCK_RESOLUTION } ?: fallbackUvEnd
|
||||||
|
|
||||||
return UnbakedElementFace(
|
return UnbakedElementFace(
|
||||||
direction = direction,
|
direction = direction,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user