diff --git a/Source/Editor/CustomEditors/Dedicated/SplineEditor.cs b/Source/Editor/CustomEditors/Dedicated/SplineEditor.cs
index ba0eff06f..9b5d420b3 100644
--- a/Source/Editor/CustomEditors/Dedicated/SplineEditor.cs
+++ b/Source/Editor/CustomEditors/Dedicated/SplineEditor.cs
@@ -187,25 +187,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
///
public override void OnSetMode(Spline spline, int index)
{
- var keyframe = spline.GetSplineKeyframe(index);
-
- // auto smooth tangent if's linear
- if (keyframe.TangentIn.Translation.Length == 0)
- {
- var isLastKeyframe = index == spline.SplinePointsCount - 1;
-
- if (!isLastKeyframe)
- {
- var nexKeyframe = spline.GetSplineKeyframe(index + 1);
- var directionToNextKeyframe = keyframe.Value.WorldToLocalVector(keyframe.Value.Translation - nexKeyframe.Value.Translation);
- directionToNextKeyframe = directionToNextKeyframe.Normalized * 100f;
- keyframe.TangentIn.Translation = directionToNextKeyframe;
- }
- }
-
- keyframe.TangentOut.Translation = Vector3.Zero;
-
- spline.SetSplineKeyframe(index, keyframe);
+ SetSelectTangentIn(spline, index);
SetSelectTangentIn(spline, index);
}
@@ -231,25 +213,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
///
public override void OnSetMode(Spline spline, int index)
{
- var keyframe = spline.GetSplineKeyframe(index);
-
- // auto smooth tangent if's linear
- if (keyframe.TangentOut.Translation.Length == 0)
- {
- var isFirstKeyframe = index == 0;
-
- if (!isFirstKeyframe)
- {
- var previousKeyframe = spline.GetSplineKeyframe(index - 1);
- var directionToPreviousKeyframe = keyframe.Value.WorldToLocalVector(keyframe.Value.Translation - previousKeyframe.Value.Translation);
- directionToPreviousKeyframe = directionToPreviousKeyframe.Normalized * 100f;
- keyframe.TangentOut.Translation = directionToPreviousKeyframe;
- }
- }
-
- keyframe.TangentIn.Translation = Vector3.Zero;
-
- spline.SetSplineKeyframe(index, keyframe);
+ SetTangentSmoothOut(spline, index);
SetSelectTangentOut(spline, index);
}
@@ -630,6 +594,51 @@ namespace FlaxEditor.CustomEditors.Dedicated
return keyframe.TangentOut.Translation.Length > 0 && keyframe.TangentIn.Translation.Length == 0;
}
+ private static void SetTangentSmoothIn(Spline spline, int index)
+ {
+ var keyframe = spline.GetSplineKeyframe(index);
+
+ // auto smooth tangent if's linear
+ if (keyframe.TangentIn.Translation.Length == 0)
+ {
+ var isLastKeyframe = index == spline.SplinePointsCount - 1;
+
+ if (!isLastKeyframe)
+ {
+ var nexKeyframe = spline.GetSplineKeyframe(index + 1);
+ var directionToNextKeyframe = keyframe.Value.WorldToLocalVector(keyframe.Value.Translation - nexKeyframe.Value.Translation);
+ directionToNextKeyframe = directionToNextKeyframe.Normalized * 100f;
+ keyframe.TangentIn.Translation = directionToNextKeyframe;
+ }
+ }
+
+ keyframe.TangentOut.Translation = Vector3.Zero;
+ spline.SetSplineKeyframe(index, keyframe);
+ }
+
+ private static void SetTangentSmoothOut(Spline spline, int index)
+ {
+ var keyframe = spline.GetSplineKeyframe(index);
+
+ // auto smooth tangent if's linear
+ if (keyframe.TangentOut.Translation.Length == 0)
+ {
+ var isFirstKeyframe = index == 0;
+
+ if (!isFirstKeyframe)
+ {
+ var previousKeyframe = spline.GetSplineKeyframe(index - 1);
+ var directionToPreviousKeyframe = keyframe.Value.WorldToLocalVector(keyframe.Value.Translation - previousKeyframe.Value.Translation);
+ directionToPreviousKeyframe = directionToPreviousKeyframe.Normalized * 100f;
+ keyframe.TangentOut.Translation = directionToPreviousKeyframe;
+ }
+ }
+
+ keyframe.TangentIn.Translation = Vector3.Zero;
+
+ spline.SetSplineKeyframe(index, keyframe);
+ }
+
private static void SetPointSmooth(Spline spline, int index)
{
var keyframe = spline.GetSplineKeyframe(index);