Kutil: improve Any to Int converting

This commit is contained in:
Bixilon 2022-09-16 15:30:28 +02:00
parent 6553f8ad2b
commit d4779f0f89
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 15 additions and 6 deletions

View File

@ -21,6 +21,7 @@ import de.bixilon.minosoft.data.registries.AABB
import de.bixilon.minosoft.data.world.OcclusionUpdateCallback import de.bixilon.minosoft.data.world.OcclusionUpdateCallback
import de.bixilon.minosoft.data.world.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.Chunk
import de.bixilon.minosoft.data.world.chunk.ChunkNeighbours 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.RenderConstants
import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderWindow
import de.bixilon.minosoft.gui.rendering.camera.Camera import de.bixilon.minosoft.gui.rendering.camera.Camera
@ -140,7 +141,7 @@ class WorldVisibilityGraph(
return frustum.containsAABB(aabb) 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)) { if (checkChunk && !isChunkVisible(chunkPosition)) {
return false return false
} }

View File

@ -66,7 +66,7 @@ object KUtil {
return when (this) { return when (this) {
is String -> ResourceLocation(this) is String -> ResourceLocation(this)
is 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 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? { fun Any?.autoType(): Any? {
if (this == null) { if (this == null) {
return null return null
@ -233,10 +244,7 @@ object KUtil {
return false return false
} }
// ToDo: Optimize string.checkInt()?.let { return it }
if (string.matches("\\d+".toRegex())) {
return string.toInt()
}
return string return string
} }