more memory patches

This commit is contained in:
Bixilon 2023-05-30 02:16:37 +02:00
parent 85f8be3331
commit 8035ca315d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 7 additions and 3 deletions

View File

@ -24,7 +24,7 @@ data class VoxelSide(
private val hashCode = Objects.hashCode(min.hashCode(), max.hashCode()) 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: 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 { fun touches(set: VoxelSideSet): Boolean {
@ -96,7 +96,10 @@ data class VoxelSide(
} }
if (changes == 0) { if (changes == 0) {
return VoxelSideSet(setOf(this, side)) val set: MutableSet<VoxelSide> = ObjectOpenHashSet(2)
set += this
set += side
return VoxelSideSet(set)
} }
return VoxelSideSet(setOf(VoxelSide(minX, minY, maxX, maxY))) return VoxelSideSet(setOf(VoxelSide(minX, minY, maxX, maxY)))

View File

@ -15,13 +15,14 @@ package de.bixilon.minosoft.data.registries.shapes.voxel
import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kotlinglm.vec3.Vec3d
import de.bixilon.minosoft.data.registries.shapes.aabb.AABB import de.bixilon.minosoft.data.registries.shapes.aabb.AABB
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
class VoxelShape( class VoxelShape(
val aabb: Set<AABB>, val aabb: Set<AABB>,
) : AbstractVoxelShape() { ) : AbstractVoxelShape() {
override val aabbs: Int = aabb.size 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(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)) constructor(minX: Double, minY: Double, minZ: Double, maxX: Double, maxY: Double, maxZ: Double) : this(Vec3d(minX, minY, minZ), Vec3d(maxX, maxY, maxZ))