mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-14 18:05:51 -04:00
skeletal: don't inherit all rotations
This commit is contained in:
parent
ed451f7b85
commit
252dd3e1e8
@ -14,7 +14,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.skeletal.baked
|
package de.bixilon.minosoft.gui.rendering.skeletal.baked
|
||||||
|
|
||||||
import de.bixilon.kotlinglm.vec3.Vec3
|
import de.bixilon.kotlinglm.vec3.Vec3
|
||||||
import de.bixilon.kutil.collections.CollectionUtil.extend
|
|
||||||
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
|
import de.bixilon.minosoft.data.registries.identified.ResourceLocation
|
||||||
import de.bixilon.minosoft.gui.rendering.models.block.element.ModelElement.Companion.BLOCK_SIZE
|
import de.bixilon.minosoft.gui.rendering.models.block.element.ModelElement.Companion.BLOCK_SIZE
|
||||||
import de.bixilon.minosoft.gui.rendering.skeletal.mesh.AbstractSkeletalMesh
|
import de.bixilon.minosoft.gui.rendering.skeletal.mesh.AbstractSkeletalMesh
|
||||||
@ -28,7 +27,7 @@ data class SkeletalBakeContext(
|
|||||||
val inflate: Float = 0.0f,
|
val inflate: Float = 0.0f,
|
||||||
val texture: ResourceLocation? = null,
|
val texture: ResourceLocation? = null,
|
||||||
val transform: BakedSkeletalTransform,
|
val transform: BakedSkeletalTransform,
|
||||||
val rotations: List<SkeletalRotation> = emptyList(),
|
val rotation: SkeletalRotation? = null,
|
||||||
|
|
||||||
val textures: Map<ResourceLocation, SkeletalTextureInstance>,
|
val textures: Map<ResourceLocation, SkeletalTextureInstance>,
|
||||||
val consumer: AbstractSkeletalMesh,
|
val consumer: AbstractSkeletalMesh,
|
||||||
@ -38,9 +37,9 @@ data class SkeletalBakeContext(
|
|||||||
val offset = this.offset + (element.offset / BLOCK_SIZE)
|
val offset = this.offset + (element.offset / BLOCK_SIZE)
|
||||||
val inflate = this.inflate + element.inflate
|
val inflate = this.inflate + element.inflate
|
||||||
val texture = element.texture ?: texture
|
val texture = element.texture ?: texture
|
||||||
val rotations = if (element.rotation != null) this.rotations.extend(element.rotation.apply(offset, element.from, element.to)) else this.rotations
|
val rotation = element.rotation ?: this.rotation
|
||||||
val transform = element.transform?.let { transform.children[element.transform] ?: throw IllegalArgumentException("Can not find transform ${element.transform}") } ?: transform
|
val transform = element.transform?.let { transform.children[element.transform] ?: throw IllegalArgumentException("Can not find transform ${element.transform}") } ?: transform
|
||||||
|
|
||||||
return copy(offset = offset, inflate = inflate, texture = texture, transform = transform, rotations = rotations)
|
return copy(offset = offset, inflate = inflate, texture = texture, transform = transform, rotation = rotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.gui.rendering.skeletal.model.elements
|
package de.bixilon.minosoft.gui.rendering.skeletal.model.elements
|
||||||
|
|
||||||
import de.bixilon.kotlinglm.GLM
|
|
||||||
import de.bixilon.kotlinglm.vec2.Vec2
|
import de.bixilon.kotlinglm.vec2.Vec2
|
||||||
import de.bixilon.kotlinglm.vec3.Vec3
|
import de.bixilon.kotlinglm.vec3.Vec3
|
||||||
import de.bixilon.minosoft.data.direction.Directions
|
import de.bixilon.minosoft.data.direction.Directions
|
||||||
@ -22,6 +21,7 @@ import de.bixilon.minosoft.gui.rendering.models.block.element.ModelElement.Compa
|
|||||||
import de.bixilon.minosoft.gui.rendering.models.block.element.face.FaceUV
|
import de.bixilon.minosoft.gui.rendering.models.block.element.face.FaceUV
|
||||||
import de.bixilon.minosoft.gui.rendering.models.util.CuboidUtil
|
import de.bixilon.minosoft.gui.rendering.models.util.CuboidUtil
|
||||||
import de.bixilon.minosoft.gui.rendering.skeletal.baked.SkeletalBakeContext
|
import de.bixilon.minosoft.gui.rendering.skeletal.baked.SkeletalBakeContext
|
||||||
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.rad
|
||||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.rotateAssign
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.rotateAssign
|
||||||
|
|
||||||
data class SkeletalFace(
|
data class SkeletalFace(
|
||||||
@ -47,10 +47,10 @@ data class SkeletalFace(
|
|||||||
|
|
||||||
val normal = Vec3(direction.vector)
|
val normal = Vec3(direction.vector)
|
||||||
|
|
||||||
for (rotation in context.rotations) {
|
if (context.rotation != null) {
|
||||||
val origin = rotation.origin!!
|
val origin = context.rotation.origin ?: ((to + from) / 2.0f)
|
||||||
|
|
||||||
val rad = -GLM.radians(rotation.value)
|
val rad = -context.rotation.value.rad
|
||||||
val vec = Vec3(0, positions)
|
val vec = Vec3(0, positions)
|
||||||
normal.rotateAssign(rad)
|
normal.rotateAssign(rad)
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
package de.bixilon.minosoft.gui.rendering.skeletal.model.elements
|
package de.bixilon.minosoft.gui.rendering.skeletal.model.elements
|
||||||
|
|
||||||
import de.bixilon.kotlinglm.vec3.Vec3
|
import de.bixilon.kotlinglm.vec3.Vec3
|
||||||
import de.bixilon.minosoft.gui.rendering.models.block.element.ModelElement.Companion.BLOCK_SIZE
|
|
||||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY
|
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY
|
||||||
|
|
||||||
data class SkeletalRotation(
|
data class SkeletalRotation(
|
||||||
@ -23,15 +22,6 @@ data class SkeletalRotation(
|
|||||||
val rescale: Boolean = false,
|
val rescale: Boolean = false,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun apply(offset: Vec3, from: Vec3, to: Vec3): SkeletalRotation {
|
|
||||||
var origin = this.origin
|
|
||||||
if (origin == null) {
|
|
||||||
origin = ((to + from) / 2.0f / BLOCK_SIZE) + offset
|
|
||||||
}
|
|
||||||
|
|
||||||
return SkeletalRotation(value, origin, rescale)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val EMPTY = SkeletalRotation(Vec3.EMPTY, Vec3.EMPTY, false)
|
val EMPTY = SkeletalRotation(Vec3.EMPTY, Vec3.EMPTY, false)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user