From 95cba6d3f8a9d23f8255f96de1cf5f6b2ddbdb39 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 9 Dec 2022 11:52:08 +0100 Subject: [PATCH] improved arm --- .../world/overlay/overlays/arm/ArmOverlay.kt | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/arm/ArmOverlay.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/arm/ArmOverlay.kt index 576ebcb17..8120dbe7c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/arm/ArmOverlay.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/world/overlay/overlays/arm/ArmOverlay.kt @@ -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) }