/// <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); } } }
/// <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); }
// 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(); } }