コード例 #1
0
 public PickResult(PickResult other)
 {
     Spline         = other.Spline;
     ScreenDistance = other.ScreenDistance;
     WorldPosition  = other.WorldPosition;
     Index          = other.Index;
 }
コード例 #2
0
        public PickResult PickControlPoint(Camera camera, Vector3 mousePosition, float maxDistance)
        {
            BaseSpline[] splines = FindObjectsOfType <BaseSpline>();

            m_nearestControlPoints.Clear();
            maxDistance = maxDistance * maxDistance;

            foreach (BaseSpline spline in splines)
            {
                if (!spline.IsSelectable)
                {
                    continue;
                }
                GetNearestVertices(camera, spline, mousePosition, m_nearestControlPoints, maxDistance, 1.0f);
            }

            if (m_nearestControlPoints.Count == 0)
            {
                return(null);
            }

            PickResult result = m_nearestControlPoints[0];

            for (int i = 1; i < m_nearestControlPoints.Count; i++)
            {
                if (m_nearestControlPoints[i].ScreenDistance < result.ScreenDistance)
                {
                    result = m_nearestControlPoints[i];
                }
            }

            m_nearestControlPoints.Clear();
            return(result);
        }
コード例 #3
0
 private void OnEditorSelectionChanged(UnityEngine.Object[] unselectedObjects)
 {
     m_isControlPointSelected = m_editor.Selection.activeGameObject == gameObject;
     if (!m_isControlPointSelected)
     {
         m_pickResult = null;
     }
 }
コード例 #4
0
 protected virtual void OnEditorSelectionChanged(UnityEngine.Object[] unselectedObjects)
 {
     m_isPointSelected = m_editor.Selection.activeGameObject == gameObject;
     if (!m_isPointSelected)
     {
         m_pickResult = null;
     }
 }
コード例 #5
0
 public void Pick(Camera camera, Vector2 position)
 {
     m_pickResult = PickControlPoint(camera, position, 20);
     if (m_pickResult != null)
     {
         BaseSpline spline = m_pickResult.GetSpline();
         transform.position = spline.GetControlPoint(m_pickResult.Index);
         m_editor.Selection.activeGameObject = gameObject;
     }
 }
コード例 #6
0
        public virtual void ApplySelection(PickResult pickResult, bool canClearSelection)
        {
            PickResult oldPickResult = m_pickResult;

            m_pickResult = pickResult;
            if (m_pickResult != null)
            {
                BaseSpline spline = m_pickResult.GetSpline();
                transform.position = GetPoint(spline, m_pickResult.Index);
                m_prevPosition     = transform.position;
                m_editor.Selection.activeGameObject = gameObject;
            }
            else if (oldPickResult != null && canClearSelection)
            {
                m_editor.Selection.activeGameObject = null;
            }

            Selection = m_pickResult;
        }