diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/light/DirectedProperty.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/light/DirectedProperty.kt index 92f513e3d..60193d4a5 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/light/DirectedProperty.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/light/DirectedProperty.kt @@ -18,6 +18,7 @@ import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.shapes.VoxelShape import de.bixilon.minosoft.data.registries.shapes.side.VoxelSide import de.bixilon.minosoft.data.registries.shapes.side.VoxelSideSet +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet class DirectedProperty( private val directions: BooleanArray, @@ -72,7 +73,7 @@ class DirectedProperty( // ToDo: This whole calculation is technically wrong, it could be that 2 different sides of 2 blocks are "free". That means that light can still not pass the blocks, but // this algorithm does not cover it. Let's see it as performance hack - val sides: MutableSet = mutableSetOf() + val sides: MutableSet = ObjectOpenHashSet() for (aabb in this) { when (side.axis) { diff --git a/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSideSet.kt b/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSideSet.kt index d74cb8de1..9910d6833 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSideSet.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSideSet.kt @@ -13,6 +13,8 @@ package de.bixilon.minosoft.data.registries.shapes.side +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet + class VoxelSideSet( val sides: Set, ) : Iterable { @@ -28,7 +30,7 @@ class VoxelSideSet( return this } - val next: MutableSet = mutableSetOf() + val next: MutableSet = ObjectOpenHashSet() val array = this.sides.toTypedArray() for (i in 1 until sides.size) {