From 1cad38d993cb95526ecf7178b5ab0832bbdd65a2 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Thu, 19 Oct 2023 17:43:50 -0400 Subject: [PATCH] implement thresholded pointer position clipping --- .../InputSystem/ControllerTypes/InputMouse.cs | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/InputSystem/ControllerTypes/InputMouse.cs b/Assets/Scripts/InputSystem/ControllerTypes/InputMouse.cs index 88dba6c74..85ba2f086 100644 --- a/Assets/Scripts/InputSystem/ControllerTypes/InputMouse.cs +++ b/Assets/Scripts/InputSystem/ControllerTypes/InputMouse.cs @@ -100,7 +100,9 @@ namespace HeavenStudio.InputSystem lastRealPos = realPos; lastDeltaPointerPos = deltaPointerPos; - rawPointerPos += new Vector3(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"), 0) * currentBindings.PointerSensitivity; + float pointerXmove = Input.GetAxis("Mouse X"); + float pointerYmove = Input.GetAxis("Mouse Y"); + rawPointerPos += new Vector3(pointerXmove, pointerYmove, 0) * currentBindings.PointerSensitivity; rawPointerPos.z = Mathf.Abs(cam.gameObject.transform.position.z); realPos = cam.ScreenToWorldPoint(rawPointerPos); @@ -112,6 +114,36 @@ namespace HeavenStudio.InputSystem } deltaPointerPos = realPos - lastRealPos; + bool forcedToBounds = false + if (pointerXmove > 0 && rawPointerPos.x < 0) + { + rawPointerPos.x = 0; + forcedToBounds = true; + } + else if (pointerXmove < 0 && rawPointerPos.x > ScreenBounds.x) + { + rawPointerPos.x = ScreenBounds.x; + forcedToBounds = true; + } + if (pointerYmove > 0 && rawPointerPos.y < 0) + { + rawPointerPos.y = 0; + forcedToBounds = true; + } + else if (pointerYmove < 0 && rawPointerPos.y > ScreenBounds.y) + { + rawPointerPos.y = ScreenBounds.y; + forcedToBounds = true; + } + + if (forcedToBounds) + { + lastRawPointerPos = rawPointerPos; + realPos = cam.ScreenToWorldPoint(rawPointerPos); + startPointerPos = realPos; + lastRealPos = realPos; + } + float speed = deltaPointerPos.magnitude; if (GetAction(ControlStyles.Touch, 0)) {