102 lines
4.3 KiB
C#
102 lines
4.3 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|