From 3c321373b360f088930e4f3aff5fc18d668e2eb8 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Mon, 30 Oct 2023 22:31:36 +0100 Subject: [PATCH] wip sleeping and sneaking --- .../renderer/living/LivingEntityRenderer.kt | 14 +++++++++++++- .../renderer/living/player/PlayerRenderer.kt | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/LivingEntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/LivingEntityRenderer.kt index 7f0fceec6..900e5a03d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/LivingEntityRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/LivingEntityRenderer.kt @@ -13,8 +13,20 @@ package de.bixilon.minosoft.gui.rendering.entities.renderer.living +import de.bixilon.kotlinglm.vec3.Vec3 +import de.bixilon.minosoft.data.entities.Poses import de.bixilon.minosoft.data.entities.entities.LivingEntity import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer +import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateDegreesAssign -abstract class LivingEntityRenderer(renderer: EntitiesRenderer, entity: E) : EntityRenderer(renderer, entity) +abstract class LivingEntityRenderer(renderer: EntitiesRenderer, entity: E) : EntityRenderer(renderer, entity) { + + override fun updateMatrix(delta: Float) { + super.updateMatrix(delta) + when (entity.pose) { + Poses.SLEEPING -> matrix.rotateDegreesAssign(Vec3(90, 0, 0)) // TODO + else -> Unit + } + } +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/player/PlayerRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/player/PlayerRenderer.kt index 67384a1d1..cb9d8110b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/player/PlayerRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/living/player/PlayerRenderer.kt @@ -13,7 +13,9 @@ package de.bixilon.minosoft.gui.rendering.entities.renderer.living.player +import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kutil.observer.DataObserver.Companion.observe +import de.bixilon.minosoft.data.entities.Poses import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity import de.bixilon.minosoft.data.entities.entities.player.properties.textures.metadata.SkinModel import de.bixilon.minosoft.data.registries.identified.Identified @@ -96,6 +98,14 @@ open class PlayerRenderer(renderer: EntitiesRenderer, entity: return true } + override fun updateMatrix(delta: Float) { + super.updateMatrix(delta) + when (entity.pose) { + Poses.SNEAKING -> matrix.translateAssign(SNEAKING_OFFSET) // TODO: interpolate + else -> Unit + } + } + companion object : RegisteredEntityModelFactory, Identified, SkeletalMeshBuilder { override val identifier get() = PlayerEntity.identifier @@ -104,6 +114,8 @@ open class PlayerRenderer(renderer: EntitiesRenderer, entity: private val SKIN = minecraft("skin") + private val SNEAKING_OFFSET = Vec3(0.0f, -0.125f, 0.0f) + override fun create(renderer: EntitiesRenderer, entity: PlayerEntity) = PlayerRenderer(renderer, entity) override fun buildMesh(context: RenderContext) = PlayerModelMesh(context)