From f81004a329a22c84ed235c36dca9a54e7c695eff Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 25 Jun 2023 02:01:54 +0200 Subject: [PATCH] block models: collect side sizes Still need to determinate them :) --- .../block/state/apply/SingleBlockStateApply.kt | 3 ++- .../rendering/models/block/state/baked/BakingUtil.kt | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) 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 d97f4d443..3868fba5e 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 @@ -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 { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakingUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakingUtil.kt index 6c3c54c0d..b525628e5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakingUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/block/state/baked/BakingUtil.kt @@ -42,6 +42,18 @@ object BakingUtil { return array.cast() } + fun Array>.compactSize(): Array { + val array: Array = 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!")