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(); } }