133 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			133 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System.Collections.Generic; | ||
|  | using UnityEditor.ShortcutManagement; | ||
|  | using UnityEditor.Timeline; | ||
|  | using UnityEditor.Timeline.Actions; | ||
|  | using UnityEngine; | ||
|  | using UnityEngine.Playables; | ||
|  | using UnityEngine.Timeline; | ||
|  | 
 | ||
|  | namespace DocCodeExamples | ||
|  | { | ||
|  |     class TimelineAttributesExamples_HideAPI | ||
|  |     { | ||
|  |         #region declare-sampleTrackBindingAttr | ||
|  | 
 | ||
|  |         [TrackBindingType(typeof(Light), TrackBindingFlags.AllowCreateComponent)] | ||
|  |         public class LightTrack : TrackAsset { } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region declare-menuEntryAttribute | ||
|  | 
 | ||
|  |         [MenuEntry("Simple Menu Action")] | ||
|  |         class SimpleMenuAction : TimelineAction | ||
|  |         { | ||
|  |             public override ActionValidity Validate(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return ActionValidity.Valid; | ||
|  |             } | ||
|  | 
 | ||
|  |             public override bool Execute(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return true; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         [MenuEntry("Menu Action with priority", 9999)] | ||
|  |         class MenuActionWithPriority : TimelineAction | ||
|  |         { | ||
|  |             public override ActionValidity Validate(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return ActionValidity.Valid; | ||
|  |             } | ||
|  | 
 | ||
|  |             public override bool Execute(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return true; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         [MenuEntry("My Menu/Menu Action inside submenu")] | ||
|  |         class MenuActionInsideSubMenu : TimelineAction | ||
|  |         { | ||
|  |             public override ActionValidity Validate(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return ActionValidity.Valid; | ||
|  |             } | ||
|  | 
 | ||
|  |             public override bool Execute(ActionContext actionContext) | ||
|  |             { | ||
|  |                 return true; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region declare-timelineShortcutAttr | ||
|  | 
 | ||
|  |         public class ShortcutAction : TimelineAction | ||
|  |         { | ||
|  |             public override ActionValidity Validate(ActionContext _) | ||
|  |             { | ||
|  |                 return ActionValidity.Valid; | ||
|  |             } | ||
|  | 
 | ||
|  |             public override bool Execute(ActionContext _) | ||
|  |             { | ||
|  |                 Debug.Log("Action executed."); | ||
|  |                 return true; | ||
|  |             } | ||
|  | 
 | ||
|  |             [TimelineShortcut("Test Action", KeyCode.K, ShortcutModifiers.Shift | ShortcutModifiers.Alt)] | ||
|  |             public static void HandleShortCut(ShortcutArguments args) | ||
|  |             { | ||
|  |                 Invoker.InvokeWithSelected<ShortcutAction>(); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region declare-applyDefaultUndoAttr | ||
|  | 
 | ||
|  |         [ApplyDefaultUndo] | ||
|  |         public class SetNameToTypeAction : TrackAction | ||
|  |         { | ||
|  |             public override ActionValidity Validate(IEnumerable<TrackAsset> items) | ||
|  |             { | ||
|  |                 return ActionValidity.Valid; | ||
|  |             } | ||
|  | 
 | ||
|  |             public override bool Execute(IEnumerable<TrackAsset> items) | ||
|  |             { | ||
|  |                 foreach (TrackAsset track in items) | ||
|  |                     track.name = track.GetType().Name; | ||
|  |                 return true; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region declare-customStyleMarkerAttr | ||
|  | 
 | ||
|  |         [CustomStyle("MyStyle")] | ||
|  |         public class MyMarker : UnityEngine.Timeline.Marker { } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         #region declare-customTimelineEditorAttr | ||
|  | 
 | ||
|  |         [CustomTimelineEditor(typeof(MyCustomClip))] | ||
|  |         class MyCustomClipEditor : ClipEditor { } | ||
|  | 
 | ||
|  |         #endregion | ||
|  | 
 | ||
|  |         class MyCustomClip : PlayableAsset | ||
|  |         { | ||
|  |             public override Playable CreatePlayable(PlayableGraph graph, GameObject owner) | ||
|  |             { | ||
|  |                 return Playable.Null; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |