block models: don't store empty face properties

This commit is contained in:
Bixilon 2022-05-04 21:15:28 +02:00
parent b90591889d
commit f4c707aae0
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 12 additions and 7 deletions

View File

@ -24,11 +24,11 @@ import java.util.*
class MultipartBakedModel(
val models: Array<BakedBlockModel>,
val sizes: Array<Array<AbstractFaceProperties>>,
val sizes: Array<Array<AbstractFaceProperties>?>,
val particleTexture: AbstractTexture?,
) : BakedBlockModel {
override fun getTouchingFaceProperties(random: Random, direction: Directions): Array<AbstractFaceProperties> {
override fun getTouchingFaceProperties(random: Random, direction: Directions): Array<AbstractFaceProperties>? {
return sizes[direction.ordinal]
}

View File

@ -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<AbstractFaceProperties> {
return getModel(random)?.getTouchingFaceProperties(random, direction) ?: arrayOf()
override fun getTouchingFaceProperties(random: Random, direction: Directions): Array<AbstractFaceProperties>? {
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<BlockState?>, light: ByteArray, tints: IntArray?): Boolean {

View File

@ -50,11 +50,15 @@ class UnbakedMultipartModel(
}
val finalFaces: Array<Array<AbstractFaceProperties>?> = 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 {