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();
            }
        }