From bc1e0f499a85e25a3bb414818ec36caff4c8b943 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Tue, 10 Oct 2023 22:31:00 +0200 Subject: [PATCH] block models: don't shade elements if `shade`=`false` This fixes shading on saplings and cobwebs --- .../rendering/models/block/state/apply/SingleBlockStateApply.kt | 2 +- .../gui/rendering/models/block/state/baked/BakedFace.kt | 2 +- .../minosoft/gui/rendering/models/block/state/baked/Shades.kt | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/apply/SingleBlockStateApply.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/apply/SingleBlockStateApply.kt index a7f7c9b7a4..f22c30cc3e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/apply/SingleBlockStateApply.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/apply/SingleBlockStateApply.kt @@ -169,7 +169,7 @@ data class SingleBlockStateApply( } val faceProperties = if (rotation == null && this@SingleBlockStateApply.rotation == null) positions.properties(rotatedXY, texture) else null - val bakedFace = BakedFace(positions, uv, face.tintIndex, texture, rotatedXY, faceProperties) + val bakedFace = BakedFace(positions, uv, this.shade, face.tintIndex, texture, rotatedXY, faceProperties) faces[rotatedXY.ordinal] += bakedFace properties[rotatedXY.ordinal] += faceProperties ?: continue diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakedFace.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakedFace.kt index 7ab1142414..7922dc3769 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakedFace.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakedFace.kt @@ -37,7 +37,7 @@ class BakedFace( private val lightIndex = cull?.ordinal ?: SELF_LIGHT_INDEX - constructor(positions: FaceVertexData, uv: FaceVertexData, tintIndex: Int, texture: Texture, direction: Directions, properties: FaceProperties?) : this(positions, uv, direction.shade, tintIndex, if (properties == null) null else direction, texture, properties) + constructor(positions: FaceVertexData, uv: FaceVertexData, shade: Boolean, tintIndex: Int, texture: Texture, direction: Directions, properties: FaceProperties?) : this(positions, uv, if (shade) direction.shade else Shades.NONE, tintIndex, if (properties == null) null else direction, texture, properties) private fun color(tint: Int): Int { if (tint <= 0) return shade.color diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/Shades.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/Shades.kt index b89c820b33..2032fd6f89 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/Shades.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/Shades.kt @@ -32,6 +32,7 @@ enum class Shades(val shade: Float) { } companion object { + val NONE = UP val Directions.shade: Shades