From 1daec9a4dfa3043e5d989bdb960e6b9e730af48e Mon Sep 17 00:00:00 2001 From: OLEGSHA Date: Sun, 8 Nov 2020 12:46:12 +0300 Subject: [PATCH] Untangled some of the mess with movement controls in LayerWorld Now entity getVelocity() method matches actual velocity for player entities. WTF was I thinking when I wrote that code? Past me very stupid. --- .../client/graphics/world/LayerWorld.java | 23 ++++++++++++++----- .../client/world/entity/QuadripedModel.java | 2 +- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java b/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java index 2cc11b0..1efa6ca 100644 --- a/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java +++ b/src/main/java/ru/windcorp/progressia/client/graphics/world/LayerWorld.java @@ -84,26 +84,31 @@ public class LayerWorld extends Layer { private void tmp_handleControls() { EntityData player = client.getLocalPlayer(); - angMat.set().rotateZ(player.getYaw()); + angMat.identity().rotateZ(player.getYaw()); Vec3 movement = Vectors.grab3(); + // Horizontal and vertical max control speed + final float movementSpeed = 0.1f * 60.0f; + // (0; 1], 1 is instant change, 0 is no control authority + final float controlAuthority = 0.1f; + movement.set(movementForward, -movementRight, 0); if (movementForward != 0 && movementRight != 0) movement.normalize(); - angMat.mul_(movement); // bug in jglm + angMat.mul_(movement); // bug in jglm, .mul() and mul_() are swapped movement.z = movementUp; - movement.mul(0.1f); + movement.mul(movementSpeed); movement.sub(velocity); - movement.mul(0.1f); + movement.mul(controlAuthority); velocity.add(movement); Vectors.release(movement); Vec3 velCopy = Vectors.grab3().set(velocity); - velCopy.mul((float) (GraphicsInterface.getFrameLength() * 60)); + velCopy.mul((float) GraphicsInterface.getFrameLength()); - player.getPosition().add(velCopy); + player.move(velCopy); player.getVelocity().set(velocity); Vectors.release(velCopy); @@ -115,10 +120,16 @@ public class LayerWorld extends Layer { this.client.getWorld().render(helper); + tmp_doEveryFrame(); + FaceCulling.pop(); helper.reset(); } + private void tmp_doEveryFrame() { + // Stub for the future + } + @Override protected void handleInput(Input input) { if (input.isConsumed()) return; diff --git a/src/main/java/ru/windcorp/progressia/client/world/entity/QuadripedModel.java b/src/main/java/ru/windcorp/progressia/client/world/entity/QuadripedModel.java index a7bdc97..c19a3b0 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/entity/QuadripedModel.java +++ b/src/main/java/ru/windcorp/progressia/client/world/entity/QuadripedModel.java @@ -116,7 +116,7 @@ public class QuadripedModel extends EntityRenderable { */ private float velocityCutoff = 10; - private float walkingFrequency = 0.15f; + private float walkingFrequency = 0.15f / 60.0f; private float walkingSwing = (float) toRadians(30); private float bodyYaw = Float.NaN;