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