From 8035ca315dfc803f3d4cbccf9ed29d2376289d45 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 30 May 2023 02:16:37 +0200 Subject: [PATCH] more memory patches --- .../minosoft/data/registries/shapes/side/VoxelSide.kt | 7 +++++-- .../minosoft/data/registries/shapes/voxel/VoxelShape.kt | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSide.kt b/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSide.kt index 994b3d8d1..204513f64 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSide.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/shapes/side/VoxelSide.kt @@ -24,7 +24,7 @@ data class VoxelSide( private val hashCode = Objects.hashCode(min.hashCode(), max.hashCode()) constructor(minX: Float, minZ: Float, maxX: Float, maxZ: Float) : this(Vec2(minOf(minX, maxX), minOf(minZ, maxZ)), Vec2(maxOf(minX, maxX), maxOf(minZ, maxZ))) - constructor(minX: Double, minZ: Double, maxX: Double, maxZ: Double) : this(Vec2(minOf(minX, maxX), minOf(minZ, maxZ)), Vec2(maxOf(minX, maxX), maxOf(minZ, maxZ))) + constructor(minX: Double, minZ: Double, maxX: Double, maxZ: Double) : this(Vec2(minOf(minX, maxX).toFloat(), minOf(minZ, maxZ).toFloat()), Vec2(maxOf(minX, maxX).toFloat(), maxOf(minZ, maxZ).toFloat())) fun touches(set: VoxelSideSet): Boolean { @@ -96,7 +96,10 @@ data class VoxelSide( } if (changes == 0) { - return VoxelSideSet(setOf(this, side)) + val set: MutableSet = ObjectOpenHashSet(2) + set += this + set += side + return VoxelSideSet(set) } return VoxelSideSet(setOf(VoxelSide(minX, minY, maxX, maxY))) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/shapes/voxel/VoxelShape.kt b/src/main/java/de/bixilon/minosoft/data/registries/shapes/voxel/VoxelShape.kt index c9ee32cfa..8ebd89fb4 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/shapes/voxel/VoxelShape.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/shapes/voxel/VoxelShape.kt @@ -15,13 +15,14 @@ package de.bixilon.minosoft.data.registries.shapes.voxel import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.registries.shapes.aabb.AABB +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet class VoxelShape( val aabb: Set, ) : AbstractVoxelShape() { override val aabbs: Int = aabb.size - constructor(vararg aabbs: AABB) : this(aabbs.toSet()) + constructor(vararg aabbs: AABB) : this(ObjectOpenHashSet(aabbs)) constructor(min: Vec3d, max: Vec3d) : this(setOf(AABB(min, max))) constructor(minX: Double, minY: Double, minZ: Double, maxX: Double, maxY: Double, maxZ: Double) : this(Vec3d(minX, minY, minZ), Vec3d(maxX, maxY, maxZ))