public bool IsRectWithinMapViewArea(Vector3 position) { if (rectTransform == null) { return(false); } Vector3 topLeft = rectTransform.offsetMin; Vector3 bottomLeft = new Vector3(rectTransform.offsetMin.x, rectTransform.offsetMax.y, position.z); Vector3 topRight = new Vector3(rectTransform.offsetMax.x, rectTransform.offsetMin.y, position.z); Vector3 bottomRight = rectTransform.offsetMax; bool isWithinMapViewArea = mapViewArea.Contains(topLeft) && mapViewArea.Contains(bottomLeft) && mapViewArea.Contains(topRight) && mapViewArea.Contains(bottomRight); return(isWithinMapViewArea); }
public void UpdateControlPtsAndInspectionDel() { if (lineInfos == null) { return; } foreach (var lineInfo in lineInfos) { if (lineInfo.line == null) { continue; } for (int i = 0; i < 2; ++i) { var controlPt = lineInfo.controlPts[i]; controlPt.UpdatePositionAndLinePtsFromCoord(); // Update position of control pts of line taking into account of screen size Vector3 controlPtLocalPos = controlPt.transform.localPosition; Vector3 pos = lineInfo.mapViewAreaChanged ? ( lineInfo.scaleFactor.Equals(1.0f) ? controlPtLocalPos * canvas.scaleFactor : controlPtLocalPos / lineInfo.scaleFactor ) : controlPtLocalPos; bool showControlPt = mapViewArea.Contains(pos) && controlPt.gameObject.activeSelf; controlPt.gameObject.SetActive(showControlPt); } // Compute new inspection delete pos and update Vector3 startPt = lineInfo.controlPtsTB[StartPtIndex].transform.localPosition; Vector3 endPt = lineInfo.controlPtsTB[EndPtIndex].transform.localPosition; Vector3 midPt = (startPt + endPt) * 0.5f; lineInfo.lineInspectionDelete.UpdatePosition(midPt); // Determine whether inspection delete should be shown bool showInspectionDel = lineInfo.lineInspectionDelete.IsRectWithinMapViewArea(midPt) && removeLineInspectionToggle.isOn; lineInfo.lineInspectionDelete.ShowInspectionDelete(showInspectionDel); } }
// // Public Methods // public bool IsPosWithinMapViewArea(Vector3 position) { return(mapViewArea.Contains(position)); }