wip sleeping and sneaking

This commit is contained in:
Moritz Zwerger 2023-10-30 22:31:36 +01:00
parent 9455ef7d28
commit 3c321373b3
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
2 changed files with 25 additions and 1 deletions

View File

@ -13,8 +13,20 @@
package de.bixilon.minosoft.gui.rendering.entities.renderer.living 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.data.entities.entities.LivingEntity
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateDegreesAssign
abstract class LivingEntityRenderer<E : LivingEntity>(renderer: EntitiesRenderer, entity: E) : EntityRenderer<E>(renderer, entity) abstract class LivingEntityRenderer<E : LivingEntity>(renderer: EntitiesRenderer, entity: E) : EntityRenderer<E>(renderer, entity) {
override fun updateMatrix(delta: Float) {
super.updateMatrix(delta)
when (entity.pose) {
Poses.SLEEPING -> matrix.rotateDegreesAssign(Vec3(90, 0, 0)) // TODO
else -> Unit
}
}
}

View File

@ -13,7 +13,9 @@
package de.bixilon.minosoft.gui.rendering.entities.renderer.living.player 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.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.PlayerEntity
import de.bixilon.minosoft.data.entities.entities.player.properties.textures.metadata.SkinModel import de.bixilon.minosoft.data.entities.entities.player.properties.textures.metadata.SkinModel
import de.bixilon.minosoft.data.registries.identified.Identified import de.bixilon.minosoft.data.registries.identified.Identified
@ -96,6 +98,14 @@ open class PlayerRenderer<E : PlayerEntity>(renderer: EntitiesRenderer, entity:
return true 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<PlayerEntity>, Identified, SkeletalMeshBuilder { companion object : RegisteredEntityModelFactory<PlayerEntity>, Identified, SkeletalMeshBuilder {
override val identifier get() = PlayerEntity.identifier override val identifier get() = PlayerEntity.identifier
@ -104,6 +114,8 @@ open class PlayerRenderer<E : PlayerEntity>(renderer: EntitiesRenderer, entity:
private val SKIN = minecraft("skin") 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 create(renderer: EntitiesRenderer, entity: PlayerEntity) = PlayerRenderer(renderer, entity)
override fun buildMesh(context: RenderContext) = PlayerModelMesh(context) override fun buildMesh(context: RenderContext) = PlayerModelMesh(context)