AddControlPoint() public method

public AddControlPoint ( Vector3 point ) : void
point Vector3
return void
    /// <summary>
    /// Renders content to the inspector panel
    /// </summary>
    public override void OnInspectorGUI()
    {
        // Pulls variables from runtime so we have the latest values.
        mSplineSO.Update();

        // Allow the loop
        EditorGUI.BeginChangeCheck();
        bool lNewLoop = EditorGUILayout.Toggle(new GUIContent("Loop", ""), mSpline.Loop);

        if (EditorGUI.EndChangeCheck() && lNewLoop != mSpline.Loop)
        {
            mIsDirty = true;
            Undo.RecordObject(mSpline, "Spine Loop");

            mSpline.Loop = lNewLoop;
        }

        // Allow the segments to change
        EditorGUI.BeginChangeCheck();
        int lNewSegments = EditorGUILayout.IntField(new GUIContent("Segments", ""), mSpline.Segments);

        if (EditorGUI.EndChangeCheck() && lNewSegments != mSpline.Segments)
        {
            mIsDirty = true;
            Undo.RecordObject(mSpline, "Spine Segments");

            mSpline.Segments = lNewSegments;
        }

        // Draw all the curve points
        for (int i = 0; i < mSpline.ControlPointCount; i++)
        {
            EditorGUILayout.BeginHorizontal();

            EditorGUI.BeginChangeCheck();

            Vector3 lOldPoint = mSpline.GetControlPoint(i);
            Vector3 lNewPoint = EditorGUILayout.Vector3Field(new GUIContent("Control Point " + i.ToString(), ""), lOldPoint);
            if (EditorGUI.EndChangeCheck() && lNewPoint != lOldPoint)
            {
                mIsDirty = true;
                Undo.RecordObject(mSpline, "Spline Point Move");

                mSpline.SetControlPoint(i, lNewPoint);
            }

            GUILayout.Space(5);

            int lOldConstraint = mSpline.GetControlPointConstraint(i);
            int lNewConstraint = EditorGUILayout.IntField(new GUIContent("", ""), lOldConstraint, GUILayout.Width(20));
            if (lOldConstraint != lNewConstraint)
            {
                mIsDirty = true;
                Undo.RecordObject(mSpline, "Spline Point Constraint");

                mSpline.SetControlPointConstraint(i, lNewConstraint);
            }

            EditorGUILayout.EndHorizontal();
        }

        // Create a button for adding a new point
        if (GUILayout.Button("Add Point"))
        {
            mIsDirty = true;
            mSpline.AddControlPoint();

            mSelectedControlPointIndex = mSpline.ControlPointCount - 1;
        }

        // Create a button for adding a new point
        if (GUILayout.Button("Insert Point"))
        {
            mIsDirty = true;
            mSpline.InsertControlPoint(mSelectedControlPointIndex);
        }

        // Create a button for deleting a point
        if (GUILayout.Button("Delete Point"))
        {
            mIsDirty = true;
            mSpline.DeleteControlPoint(mSelectedControlPointIndex);

            mSelectedControlPointIndex = -1;
        }

        // If there is a change... update.
        if (mIsDirty)
        {
            // Flag the object as needing to be saved
            EditorUtility.SetDirty(mSpline);

#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2
            EditorApplication.MarkSceneDirty();
#else
            if (!EditorApplication.isPlaying)
            {
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }
#endif

            // Pushes the values back to the runtime so it has the changes
            mSplineSO.ApplyModifiedProperties();

            // Clear out the dirty flag
            mIsDirty = false;
        }
    }