improved arm

This commit is contained in:
Bixilon 2022-12-09 11:52:08 +01:00
parent 2e5a4c1b03
commit 95cba6d3f8
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -26,6 +26,7 @@ import de.bixilon.minosoft.gui.rendering.entity.models.minecraft.player.PlayerMo
import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.Overlay
import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.OverlayFactory
import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement.Companion.BLOCK_RESOLUTION
import de.bixilon.minosoft.gui.rendering.system.base.IntegratedBufferTypes
import de.bixilon.minosoft.gui.rendering.system.base.RenderingCapabilities
import de.bixilon.minosoft.gui.rendering.system.base.texture.skin.PlayerSkin
import de.bixilon.minosoft.util.KUtil.minosoft
@ -83,23 +84,32 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
val matrix = Mat4()
matrix.scaleAssign(1.0f / BLOCK_RESOLUTION) // make a pixel one pixel
matrix.translateAssign(Vec3(if (arm == Arms.LEFT) 4 else -4)) // move inner side of arm to 0|0|0
// rotate arm
// TODO: swinging, etc
// matrix.rotateAssign((a).rad, Vec3(0, 0, 1))
// matrix.rotateAssign(180.0f, Vec3(1,0,0))
matrix.rotateAssign(210.0f.rad, Vec3(1, 0, 0))
matrix.rotateAssign(25.0f.rad, Vec3(0, 1, 0))
matrix.rotateAssign(-5.0f.rad, Vec3(0, 0, 1))
// matrix.translateAssign(Vec3(0.0f ,0.0f, -0.5f))
matrix.scaleAssign(Vec3(1.0f) / Vec3(screen.x, screen.y, (screen.x + screen.y) / 2)) // our matrix will have the size of te screen and some value between as depth
// rotate arm
// TODO: swinging, etc
matrix.rotateAssign(120.0f.rad, Vec3(0, 0, 1))
matrix.rotateAssign(30.0f.rad, Vec3(1, 0, 0))
// left or right of hotbar
// this will be the rotation origin
val screenOrigin = Vec3i((screen.x + if (arm == Arms.LEFT) -120 else 120) / 2, screen.y - 10, 0)
val screenOrigin = Vec3i((screen.x + if (arm == Arms.LEFT) -120 else 120) / 2, -screen.y + 300, 0)
matrix.translateAssign(Vec3(screenOrigin))
matrix.scaleAssign(80.0f)
matrix.translateAssign(Vec3(if (arm == Arms.LEFT) 4 else -4, 0, 0)) // move inner side of arm to 0|0|0
matrix.scaleAssign(BLOCK_RESOLUTION) // make a pixel one pixel
matrix.translateAssign(-0.5f)
return matrix
@ -107,13 +117,17 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
override fun draw() {
val skin = this.skin ?: return
renderWindow.renderSystem.clear(IntegratedBufferTypes.DEPTH_BUFFER)
renderWindow.renderSystem.disable(RenderingCapabilities.FACE_CULLING)
renderWindow.renderSystem.enable(RenderingCapabilities.DEPTH_TEST)
renderWindow.renderSystem.depthMask = true
mesh.unload()
updateMesh()
shader.use()
shader.transform = calculateTransform()
shader.textureIndexLayer = skin.texture.shaderId
mesh.draw()
renderWindow.renderSystem.clear(IntegratedBufferTypes.DEPTH_BUFFER)
}