usingFramework;usingPhxhSDK;usingUnityEngine;usingUnityEngine.EventSystems;usingUnityEngine.InputSystem;usingUnityEngine.InputSystem.Controls;usingUnityEngine.InputSystem.EnhancedTouch;usingTouch=UnityEngine.InputSystem.EnhancedTouch.Touch;publicclassInputManager:SingletonMono<InputManager>{publicdelegatevoidOnFingerMoveEvent(Vector2delta);publicdelegatevoidOnFingerUpEvent(Vector2screenPosition);publicdelegatevoidOnFingersMoveEvent(floatdelta);publicOnFingerMoveEventOnFingerMove;publicOnFingerMoveEventOnFingerMoveUI;publicOnFingerUpEventOnFingerUp;publicOnFingerUpEventOnFingerUpUI;publicOnFingerUpEventOnClick;publicOnFingersMoveEventOnFingersMove;privateboolhandledThisFrame;privateboolisOverUI=false;publicboolIsOverUI=>isOverUI;# if UNITY_STANDALONE || UNITY_EDITORprivatefloatmoveDelta=2f;privateboolisMousePressedLastFrame;privateboolisMouseMovedSincePressed;privateVector2lastMousePosition;privateButtonControlmouseButtonAsFinger;privateboolisMosuePressUI;#endifprivatevoidOnEnable(){EnhancedTouchSupport.Enable();Touch.onFingerMove+=_OnFingerMove;Touch.onFingerUp+=_OnFingerUp;# if UNITY_STANDALONE || UNITY_EDITORmouseButtonAsFinger=Mouse.current.leftButton;#endif}privatevoidOnDisable(){Touch.onFingerMove-=_OnFingerMove;Touch.onFingerUp-=_OnFingerUp;EnhancedTouchSupport.Disable();}privatevoidUpdate(){isOverUI=IsPointerOverUI();//CheckIsBackKeyDown();# if UNITY_STANDALONE || UNITY_EDITORif(IsPointerOverUI()&&mouseButtonAsFinger.isPressed&&!isMousePressedLastFrame){isMosuePressUI=true;}if(!IsPointerOverUI()&&!mouseButtonAsFinger.isPressed){isMosuePressUI=false;}varcurrentMouse=Mouse.current;if(isMousePressedLastFrame&&mouseButtonAsFinger.isPressed){vardelta=currentMouse.position.ReadValue()-lastMousePosition;isMouseMovedSincePressed|=delta.sqrMagnitude>float.Epsilon;if(IsPointerOverUI()||isMosuePressUI){OnFingerMoveUI?.Invoke(delta);}else{OnFingerMove?.Invoke(delta);}}if(!IsPointerOverUI()&&!isMosuePressUI){if(isMousePressedLastFrame&&!mouseButtonAsFinger.isPressed){if(!isMouseMovedSincePressed){OnClick?.Invoke(currentMouse.position.ReadValue());}OnFingerUp?.Invoke(currentMouse.position.ReadValue());isMouseMovedSincePressed=false;}}if(IsPointerOverUI()){if(isMousePressedLastFrame&&!mouseButtonAsFinger.isPressed){OnFingerUpUI?.Invoke(currentMouse.position.ReadValue());isMouseMovedSincePressed=false;}}// cache mouse state for next frameisMousePressedLastFrame=mouseButtonAsFinger.isPressed;if(isMousePressedLastFrame){lastMousePosition=currentMouse.position.ReadValue();}if(Mouse.current.scroll.ReadValue().y!=0){OnFingersMove?.Invoke(Mouse.current.scroll.ReadValue().y);}if(Keyboard.current.aKey.isPressed){OnFingerMove?.Invoke(newVector2(moveDelta,0));}if(Keyboard.current.dKey.isPressed){OnFingerMove?.Invoke(newVector2(-moveDelta,0));}if(Keyboard.current.wKey.isPressed){OnFingerMove?.Invoke(newVector2(0,-moveDelta));}if(Keyboard.current.sKey.isPressed)