Example #1
0
    private void MouseDrag(int buttonId, Vector3 mousePosition, float axisX, float axisY)
    {
        if (!CanDrag())
        {
            return;
        }

        OnMouseDrag?.Invoke(buttonId, mousePosition, axisX, axisY);
    }
Example #2
0
 private void MouseDrag(int buttonId, Vector3 mousePosition, float axisX, float axisY)
 {
     if (!canInputBeMade)
     {
         return;
     }
     if (!BuilderInWorldUtils.IsPointerOverUIElement())
     {
         OnMouseDrag?.Invoke(buttonId, mousePosition, axisX, axisY);
     }
 }
Example #3
0
        private bool HasMouseButtonInput(int button)
        {
            if (Input.GetMouseButtonDown(button))
            {
                OnMouseDown?.Invoke(button, Input.mousePosition);
                return(true);
            }
            else if (Input.GetMouseButton(button))
            {
                OnMouseDrag?.Invoke(button, Input.mousePosition, Input.GetAxis(MouseXAxis), Input.GetAxis(MouseYAxis));
                return(true);
            }
            else if (Input.GetMouseButtonUp(button))
            {
                OnMouseUp?.Invoke(button, Input.mousePosition);
                return(true);
            }

            return(false);
        }
    private void UpdateButton(int button, int infoIndex)
    {
        bool wasPressed = lastMouseDownState[infoIndex];
        bool isPressed  = Input.GetMouseButton(button);

        if (isPressed != wasPressed)
        {
            //Debug.Log("MOUSE " + wasPressed + " -> " + isPressed);
            if (isPressed)
            {
                // click started
                lastMouseDownPos[infoIndex]  = Input.mousePosition;
                lastMouseDownTime[infoIndex] = Time.realtimeSinceStartup;

                OnMousePress?.Invoke(button, Input.mousePosition);
            }
            else
            {
                // click ended
                OnMouseRelease?.Invoke(button, Input.mousePosition);

                Vector3 lastPosition = lastMouseDownPos[infoIndex];
                float   dragDist     = (Input.mousePosition - lastPosition).sqrMagnitude;

                if (lastMouseWasDragging[infoIndex] || dragDist >= minDistDragScreenSqr)
                {
                    // drag
                    //Debug.Log("MOUSE DRAG from " + lastPosition + " to " + Input.mousePosition + " dist " + String.Format("{0,2}", dragDist));
                    OnMouseDrag?.Invoke(button, lastMouseDownPos[infoIndex], Input.mousePosition, Time.realtimeSinceStartup - lastMouseDownTime[infoIndex], true);
                }
                else
                {
                    OnMouseClick?.Invoke(button, lastMouseDownPos[infoIndex], Input.mousePosition);
                }
            }
            lastMouseDownState[infoIndex] = isPressed;
        }

        if (!isPressed)
        {
            lastMouseWasDragging[infoIndex] = false;
        }

        if (isPressed && wasPressed)
        {
            // potential dragging event

            bool isDrag = false;

            if (lastMouseWasDragging[infoIndex])
            {
                isDrag = true;
            }
            else
            {
                Vector3 startPosition = lastMouseDownPos[infoIndex];

                if ((startPosition - Input.mousePosition).sqrMagnitude >= minDistDragScreenSqr)
                {
                    isDrag = true;
                }
            }

            if (isDrag)
            {
                lastMouseWasDragging[infoIndex] = true;

                OnMouseDrag?.Invoke(button, lastMouseDownPos[infoIndex], Input.mousePosition, Time.realtimeSinceStartup - lastMouseDownTime[infoIndex], false);
            }
        }
    }