Esempio n. 1
0
        public void CustomUpdate()
        {
            var mousePosition = UnityEngine.Input.mousePosition;

            if (mousePosition.x < 0 ||//проверка на выход за пределы экрана (при сворачивании и разворачивании игры может придти Vector3.positiveInfinity)
                mousePosition.y < 0 ||
                mousePosition.x > Screen.width ||
                mousePosition.y > Screen.height ||
                IsOverGui())
            {
                _isMouseDown           = false;
                _isOneClick            = false;
                _previousMousePosition = Vector2.zero;
                return;
            }

            if (UnityEngine.Input.GetKeyDown(KeyCode.Mouse0))
            {
                _isMouseDown        = true;
                _buttonDownPosition = mousePosition;
                OnMouseDown(CoordinateConverter.CameraPositionToFieldCoords(mousePosition));
                if (!_isOneClick)
                {
                    _isOneClick      = true;
                    _doubleClickTime = Time.time;
                    IsOverGui();
                }
                else if (_dubleClickRect.Contains(mousePosition))
                {
                    _isOneClick         = false;
                    _buttonDownPosition = mousePosition;
                    return;
                }
                else
                {
                    _isOneClick = false;
                }

                _buttonDownPosition = mousePosition;
                _dubleClickRect     =
                    new Rect(
                        new Vector2(mousePosition.x - _dubleClickRectSize.x / 2,
                                    mousePosition.y - _dubleClickRectSize.y / 2), _dubleClickRectSize);
            }

            if (_isOneClick && Time.time - _doubleClickTime > Delay)
            {
                _isOneClick = false;
            }

            if (!_isMouseDown)
            {
                return;
            }

            if (UnityEngine.Input.GetKeyUp(KeyCode.Mouse0))
            {
                _isMouseDown = false;
                //if (IsCorrectSwipe())
                //{
                OnMouseUp(CoordinateConverter.CameraPositionToFieldCoords(mousePosition));
                // }
                _buttonDownPosition = null;
                return;
            }
            if (_buttonDownPosition != null)
            {
                if ((Mathf.Abs(_previousMousePosition.x - UnityEngine.Input.mousePosition.x) > DeltaRegistration ||
                     Mathf.Abs(_previousMousePosition.y - UnityEngine.Input.mousePosition.y) > DeltaRegistration) &&
                    (Mathf.Abs(_buttonDownPosition.Value.x - UnityEngine.Input.mousePosition.x) > DeltaRegistration ||
                     Mathf.Abs(_buttonDownPosition.Value.y - UnityEngine.Input.mousePosition.y) > DeltaRegistration))
                {
                    _isOneClick = false;
                    OnMouseMove(CoordinateConverter.CameraPositionToFieldCoords(_buttonDownPosition.Value) - CoordinateConverter.CameraPositionToFieldCoords(UnityEngine.Input.mousePosition));
                }
            }
        }