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);
    }
示例#2
0
    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);
        }
    }
示例#3
0
    //
    // Public Methods
    //

    public bool IsPosWithinMapViewArea(Vector3 position)
    {
        return(mapViewArea.Contains(position));
    }