From c9d8aeda727b7f21e104b098b7d837ac3e70dd43 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 75925edd..01ed6879 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; @@ -78,7 +79,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; } @@ -97,6 +98,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;