| using System; | |
| using System.Collections.Generic; | |
| using UnityEngine; | |
| using UnityEngine.Timeline; | |
| namespace UnityEditor.Timeline.Actions | |
| { | |
| /// <summary> | |
| /// Class containing methods to invoke actions. | |
| /// </summary> | |
| public static class Invoker | |
| { | |
| /// <summary> | |
| /// Execute a given action with a context parameter. | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <param name="context">Context for the action.</param> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool Invoke<T>(this ActionContext context) where T : TimelineAction | |
| { | |
| var action = ActionManager.TimelineActions.GetCachedAction<T, TimelineAction>(); | |
| return ActionManager.ExecuteTimelineAction(action, context); | |
| } | |
| /// <summary> | |
| /// Execute a given action with tracks | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <param name="tracks">Tracks that the action will act on.</param> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool Invoke<T>(this IEnumerable<TrackAsset> tracks) where T : TrackAction | |
| { | |
| var action = ActionManager.TrackActions.GetCachedAction<T, TrackAction>(); | |
| return ActionManager.ExecuteTrackAction(action, tracks); | |
| } | |
| /// <summary> | |
| /// Execute a given action with clips | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <param name="clips">Clips that the action will act on.</param> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool Invoke<T>(this IEnumerable<TimelineClip> clips) where T : ClipAction | |
| { | |
| var action = ActionManager.ClipActions.GetCachedAction<T, ClipAction>(); | |
| return ActionManager.ExecuteClipAction(action, clips); | |
| } | |
| /// <summary> | |
| /// Execute a given action with markers | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <param name="markers">Markers that the action will act on.</param> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool Invoke<T>(this IEnumerable<IMarker> markers) where T : MarkerAction | |
| { | |
| var action = ActionManager.MarkerActions.GetCachedAction<T, MarkerAction>(); | |
| return ActionManager.ExecuteMarkerAction(action, markers); | |
| } | |
| /// <summary> | |
| /// Execute a given timeline action with the selected clips, tracks and markers. | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool InvokeWithSelected<T>() where T : TimelineAction | |
| { | |
| return Invoke<T>(TimelineEditor.CurrentContext()); | |
| } | |
| /// <summary> | |
| /// Execute a given clip action with the selected clips. | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool InvokeWithSelectedClips<T>() where T : ClipAction | |
| { | |
| return Invoke<T>(SelectionManager.SelectedClips()); | |
| } | |
| /// <summary> | |
| /// Execute a given track action with the selected tracks. | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool InvokeWithSelectedTracks<T>() where T : TrackAction | |
| { | |
| return Invoke<T>(SelectionManager.SelectedTracks()); | |
| } | |
| /// <summary> | |
| /// Execute a given marker action with the selected markers. | |
| /// </summary> | |
| /// <typeparam name="T">Action type to execute.</typeparam> | |
| /// <returns>True if the action has been executed, false otherwise.</returns> | |
| public static bool InvokeWithSelectedMarkers<T>() where T : MarkerAction | |
| { | |
| return Invoke<T>(SelectionManager.SelectedMarkers()); | |
| } | |
| } | |
| } | |