namespace LitMotion
{
///
/// Schedulers available in Runtime.
///
public static class MotionScheduler
{
static MotionScheduler()
{
DefaultScheduler = Update;
}
///
/// Default scheduler used if not specified
///
public static IMotionScheduler DefaultScheduler { get; set; }
///
/// Scheduler that updates motion at Initialization.
///
public static readonly IMotionScheduler Initialization = new PlayerLoopMotionScheduler(PlayerLoopTiming.Initialization, MotionTimeKind.Time);
///
/// Scheduler that updates motion at Initialization. (Ignore timescale)
///
public static readonly IMotionScheduler InitializationIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.Initialization, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at Initialization. (Realtime)
///
public static readonly IMotionScheduler InitializationRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.Initialization, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at EarlyUpdate.
///
public static readonly IMotionScheduler EarlyUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.EarlyUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at EarlyUpdate. (Ignore timescale)
///
public static readonly IMotionScheduler EarlyUpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.EarlyUpdate, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at EarlyUpdate. (Realtime)
///
public static readonly IMotionScheduler EarlyUpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.EarlyUpdate, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at FixedUpdate.
///
public static readonly IMotionScheduler FixedUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.FixedUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at PreUpdate.
///
public static readonly IMotionScheduler PreUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at PreUpdate. (Ignore timescale)
///
public static readonly IMotionScheduler PreUpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreUpdate, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at PreUpdate. (Realtime)
///
public static readonly IMotionScheduler PreUpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreUpdate, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at Update.
///
public static readonly IMotionScheduler Update = new PlayerLoopMotionScheduler(PlayerLoopTiming.Update, MotionTimeKind.Time);
///
/// Scheduler that updates motion at Update. (Ignore timescale)
///
public static readonly IMotionScheduler UpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.Update, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at Update. (Realtime)
///
public static readonly IMotionScheduler UpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.Update, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at PreLateUpdate.
///
public static readonly IMotionScheduler PreLateUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreLateUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at PreLateUpdate. (Ignore timescale)
///
public static readonly IMotionScheduler PreLateUpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreLateUpdate, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at PreLateUpdate. (Realtime)
///
public static readonly IMotionScheduler PreLateUpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.PreLateUpdate, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at PostLateUpdate.
///
public static readonly IMotionScheduler PostLateUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.PostLateUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at PostLateUpdate. (Ignore timescale)
///
public static readonly IMotionScheduler PostLateUpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.PostLateUpdate, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at PostLateUpdate. (Realtime)
///
public static readonly IMotionScheduler PostLateUpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.PostLateUpdate, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion at TimeUpdate.
///
public static readonly IMotionScheduler TimeUpdate = new PlayerLoopMotionScheduler(PlayerLoopTiming.TimeUpdate, MotionTimeKind.Time);
///
/// Scheduler that updates motion at TimeUpdate. (Ignore timescale)
///
public static readonly IMotionScheduler TimeUpdateIgnoreTimeScale = new PlayerLoopMotionScheduler(PlayerLoopTiming.TimeUpdate, MotionTimeKind.UnscaledTime);
///
/// Scheduler that updates motion at TimeUpdate. (Realtime)
///
public static readonly IMotionScheduler TimeUpdateRealtime = new PlayerLoopMotionScheduler(PlayerLoopTiming.TimeUpdate, MotionTimeKind.Realtime);
///
/// Scheduler that updates motion with `ManualMotionDispatcher.Update()`
///
public static readonly IMotionScheduler Manual = new ManualMotionScheduler();
}
}