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; | ||
|  |         } | ||
|  |     } | ||
|  | } |