From 7dcc1893074c74e10afb35e824ea6eab620e6382 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Fri, 10 Nov 2023 22:02:39 +0100 Subject: [PATCH] skeletal feature: fix async transforms not applied --- .../renderer/storage/StorageBlockEntityRenderer.kt | 1 + .../gui/rendering/skeletal/instance/SkeletalInstance.kt | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/entities/renderer/storage/StorageBlockEntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/entities/renderer/storage/StorageBlockEntityRenderer.kt index 030653e12..f6d4ef12f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/entities/renderer/storage/StorageBlockEntityRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/entities/renderer/storage/StorageBlockEntityRenderer.kt @@ -26,6 +26,7 @@ abstract class StorageBlockEntityRenderer( override var light = 0xFF override fun draw(context: RenderContext) { + skeletal?.update() skeletal?.draw(light) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt index 39076ac24..097ecfdeb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt @@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.skeletal.instance import de.bixilon.kotlinglm.mat4x4.Mat4 import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3i +import de.bixilon.kutil.time.TimeUtil.millis import de.bixilon.minosoft.data.text.formatting.color.RGBColor import de.bixilon.minosoft.gui.rendering.RenderContext import de.bixilon.minosoft.gui.rendering.shader.Shader @@ -52,12 +53,15 @@ class SkeletalInstance( fun draw(shader: Shader) { shader.use() - transform.reset() - animation.draw() context.skeletal.upload(this, matrix) model.mesh.draw() } + fun update(time: Long = millis()) { + transform.reset() + animation.draw(time) + } + fun update(position: Vec3, rotation: Vec3, pivot: Vec3 = Vec3.EMPTY_INSTANCE, matrix: Mat4? = null) { this.matrix.reset() this.matrix