minor performance improvements

This commit is contained in:
Bixilon 2022-10-05 18:22:27 +02:00
parent abd79f3485
commit 5a695919e4
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 14 additions and 7 deletions

View File

@ -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.system.window.CursorShapes
import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY 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.gui.rendering.util.vec.vec4.Vec4iUtil.offset
import de.bixilon.minosoft.util.KUtil.length
open class TextElement( open class TextElement(
guiRenderer: GUIRenderer, guiRenderer: GUIRenderer,
@ -49,7 +50,7 @@ open class TextElement(
parent: Element? = null, parent: Element? = null,
scale: Float = 1.0f, scale: Float = 1.0f,
shadow: Boolean = true, 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 private var activeElement: TextComponent? = null
lateinit var renderInfo: TextRenderInfo lateinit var renderInfo: TextRenderInfo
private set private set

View File

@ -26,24 +26,22 @@ class SingleWorldMesh(renderWindow: RenderWindow, initialCacheSize: Int, onDeman
fun addVertex(position: FloatArray, uv: Vec2, texture: AbstractTexture, tintColor: Int, light: Int) { fun addVertex(position: FloatArray, uv: Vec2, texture: AbstractTexture, tintColor: Int, light: Int) {
data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX) 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[0])
data.add(position[1]) data.add(position[1])
data.add(position[2]) data.add(position[2])
data.add(transformedUV.x) data.addAll(transformedUV)
data.add(transformedUV.y)
data.add(texture.renderData.shaderTextureId.buffer()) data.add(texture.renderData.shaderTextureId.buffer())
data.add((tintColor or (light shl 24)).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) { fun addVertex(x: Float, y: Float, z: Float, uv: Vec2, texture: AbstractTexture, shaderTextureId: Float, tintLight: Float) {
data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX) data.ensureSize(WorldMeshStruct.FLOATS_PER_VERTEX)
val transformedUV = texture.renderData.transformUV(uv) val transformedUV = texture.renderData.transformUV(uv.array)
data.add(x) data.add(x)
data.add(y) data.add(y)
data.add(z) data.add(z)
data.add(transformedUV.x) data.addAll(transformedUV)
data.add(transformedUV.y)
data.add(shaderTextureId) data.add(shaderTextureId)
data.add(tintLight) data.add(tintLight)
} }

View File

@ -153,6 +153,7 @@ object KUtil {
return ChatComponent.of( return ChatComponent.of(
when (this) { when (this) {
is ChatComponent -> return this is ChatComponent -> return this
is CharSequence -> this.toString()
null -> TextComponent("null").color(ChatColors.DARK_RED) null -> TextComponent("null").color(ChatColors.DARK_RED)
is TextFormattable -> this.toText() is TextFormattable -> this.toText()
is Boolean -> TextComponent(this.toString()).color(this.decide(ChatColors.GREEN, ChatColors.RED)) is Boolean -> TextComponent(this.toString()).color(this.decide(ChatColors.GREEN, ChatColors.RED))
@ -306,4 +307,11 @@ object KUtil {
Platform.exit() Platform.exit()
} }
} }
val Any.length: Int
get() {
if (this is ChatComponent) return this.length
if (this is CharSequence) return this.length
return toString().length
}
} }