From f4c707aae01a092c77cbf3c2f618b620c9b518aa Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 4 May 2022 21:15:28 +0200 Subject: [PATCH] block models: don't store empty face properties --- .../gui/rendering/models/baked/MultipartBakedModel.kt | 4 ++-- .../gui/rendering/models/baked/WeightedBakedModel.kt | 7 ++++--- .../models/unbaked/block/UnbakedMultipartModel.kt | 8 ++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/MultipartBakedModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/MultipartBakedModel.kt index cad860ff8..fa6185110 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/MultipartBakedModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/MultipartBakedModel.kt @@ -24,11 +24,11 @@ import java.util.* class MultipartBakedModel( val models: Array, - val sizes: Array>, + val sizes: Array?>, val particleTexture: AbstractTexture?, ) : BakedBlockModel { - override fun getTouchingFaceProperties(random: Random, direction: Directions): Array { + override fun getTouchingFaceProperties(random: Random, direction: Directions): Array? { return sizes[direction.ordinal] } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt index fd0c83426..64cb7b81a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt @@ -21,6 +21,7 @@ import de.bixilon.minosoft.gui.rendering.models.properties.AbstractFacePropertie import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture import de.bixilon.minosoft.gui.rendering.util.VecUtil import de.bixilon.minosoft.gui.rendering.world.mesh.WorldMesh +import de.bixilon.minosoft.util.Broken import java.util.* import kotlin.math.abs @@ -38,8 +39,8 @@ class WeightedBakedModel( this.totalWeight = totalWeight } - override fun getTouchingFaceProperties(random: Random, direction: Directions): Array { - return getModel(random)?.getTouchingFaceProperties(random, direction) ?: arrayOf() + override fun getTouchingFaceProperties(random: Random, direction: Directions): Array? { + return getModel(random)?.getTouchingFaceProperties(random, direction) } private fun getModel(random: Random): BakedBlockModel? { @@ -55,7 +56,7 @@ class WeightedBakedModel( } } - throw IllegalStateException("Could not find a model: This should never happen!") + Broken("Could not find a model: This should never happen!") } override fun singleRender(position: Vec3i, mesh: WorldMesh, random: Random, blockState: BlockState, neighbours: Array, light: ByteArray, tints: IntArray?): Boolean { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedMultipartModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedMultipartModel.kt index fda5391c6..6260c3607 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedMultipartModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedMultipartModel.kt @@ -50,11 +50,15 @@ class UnbakedMultipartModel( } val finalFaces: Array?> = arrayOfNulls(Directions.SIZE) for (index in 0 until Directions.SIZE) { - finalFaces[index] = sizes[index].toTypedArray() + val faces = sizes[index] + if (faces.isEmpty()) { + continue + } + finalFaces[index] = faces.toTypedArray() } - return MultipartBakedModel(baked.unsafeCast(), finalFaces.unsafeCast(), particleTexture) + return MultipartBakedModel(baked.unsafeCast(), finalFaces, particleTexture) } private companion object {