block models: collect side sizes

Still need to determinate them :)
This commit is contained in:
Bixilon 2023-06-25 02:01:54 +02:00
parent ec1cab0901
commit f81004a329
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 14 additions and 1 deletions

View File

@ -24,6 +24,7 @@ import de.bixilon.minosoft.gui.rendering.models.block.BlockModel
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakedFace
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakedModel
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakingUtil.compact
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakingUtil.compactSize
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakingUtil.positions
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakingUtil.pushRight
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.SideSize
@ -147,7 +148,7 @@ data class SingleBlockStateApply(
}
}
return BakedModel(bakedFaces.compact(), emptyArray(), null) // TODO
return BakedModel(bakedFaces.compact(), sizes.compactSize(), null) // TODO
}
companion object {

View File

@ -42,6 +42,18 @@ object BakingUtil {
return array.cast()
}
fun Array<MutableList<SideSize.FaceSize>>.compactSize(): Array<SideSize?> {
val array: Array<SideSize?> = arrayOfNulls(size)
for ((index, entries) in this.withIndex()) {
val size = entries.toTypedArray()
if (size.isEmpty()) continue
array[index] = SideSize(size)
}
return array
}
fun FloatArray.pushRight(components: Int, steps: Int): FloatArray {
if (this.size % components != 0) throw IllegalArgumentException("Size mismatch!")