private void _AddPoint(CatmullRomUniform spline)
        {
            MUndo.RecordObject(target, "add point");
            MUndo.RecordObject(this, "add point");

            if (m_curPtIdx < 0)
            {
                m_curPtIdx = spline.PointCount - 1;
            }

            if (m_curPtIdx != spline.PointCount - 1)
            {
                float   v      = (float)m_curPtIdx + 0.5f;
                Vector3 newPos = spline.Interp(v / (spline.PointCount - 1));
                spline.InsertPointAfter(m_curPtIdx, newPos);
            }
            else
            {
                float   unitLen = spline.CurveLength / (spline.PointCount - 1);
                Vector3 dir     = spline.Tangent(1f);
                spline.InsertPointAfter(m_curPtIdx, spline[m_curPtIdx] + dir * unitLen);
            }

            m_curPtIdx++;
        }