Esempio n. 1
0
    /// <summary>
    /// Update is called every frame, if the MonoBehaviour is enabled.
    /// </summary>
    void Update()
    {
        if (Interactable)
        {
            Vector2 local;
            Canvas  cvs = transform.root.GetComponent <Canvas>();
            RectTransformUtility.ScreenPointToLocalPointInRectangle((RectTransform)transform, Input.mousePosition, cvs.worldCamera, out local);
            var poly = HitTestUtil.HitTest(m_Polygons.Values.ToArray(), local);
            if (poly != null && m_CurrentPolygon == null)
            {
                OnMouseOverPolygon.Invoke(Array.Find(m_Polygons.ToArray(), p => p.Value == poly).Key, poly);
                m_CurrentPolygon = poly;
            }
            else if (poly == null && m_CurrentPolygon != null)
            {
                OnMouseOutPolygon.Invoke(Array.Find(m_Polygons.ToArray(), p => p.Value == poly).Key, m_CurrentPolygon);
                m_CurrentPolygon = null;
            }

            if (m_CurrentPolygon != null && Input.GetMouseButtonDown(0))
            {
                // Mouse left down
                ChartItemVO data = Array.Find(m_Polygons.ToArray(), p => p.Value == poly).Key;
                OnChartItemClicked.Invoke(data.data as JSONNode);
            }
        }
    }
Esempio n. 2
0
        /// <inheritdoc/>
        protected override Visual HitTestCore(Point2D point)
        {
            if (!HitTestUtil.IsPotentialHit(this, point))
            {
                return(null);
            }

            var childMatch = HitTestChildren(point);

            if (childMatch != null)
            {
                return(childMatch);
            }

            return(Bounds.Contains(point) ? this : null);
        }
Esempio n. 3
0
    // Update is called once per frame
    void Update()
    {
        if (_state == 0)
        {
            Vector2[] polygon   = this.GetPolygonPos(_lineRender);
            Vector2   targetPos = this.GetMousePos2D();
            if (HitTestUtil.HitTest(targetPos, polygon))
            {
                _lineRender.VertexColor32 = GUIColor32.red;
            }
            else
            {
                _lineRender.VertexColor32 = GUIColor32.green;
            }
            _lineRender.Render();
        }
        else
        {
            _movingLineRender.PointList = this.GetMovingPointList();

            Vector2[] polygon       = this.GetPolygonPos(_lineRender);
            Vector2[] movingPolygon = this.GetPolygonPos(_movingLineRender);
            if (HitTestUtil.HitTest(polygon, movingPolygon))
            {
                _lineRender.VertexColor32       = GUIColor32.red;
                _movingLineRender.VertexColor32 = GUIColor32.red;
            }
            else
            {
                _lineRender.VertexColor32       = GUIColor32.green;
                _movingLineRender.VertexColor32 = GUIColor32.green;
            }
            _lineRender.Render();
            _movingLineRender.Render();
        }
    }