Exemple #1
0
    protected virtual void SetWidgetHover()
    {
        OnHoverEvent handler = OnWidgetHover;

        if (handler != null)
        {
            handler(this);
        }
    }
Exemple #2
0
        /// <summary>
        /// This method is in charge of checking collisions, your mouse position in the gui, and fires events based
        /// on user actions.
        /// </summary>
        private void CheckBounds()
        {
            bool inBounds = Util.InRect(Scene.MouseX, Scene.MouseY, Scene.CameraX + PosX, Scene.CameraY + PosY, Width, Height);

            if (inBounds && CheckMouseClick())
            {
                Click();
            }
            else if (!inBounds && Input.Instance.MouseButtonPressed(MouseButton.Left))
            {
                if (!hasOnInactiveFired)
                {
                    OnInactiveEvent.Invoke(this, null);
                }
                isActive = false;
            }
            else if (inBounds && !hasClicked)
            {
                if (!hasOnHoverFired)
                {
                    OnHoverEvent.Invoke(this, null);
                }
            }
            else if (!inBounds && !hasClicked)
            {
                if (isActive)
                {
                    if (!hasOnActiveFired)
                    {
                        OnActiveEvent.Invoke(this, null);
                    }
                }
                else
                {
                    if (!hasOnInactiveFired)
                    {
                        OnInactiveEvent.Invoke(this, null);
                    }
                }
            }
        }
Exemple #3
0
        public override void Tick()
        {
            Ray inputRay = m_camera.ScreenPointToRay(Input.mousePosition);

            float penetration;

            if (m_inputPlane.Raycast(inputRay, out penetration))
            {
                //get world input position
                Vector3 inputPosition = m_inputPlane.ClosestPointOnPlane(inputRay.GetPoint(penetration));

#if UNITY_EDITOR
                Debug.DrawLine(inputRay.origin, inputPosition);
#endif
                //convert to 'board' space
                inputPosition -= m_cornerTransform.position;

                Vector2Int boardInputPosition = new Vector2Int(Mathf.RoundToInt(inputPosition.x / Constants.GridSize), Mathf.RoundToInt(inputPosition.y / Constants.GridSize));

                OnHoverEvent.Invoke(boardInputPosition);

                if (m_firstPieceClicked)
                {
                    OnHoverEvent.Invoke(m_clickOriginPosition);
                }

                //handle mouse drag
                if (Input.GetMouseButtonDown(0))
                {
                    m_dragOriginPosition = boardInputPosition;
                    OnOriginSelectedEvent.Invoke(m_dragOriginPosition);
                }
                else if (Input.GetMouseButton(0))
                {
                    Vector2Int delta = boardInputPosition - m_dragOriginPosition;
                    if (Mathf.Abs(delta.x) + Mathf.Abs(delta.y) == 1)
                    {
                        //end input state
                        OnStateEnd.Invoke(this);

                        OnSwapEvent.Invoke(new PieceMoveData(-1, m_dragOriginPosition, boardInputPosition));
                        return;
                    }
                }

                //handle click
                if (Input.GetMouseButtonUp(0))
                {
                    if (m_firstPieceClicked)
                    {
                        Vector2Int delta = boardInputPosition - m_clickOriginPosition;
                        if (Mathf.Abs(delta.x) + Mathf.Abs(delta.y) == 1)
                        {
                            OnSwapEvent.Invoke(new PieceMoveData(-1, m_clickOriginPosition, boardInputPosition));

                            //end input state
                            OnStateEnd.Invoke(this);
                            return;
                        }
                    }

                    m_firstPieceClicked   = true;
                    m_clickOriginPosition = boardInputPosition;
                }
            }
        }