public override void OnInspectorGUI() { //base.OnInspectorGUI(); if (!SelectSpline.IsInit) { SelectSpline.Init(); } EditorGUI.BeginChangeCheck(); bool IsLoop = GUILayout.Toggle(SelectSpline.IsClosedLoop(), "是否循环"); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(SelectSpline, "样线循环"); EditorUtility.SetDirty(SelectSpline); SelectSpline.SetClosedLoop(IsLoop, true); } EditorGUI.BeginChangeCheck(); SelectSpline.DrawDebug = GUILayout.Toggle(SelectSpline.DrawDebug, "是否绘制样线"); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(SelectSpline, "绘制样线"); EditorUtility.SetDirty(SelectSpline); Repaint(); } if (m_selectedIndex != -1) { DrawSelectedPointInspector(); } if (GUILayout.Button("尾部加点")) { Undo.RecordObject(SelectSpline, "尾部加点"); int lastIndex = SelectSpline.GetSplineCurvesPosition().Points.Count - 1; FSplinePoint newPoint = new FSplinePoint( SelectSpline.GetSplineCurvesPosition().Points[lastIndex].InVal + 1, SelectSpline.GetSplineCurvesPosition().Points[lastIndex].OutVal + new Vector3(10, 0), SelectSpline.GetSplineCurvesPosition().Points[lastIndex].LeaveTangent ); SelectSpline.AddPoint(newPoint); EditorUtility.SetDirty(SelectSpline); } }
/// <summary> /// 添加样线关键点 /// </summary> public void AddPoint(FSplinePoint InSplinePoint, bool bUpdateSpline = true) { int Index = UpperBound(SplineCurves.Position.Points, InSplinePoint.InputKey); SplineCurves.Position.Points.Insert(Index, new FInterpCurveVectorPoint ( InSplinePoint.InputKey, InSplinePoint.Position, InSplinePoint.ArriveTangent, InSplinePoint.LeaveTangent, InSplinePoint.Type )); SplineCurves.Rotation.Points.Insert(Index, new FInterpCurveQuaternionPoint ( InSplinePoint.InputKey, InSplinePoint.Rotation, Quaternion.identity, Quaternion.identity, ESplinePointType.Curve )); SplineCurves.Scale.Points.Insert(Index, new FInterpCurveVectorPoint ( InSplinePoint.InputKey, InSplinePoint.Scale, Vector3.zero, Vector3.zero, ESplinePointType.Curve )); if (bLoopPositionOverride && LoopPosition <= SplineCurves.Position.Points.Last().InVal) { bLoopPositionOverride = false; } if (bUpdateSpline) { UpdateSpline(); } }