59 lines
2.4 KiB
C#
59 lines
2.4 KiB
C#
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityEditor.Timeline
|
||
|
{
|
||
|
// Preset libraries
|
||
|
static class BuiltInPresets
|
||
|
{
|
||
|
static CurvePresetLibrary s_BlendInPresets;
|
||
|
static CurvePresetLibrary s_BlendOutPresets;
|
||
|
|
||
|
internal static CurvePresetLibrary blendInPresets
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (s_BlendInPresets == null)
|
||
|
{
|
||
|
s_BlendInPresets = ScriptableObject.CreateInstance<CurvePresetLibrary>();
|
||
|
s_BlendInPresets.Add(new AnimationCurve(CurveEditorWindow.GetConstantKeys(1f)), "None");
|
||
|
s_BlendInPresets.Add(new AnimationCurve(CurveEditorWindow.GetLinearKeys()), "Linear");
|
||
|
s_BlendInPresets.Add(new AnimationCurve(CurveEditorWindow.GetEaseInKeys()), "EaseIn");
|
||
|
s_BlendInPresets.Add(new AnimationCurve(CurveEditorWindow.GetEaseOutKeys()), "EaseOut");
|
||
|
s_BlendInPresets.Add(new AnimationCurve(CurveEditorWindow.GetEaseInOutKeys()), "EaseInOut");
|
||
|
}
|
||
|
return s_BlendInPresets;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal static CurvePresetLibrary blendOutPresets
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (s_BlendOutPresets == null)
|
||
|
{
|
||
|
s_BlendOutPresets = ScriptableObject.CreateInstance<CurvePresetLibrary>();
|
||
|
s_BlendOutPresets.Add(new AnimationCurve(CurveEditorWindow.GetConstantKeys(1f)), "None");
|
||
|
s_BlendOutPresets.Add(ReverseCurve(new AnimationCurve(CurveEditorWindow.GetLinearKeys())), "Linear");
|
||
|
s_BlendOutPresets.Add(ReverseCurve(new AnimationCurve(CurveEditorWindow.GetEaseInKeys())), "EaseIn");
|
||
|
s_BlendOutPresets.Add(ReverseCurve(new AnimationCurve(CurveEditorWindow.GetEaseOutKeys())), "EaseOut");
|
||
|
s_BlendOutPresets.Add(ReverseCurve(new AnimationCurve(CurveEditorWindow.GetEaseInOutKeys())), "EaseInOut");
|
||
|
}
|
||
|
return s_BlendOutPresets;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static AnimationCurve ReverseCurve(AnimationCurve curve)
|
||
|
{
|
||
|
Keyframe[] keys = curve.keys;
|
||
|
for (int i = 0; i < keys.Length; i++)
|
||
|
{
|
||
|
keys[i].value = 1 - keys[i].value;
|
||
|
keys[i].inTangent *= -1;
|
||
|
keys[i].outTangent *= -1;
|
||
|
}
|
||
|
curve.keys = keys;
|
||
|
return curve;
|
||
|
}
|
||
|
}
|
||
|
}
|