forked from Clones/Controlify
✏️ Keep circularity on look input, like vmouse commit abobe
This commit is contained in:
@ -9,6 +9,7 @@ import dev.isxander.controlify.controller.gamepad.GamepadState;
|
|||||||
import dev.isxander.controlify.gui.screen.RadialMenuScreen;
|
import dev.isxander.controlify.gui.screen.RadialMenuScreen;
|
||||||
import dev.isxander.controlify.server.ServerPolicies;
|
import dev.isxander.controlify.server.ServerPolicies;
|
||||||
import dev.isxander.controlify.utils.Animator;
|
import dev.isxander.controlify.utils.Animator;
|
||||||
|
import dev.isxander.controlify.utils.ControllerUtils;
|
||||||
import dev.isxander.controlify.utils.Easings;
|
import dev.isxander.controlify.utils.Easings;
|
||||||
import dev.isxander.controlify.utils.HoldRepeatHelper;
|
import dev.isxander.controlify.utils.HoldRepeatHelper;
|
||||||
import net.minecraft.client.CameraType;
|
import net.minecraft.client.CameraType;
|
||||||
@ -23,6 +24,7 @@ import net.minecraft.util.Mth;
|
|||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
|
import org.joml.Vector2fc;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
@ -162,11 +164,21 @@ public class InGameInputHandler {
|
|||||||
}, 0, turnAngle));
|
}, 0, turnAngle));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// TODO: refactor this function majorly, so you can easily multiply the impulse vec's length
|
// TODO: refactor this function majorly - this is truly awful
|
||||||
// possibly separate the flick stick code into its own function?
|
// possibly separate the flick stick code into its own function?
|
||||||
// normal look input
|
// normal look input
|
||||||
impulseY = controller.bindings().LOOK_DOWN.state() - controller.bindings().LOOK_UP.state();
|
impulseY = controller.bindings().LOOK_DOWN.state() - controller.bindings().LOOK_UP.state();
|
||||||
impulseX = controller.bindings().LOOK_RIGHT.state() - controller.bindings().LOOK_LEFT.state();
|
impulseX = controller.bindings().LOOK_RIGHT.state() - controller.bindings().LOOK_LEFT.state();
|
||||||
|
|
||||||
|
// apply the easing on its length to preserve circularity
|
||||||
|
Vector2fc easedImpulse = ControllerUtils.applyEasingToLength(
|
||||||
|
impulseX,
|
||||||
|
impulseY,
|
||||||
|
x -> x * Math.abs(x)
|
||||||
|
);
|
||||||
|
impulseX = easedImpulse.x();
|
||||||
|
impulseY = easedImpulse.y();
|
||||||
|
|
||||||
impulseX *= controller.config().horizontalLookSensitivity * 10f; // 10 degrees per second at 100% sensitivity
|
impulseX *= controller.config().horizontalLookSensitivity * 10f; // 10 degrees per second at 100% sensitivity
|
||||||
impulseY *= controller.config().verticalLookSensitivity * 10f;
|
impulseY *= controller.config().verticalLookSensitivity * 10f;
|
||||||
|
|
||||||
@ -209,7 +221,7 @@ public class InGameInputHandler {
|
|||||||
.mul(gamepad.config().gyroLookSensitivity);
|
.mul(gamepad.config().gyroLookSensitivity);
|
||||||
|
|
||||||
impulseY += -thisInput.pitch() * (gamepad.config().invertGyroY ? -1 : 1);
|
impulseY += -thisInput.pitch() * (gamepad.config().invertGyroY ? -1 : 1);
|
||||||
impulseX += (-thisInput.roll() + -thisInput.yaw()) * (gamepad.config().invertGyroX ? -1 : 1);
|
impulseX += (-thisInput.roll() - thisInput.yaw()) * (gamepad.config().invertGyroX ? -1 : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user