public PickResult(PickResult other) { Spline = other.Spline; ScreenDistance = other.ScreenDistance; WorldPosition = other.WorldPosition; Index = other.Index; }
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); }
private void OnEditorSelectionChanged(UnityEngine.Object[] unselectedObjects) { m_isControlPointSelected = m_editor.Selection.activeGameObject == gameObject; if (!m_isControlPointSelected) { m_pickResult = null; } }
protected virtual void OnEditorSelectionChanged(UnityEngine.Object[] unselectedObjects) { m_isPointSelected = m_editor.Selection.activeGameObject == gameObject; if (!m_isPointSelected) { m_pickResult = null; } }
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; } }
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; }