From 5a695919e4142acb47a05acd2a9e4e8aea943267 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 5 Oct 2022 18:22:27 +0200 Subject: [PATCH] minor performance improvements --- .../gui/rendering/gui/elements/text/TextElement.kt | 3 ++- .../gui/rendering/world/mesh/SingleWorldMesh.kt | 10 ++++------ src/main/java/de/bixilon/minosoft/util/KUtil.kt | 8 ++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt index 096f5a2dc..9096c6bb3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt @@ -38,6 +38,7 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.system.window.CursorShapes import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.offset +import de.bixilon.minosoft.util.KUtil.length open class TextElement( guiRenderer: GUIRenderer, @@ -49,7 +50,7 @@ open class TextElement( parent: Element? = null, scale: Float = 1.0f, shadow: Boolean = true, -) : Element(guiRenderer, text.toString().length * 6 * GUIMesh.GUIMeshStruct.FLOATS_PER_VERTEX), Labeled { +) : Element(guiRenderer, text.length * 6 * GUIMesh.GUIMeshStruct.FLOATS_PER_VERTEX), Labeled { private var activeElement: TextComponent? = null lateinit var renderInfo: TextRenderInfo private set diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/mesh/SingleWorldMesh.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/mesh/SingleWorldMesh.kt index 8ebda34f5..4ac0ce087 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/mesh/SingleWorldMesh.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/mesh/SingleWorldMesh.kt @@ -26,24 +26,22 @@ class SingleWorldMesh(renderWindow: RenderWindow, initialCacheSize: Int, onDeman fun addVertex(position: FloatArray, uv: Vec2, texture: AbstractTexture, tintColor: Int, light: Int) { data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX) - val transformedUV = texture.renderData.transformUV(uv) + val transformedUV = texture.renderData.transformUV(uv).array data.add(position[0]) data.add(position[1]) data.add(position[2]) - data.add(transformedUV.x) - data.add(transformedUV.y) + data.addAll(transformedUV) data.add(texture.renderData.shaderTextureId.buffer()) data.add((tintColor or (light shl 24)).buffer()) } fun addVertex(x: Float, y: Float, z: Float, uv: Vec2, texture: AbstractTexture, shaderTextureId: Float, tintLight: Float) { data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX) - val transformedUV = texture.renderData.transformUV(uv) + val transformedUV = texture.renderData.transformUV(uv.array) data.add(x) data.add(y) data.add(z) - data.add(transformedUV.x) - data.add(transformedUV.y) + data.addAll(transformedUV) data.add(shaderTextureId) data.add(tintLight) } diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index 0e346a53d..15f3fc4f9 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -153,6 +153,7 @@ object KUtil { return ChatComponent.of( when (this) { is ChatComponent -> return this + is CharSequence -> this.toString() null -> TextComponent("null").color(ChatColors.DARK_RED) is TextFormattable -> this.toText() is Boolean -> TextComponent(this.toString()).color(this.decide(ChatColors.GREEN, ChatColors.RED)) @@ -306,4 +307,11 @@ object KUtil { Platform.exit() } } + + val Any.length: Int + get() { + if (this is ChatComponent) return this.length + if (this is CharSequence) return this.length + return toString().length + } }