Beispiel #1
0
        private void HandleMouse()
        {
            if (Input.GetMouseButtonDown(0))
            {
                isMoving = !UIExtensions.IsClickingOverUI(Input.mousePosition, uiMasks);
                if (isMoving)
                {
                    lastObject = FindNearestObject(Input.mousePosition);
                    onMouseDown?.Invoke(Input.mousePosition, lastObject);
                }
            }

            if (Input.GetMouseButton(0) && isMoving)
            {
                onMouseDrag?.Invoke(Input.mousePosition, lastObject);
            }

            if (Input.GetMouseButtonUp(0))
            {
                isMoving = false;
                if (lastObject != null)
                {
                    onMouseUp?.Invoke(Input.mousePosition, lastObject);
                }
            }
        }
Beispiel #2
0
        private void HandleTouch()
        {
            if (Input.touchCount == 1)
            {
                UnityEngine.Touch touch = Input.GetTouch(0);
                switch (touch.phase)
                {
                case TouchPhase.Began:
                    isMoving = !UIExtensions.IsClickingOverUI(touch.position, uiMasks);
                    if (isMoving)
                    {
                        lastObject = FindNearestObject(touch.position);
                        onMouseDown?.Invoke(touch.position, lastObject);
                    }

                    break;

                case TouchPhase.Moved:
                    if (!isMoving)
                    {
                        return;
                    }

                    onMouseDrag?.Invoke(touch.position, lastObject);
                    break;

                case TouchPhase.Ended:
                    isMoving = false;
                    if (lastObject != null)
                    {
                        onMouseUp?.Invoke(touch.position, lastObject);
                    }

                    break;
                }
            }
        }