From d4779f0f8976318d3a53b5fb46e09436fa5f0c83 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 16 Sep 2022 15:30:28 +0200 Subject: [PATCH] Kutil: improve Any to Int converting --- .../world/view/WorldVisibilityGraph.kt | 3 ++- .../java/de/bixilon/minosoft/util/KUtil.kt | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt index 406fc9643..057d6780d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt @@ -21,6 +21,7 @@ import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.data.world.OcclusionUpdateCallback import de.bixilon.minosoft.data.world.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.ChunkNeighbours +import de.bixilon.minosoft.data.world.positions.InChunkSectionPosition import de.bixilon.minosoft.gui.rendering.RenderConstants import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.camera.Camera @@ -140,7 +141,7 @@ class WorldVisibilityGraph( return frustum.containsAABB(aabb) } - fun isSectionVisible(chunkPosition: Vec2i, sectionHeight: Int, minPosition: Vec3i = DEFAULT_MIN_POSITION, maxPosition: Vec3i = ProtocolDefinition.CHUNK_SECTION_SIZE, checkChunk: Boolean = true): Boolean { + fun isSectionVisible(chunkPosition: Vec2i, sectionHeight: Int, minPosition: InChunkSectionPosition = DEFAULT_MIN_POSITION, maxPosition: InChunkSectionPosition = ProtocolDefinition.CHUNK_SECTION_SIZE, checkChunk: Boolean = true): Boolean { if (checkChunk && !isChunkVisible(chunkPosition)) { return false } diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index 1570609e9..06f4e51db 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -66,7 +66,7 @@ object KUtil { return when (this) { is String -> ResourceLocation(this) is ResourceLocation -> this - else -> TODO("Don't know how to turn $this into a resource location!") + else -> throw IllegalArgumentException("Don't know how to turn $this into a resource location!") } } @@ -217,6 +217,17 @@ object KUtil { return null } + private inline fun String.checkInt(): Int? { + var first = true + for (point in codePoints()) { + if (point < '0'.code || point > '9'.code || (first && point == '-'.code)) { + return null + } + first = false + } + return this.toInt() + } + fun Any?.autoType(): Any? { if (this == null) { return null @@ -233,10 +244,7 @@ object KUtil { return false } - // ToDo: Optimize - if (string.matches("\\d+".toRegex())) { - return string.toInt() - } + string.checkInt()?.let { return it } return string }