From dae05e05499c1459b5716128b9513c9d21b0f1d4 Mon Sep 17 00:00:00 2001 From: Ruan Lucas <79365912+RuanLucasGD@users.noreply.github.com> Date: Wed, 31 May 2023 20:11:05 -0400 Subject: [PATCH] improv: copy old curve point data to new curve point --- Source/Editor/SceneGraph/Actors/SplineNode.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Source/Editor/SceneGraph/Actors/SplineNode.cs b/Source/Editor/SceneGraph/Actors/SplineNode.cs index 5720ee150..ee03caa94 100644 --- a/Source/Editor/SceneGraph/Actors/SplineNode.cs +++ b/Source/Editor/SceneGraph/Actors/SplineNode.cs @@ -146,7 +146,18 @@ namespace FlaxEditor.SceneGraph.Actors Time = newTime, Value = actor.GetSplineLocalTransform(Index), }; + + var oldkeyframe = actor.GetSplineKeyframe(Index); + var newKeyframe = new BezierCurve.Keyframe(); + + // copy old curve point data to new curve point + newKeyframe.Value = oldkeyframe.Value; + newKeyframe.TangentIn = oldkeyframe.TangentIn; + newKeyframe.TangentOut = oldkeyframe.TangentOut; + actor.InsertSplineLocalPoint(newIndex, newTime, action.Value); + actor.SetSplineKeyframe(newIndex, newKeyframe); + undoAction = action; var splineNode = (SplineNode)SceneGraphFactory.FindNode(action.SplineId); splineNode.OnUpdate(); @@ -317,6 +328,20 @@ namespace FlaxEditor.SceneGraph.Actors var spline = (Spline)Actor; spline.AddSplineLocalPoint(Vector3.Zero, false); spline.AddSplineLocalPoint(new Vector3(0, 0, 100.0f)); + + spline.SetSplineKeyframe(0, new BezierCurve.Keyframe() + { + Value = new Transform(Vector3.Zero, Quaternion.Identity, Vector3.One), + TangentIn = new Transform(Vector3.Backward * 100, Quaternion.Identity, Vector3.One), + TangentOut = new Transform(Vector3.Forward * 100, Quaternion.Identity, Vector3.One), + }); + + spline.SetSplineKeyframe(1, new BezierCurve.Keyframe() + { + Value = new Transform(Vector3.Forward * 100, Quaternion.Identity, Vector3.One), + TangentIn = new Transform(Vector3.Backward * 100, Quaternion.Identity, Vector3.One), + TangentOut = new Transform(Vector3.Forward * 100, Quaternion.Identity, Vector3.One), + }); } ///