From f9279359b41412c2f8fa045c6d375703de7da5e2 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Tue, 25 Jul 2023 21:56:53 +0530 Subject: [PATCH] better touch controls camera --- src/touch/CameraInput.hx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/touch/CameraInput.hx b/src/touch/CameraInput.hx index 149bb2b0..3d079d12 100644 --- a/src/touch/CameraInput.hx +++ b/src/touch/CameraInput.hx @@ -8,6 +8,7 @@ import gui.GuiControl; import src.MarbleGame; import src.Settings; import touch.TouchInput.TouchEventState; +import src.Util; class CameraInput { var identifier:Int = -1; @@ -77,7 +78,7 @@ class CameraInput { if (jumpcam) { scaleFactor /= Settings.touchSettings.buttonJoystickMultiplier; } - MarbleGame.instance.world.marble.camera.orbit(delta.x / scaleFactor, delta.y / scaleFactor, true); + MarbleGame.instance.world.marble.camera.orbit(applyNonlinearScale(delta.x / scaleFactor), applyNonlinearScale(delta.y / scaleFactor), true); prevMouse.x = e.relX; prevMouse.y = e.relY; } @@ -96,6 +97,11 @@ class CameraInput { } } + function applyNonlinearScale(value:Float) { + var clamped = Util.clamp(value, -10, 10); + return Math.abs(clamped) < 3 ? Math.pow(Math.abs(clamped / 2), 2.7) * (clamped >= 0 ? 1 : -1) : clamped; + } + // public function update(touchState:TouchEventState, joycam:Bool) { // if (!enabled) // return;