private void Start() { SplineRuntimeEditor.Created += OnRuntimeEditorCreated; SplineRuntimeEditor.Destroyed += OnRuntimeEditorDestroyed; CreateRuntimeComponents(); if (m_spline == null) { m_spline = GetComponentInParent <SplineBase>(); if (m_spline == null) { Debug.LogError("Is not a child of gameobject with Spline or MeshDeformer component"); return; } m_spline.ControlPointModeChanged -= OnControlPointModeChanged; m_spline.ControlPointModeChanged += OnControlPointModeChanged; m_spline.ControlPointPositionChanged -= OnControlPointPositionChanged; m_spline.ControlPointPositionChanged += OnControlPointPositionChanged; } m_localPosition = m_spline.GetControlPointLocal(m_index); transform.localPosition = m_localPosition; UpdateMaterial(); }
protected virtual void SceneGUIOverride() { if (m_splineBase == null) { m_splineBase = GetTarget(); } if (m_splineBase == null) { return; } m_handleTransform = m_splineBase.transform; m_handleRotation = Tools.pivotRotation == PivotRotation.Local ? m_handleTransform.rotation : Quaternion.identity; Vector3 p0 = m_handleTransform.TransformPoint(m_splineBase.GetControlPointLocal(0)); ShowPoint(0, p0); for (int i = 1; i < m_splineBase.ControlPointCount; i += 3) { Vector3 p1 = m_handleTransform.TransformPoint(m_splineBase.GetControlPointLocal(i)); Vector3 p2 = m_handleTransform.TransformPoint(m_splineBase.GetControlPointLocal(i + 1)); Vector3 p3 = m_handleTransform.TransformPoint(m_splineBase.GetControlPointLocal(i + 2)); Handles.color = Color.gray; Handles.DrawLine(p0, p1); Handles.DrawLine(p2, p3); { Handles.DrawBezier(p0, p3, p1, p2, Color.green, null, 1.8f); } ShowPoint(i, p1); ShowPoint(i + 1, p2); ShowPoint(i + 2, p3); p0 = p3; } { ShowTwistAngles(); } }