protected override void CreateSplinePoint(Vector3 position, Vector3 normal)
        {
            RecordUndo("Create Point");
            GUIUtility.hotControl = GUIUtility.GetControlID(FocusType.Passive);
            List <int>     indices = new List <int>();
            List <Node>    nodes   = new List <Node>();
            SplineComputer spline  = dsEditor.spline;

            AddPoint();
            bool closeSpline = false;

            if (!isClosed && points.Length >= 3)
            {
                Vector2 first = HandleUtility.WorldToGUIPoint(points[0].position);
                Vector2 last  = HandleUtility.WorldToGUIPoint(points[points.Length - 1].position);
                if (Vector2.Distance(first, last) <= 20f)
                {
                    if (EditorUtility.DisplayDialog("Close spline?", "Do you want to make the spline path closed ?", "Yes", "No"))
                    {
                        closeSpline = true;
                        SceneView.currentDrawingSceneView.Focus();
                        SceneView.RepaintAll();
                    }
                }
            }

            if (appendMode == AppendMode.End)
            {
                for (int i = 0; i < indices.Count; i++)
                {
                    nodes[i].AddConnection(spline, indices[i] + 1);
                }
            }

            if (createNode)
            {
                if (appendMode == 0)
                {
                    CreateNodeForPoint(0);
                }
                else
                {
                    CreateNodeForPoint(points.Length - 1);
                }
            }
            if (closeSpline)
            {
                editor.isClosed = true;
            }
            dsEditor.UpdateSpline();
            if (appendMode == AppendMode.Beginning)
            {
                spline.ShiftNodes(0, spline.pointCount - 1, 1);
            }
        }