mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-13 17:37:58 -04:00
fixes
This commit is contained in:
parent
520a02b77b
commit
f255d5278d
@ -13,12 +13,15 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entities.easteregg
|
||||
|
||||
import de.bixilon.kotlinglm.func.rad
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.entities.entities.Entity
|
||||
import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity
|
||||
import de.bixilon.minosoft.data.entities.entities.player.SkinParts
|
||||
|
||||
object EntityEasterEggs {
|
||||
private val FLIPPED = setOf("Dinnerbone", "Grumm")
|
||||
val FLIP_ROTATION = Vec3(0.0f, 0.0f, 180.0f.rad)
|
||||
|
||||
fun Entity.isFlipped(): Boolean {
|
||||
var name = this.customName?.message
|
||||
|
@ -13,6 +13,8 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entities.model.human
|
||||
|
||||
import de.bixilon.minosoft.data.entities.Poses
|
||||
import de.bixilon.minosoft.data.entities.entities.LivingEntity
|
||||
import de.bixilon.minosoft.gui.rendering.entities.feature.SkeletalFeature
|
||||
import de.bixilon.minosoft.gui.rendering.entities.model.human.animator.ArmAnimator
|
||||
import de.bixilon.minosoft.gui.rendering.entities.model.human.animator.HeadPosition
|
||||
@ -27,12 +29,18 @@ abstract class HumanModel<R : EntityRenderer<*>>(renderer: R, model: BakedSkelet
|
||||
val arm = ArmAnimator(this, instance.transform.children["left_arm"]!!, instance.transform.children["right_arm"]!!)
|
||||
|
||||
val speed = EntitySpeed(renderer.entity)
|
||||
|
||||
var pose = Poses.STANDING
|
||||
override fun updatePosition() {
|
||||
super.updatePosition()
|
||||
head?.update()
|
||||
}
|
||||
|
||||
fun updatePose() {
|
||||
val entity =renderer.entity
|
||||
if(entity !is LivingEntity) return
|
||||
val pose = entity.pose ?: return
|
||||
}
|
||||
|
||||
override fun update(millis: Long, delta: Float) {
|
||||
speed.update(delta)
|
||||
super.update(millis, delta)
|
||||
|
@ -18,6 +18,7 @@ import de.bixilon.kutil.observer.set.SetObserver.Companion.observeSet
|
||||
import de.bixilon.minosoft.data.entities.entities.player.SkinParts.Companion.pack
|
||||
import de.bixilon.minosoft.gui.rendering.entities.renderer.player.PlayerRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.baked.BakedSkeletalModel
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.DepthFunctions
|
||||
|
||||
open class PlayerModel(
|
||||
renderer: PlayerRenderer<*>,
|
||||
|
@ -13,12 +13,14 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entities.model.human.animator
|
||||
|
||||
import de.bixilon.kotlinglm.func.rad
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kutil.math.MathConstants.PIf
|
||||
import de.bixilon.kutil.math.interpolation.FloatInterpolation.interpolateLinear
|
||||
import de.bixilon.minosoft.gui.rendering.entities.model.human.HumanModel
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.instance.TransformInstance
|
||||
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateDegreesAssign
|
||||
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateXAssign
|
||||
import kotlin.math.sin
|
||||
|
||||
class ArmAnimator(
|
||||
@ -45,13 +47,15 @@ class ArmAnimator(
|
||||
if (this.maxAngle == 0.0f) return
|
||||
val progress = sin((progress - 1.0f) * PIf) * this.maxAngle
|
||||
|
||||
val rad = progress.rad
|
||||
|
||||
left.value
|
||||
.translateAssign(left.pivot)
|
||||
.rotateDegreesAssign(Vec3(progress, 0.0f, 0.0f))
|
||||
.rotateXAssign(rad)
|
||||
.translateAssign(left.nPivot)
|
||||
right.value
|
||||
.translateAssign(left.pivot)
|
||||
.rotateDegreesAssign(Vec3(-progress, 0.0f, 0.0f))
|
||||
.rotateXAssign(-rad)
|
||||
.translateAssign(left.nPivot)
|
||||
}
|
||||
|
||||
|
@ -13,12 +13,14 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entities.model.human.animator
|
||||
|
||||
import de.bixilon.kotlinglm.func.rad
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.kutil.math.MathConstants.PIf
|
||||
import de.bixilon.kutil.math.interpolation.FloatInterpolation.interpolateLinear
|
||||
import de.bixilon.minosoft.gui.rendering.entities.model.human.HumanModel
|
||||
import de.bixilon.minosoft.gui.rendering.skeletal.instance.TransformInstance
|
||||
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateDegreesAssign
|
||||
import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateXAssign
|
||||
import kotlin.math.sin
|
||||
|
||||
class LegAnimator(
|
||||
@ -45,13 +47,14 @@ class LegAnimator(
|
||||
if (this.maxAngle == 0.0f) return
|
||||
val progress = sin((progress - 1.0f) * PIf) * this.maxAngle
|
||||
|
||||
val rad = progress.rad
|
||||
left.value
|
||||
.translateAssign(left.pivot)
|
||||
.rotateDegreesAssign(Vec3(-progress, 0.0f, 0.0f))
|
||||
.rotateXAssign(-rad)
|
||||
.translateAssign(left.nPivot)
|
||||
right.value
|
||||
.translateAssign(left.pivot)
|
||||
.rotateDegreesAssign(Vec3(progress, 0.0f, 0.0f))
|
||||
.rotateXAssign(rad)
|
||||
.translateAssign(left.nPivot)
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ import de.bixilon.minosoft.data.entities.entities.Entity
|
||||
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
|
||||
import de.bixilon.minosoft.data.text.formatting.color.ColorUtil
|
||||
import de.bixilon.minosoft.gui.rendering.entities.EntitiesRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.entities.easteregg.EntityEasterEggs.FLIP_ROTATION
|
||||
import de.bixilon.minosoft.gui.rendering.entities.easteregg.EntityEasterEggs.isFlipped
|
||||
import de.bixilon.minosoft.gui.rendering.entities.feature.EntityRenderFeature
|
||||
import de.bixilon.minosoft.gui.rendering.entities.feature.FeatureManager
|
||||
@ -52,7 +53,7 @@ abstract class EntityRenderer<E : Entity>(
|
||||
matrix.translateAssign(position)
|
||||
|
||||
if (entity.isFlipped()) {
|
||||
matrix.rotateDegreesAssign(Vec3(180.0f, 0.0f, 0.0f)) // TODO: verify
|
||||
matrix.rotateDegreesAssign(FLIP_ROTATION)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ class EntitySpeed(val entity: Entity) {
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val TIME = 0.2f
|
||||
const val TIME = 0.15f
|
||||
const val TIME_RATIO = TIME / (ProtocolDefinition.TICK_TIMEf / 1000.0f)
|
||||
}
|
||||
}
|
||||
|
@ -19,5 +19,5 @@ import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
|
||||
interface AbstractShader {
|
||||
val native: NativeShader
|
||||
|
||||
fun <T> uniform(name: String, default: T, type: ShaderSetter<T> = NativeShader::set): ShaderUniform<T>
|
||||
fun <T> uniform(name: String, default: T, type: ShaderSetter<T> = ShaderSetter { shader, name, value -> shader[name] = value }): ShaderUniform<T>
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.shader
|
||||
|
||||
import de.bixilon.minosoft.gui.rendering.shader.types.TransparentShader
|
||||
import de.bixilon.minosoft.gui.rendering.shader.uniform.ShaderUniform
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.shader.NativeShader
|
||||
|
||||
abstract class Shader : AbstractShader {
|
||||
private val uniforms: MutableMap<String, ShaderUniform<*>> = mutableMapOf()
|
||||
|
@ -48,13 +48,13 @@ data class SkeletalElement(
|
||||
private fun bake(context: SkeletalBakeContext, path: String) {
|
||||
val context = context.copy(this)
|
||||
|
||||
for ((name, child) in children) {
|
||||
child.bake(context, "$path.$name")
|
||||
}
|
||||
|
||||
val transform = context.transform.id
|
||||
for ((direction, face) in faces) {
|
||||
face.bake(context, direction, this, transform, path)
|
||||
}
|
||||
for ((name, child) in children) {
|
||||
child.bake(context, "$path.$name")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,12 @@ object Mat4Util {
|
||||
System.arraycopy(empty.array, 0, array, 0, Mat4.length)
|
||||
}
|
||||
|
||||
fun Mat4.rotateXAssign(rad:Float): Mat4 {
|
||||
rotateX(this, rad)
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
fun rotateX(m: Mat4, angle: Float) {
|
||||
val c = GLM.cos(angle)
|
||||
val s = GLM.sin(angle)
|
||||
|
Loading…
x
Reference in New Issue
Block a user