Skip to content

Commit ab69340

Browse files
committed
correct LCE sensitivity
1 parent 7c73a4f commit ab69340

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/main/java/dev/isxander/controlify/gui/screen/ControllerConfigScreenFactory.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ private Optional<OptionGroup> makeSensitivityGroup(
132132
InputSettings.SensitivitySettings sens = settings.input.sensitivity;
133133
InputSettings.SensitivitySettings def = defaults.input.sensitivity;
134134

135+
Option<InputCurves> lookInputCurveOpt;
136+
135137
return Optional.of(builder
136138
.option(Option.<Float>createBuilder()
137139
.name(Component.translatable("controlify.gui.horizontal_look_sensitivity"))
@@ -177,7 +179,7 @@ private Optional<OptionGroup> makeSensitivityGroup(
177179
.binding(def.reduceAimingSensitivity, () -> sens.reduceAimingSensitivity, v -> sens.reduceAimingSensitivity = v)
178180
.controller(TickBoxControllerBuilder::create)
179181
.build())
180-
.option(Option.<InputCurves>createBuilder()
182+
.option(lookInputCurveOpt = Option.<InputCurves>createBuilder()
181183
.name(Component.translatable("controlify.gui.look_input_curve"))
182184
.description(OptionDescription.createBuilder()
183185
.text(Component.translatable("controlify.gui.look_input_curve.tooltip"))
@@ -194,6 +196,9 @@ private Optional<OptionGroup> makeSensitivityGroup(
194196
.binding(def.isLCE, () -> sens.isLCE, v -> sens.isLCE = v)
195197
.controller(opt -> BooleanControllerBuilder.create(opt)
196198
.onOffFormatter())
199+
.addListener((opt, event) -> {
200+
lookInputCurveOpt.setAvailable(!opt.pendingValue());
201+
})
197202
.build())
198203
.build());
199204
}

src/main/java/dev/isxander/controlify/ingame/InGameInputHandler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -313,17 +313,17 @@ protected void handleRegularLook(InputComponent input, Vector2d impulse, boolean
313313
regularImpulse.y *= -1;
314314
}
315315

316-
InputCurve curve = settings.sensitivity.lookInputCurve;
317316
if (!settings.sensitivity.isLCE) {
318317
// apply the easing on its length to preserve circularity
319318
regularImpulse = ControllerUtils.applyEasingToLength(
320319
regularImpulse,
321-
curve::apply
320+
settings.sensitivity.lookInputCurve::apply
322321
);
323322
} else {
324-
// LCE doesn't preserve circularity
325-
regularImpulse.x = curve.apply(regularImpulse.x);
326-
regularImpulse.y = curve.apply(regularImpulse.y);
323+
// LCE uses a quadratic curve on each axis independently,
324+
// and its default turn speed was 7.5 degrees per tick at 100% sensitivity
325+
regularImpulse.x = regularImpulse.x * Math.abs(regularImpulse.x) * 0.75f;
326+
regularImpulse.y = regularImpulse.y * Math.abs(regularImpulse.y) * 0.75f;
327327
}
328328

329329
if (settings.sensitivity.reduceAimingSensitivity && player.isUsingItem()) {
@@ -340,7 +340,7 @@ protected void handleRegularLook(InputComponent input, Vector2d impulse, boolean
340340
regularImpulse.mul(aimMultiplier);
341341
}
342342

343-
// 10 degrees per second at 100% sensitivity
343+
// 10 degrees per tick at 100% sensitivity
344344
regularImpulse.x *= settings.sensitivity.hLookSensitivity * 10f;
345345
regularImpulse.y *= settings.sensitivity.vLookSensitivity * 10f;
346346

0 commit comments

Comments
 (0)