/// <summary>
        ///     Schedule an action that repeatedly fires after a delay specified in milliseconds.
        /// </summary>
        /// <param name="entity">The entity to add the timer to.</param>
        /// <param name="milliseconds">The length of time, in milliseconds, to delay before firing the repeated action.</param>
        /// <param name="onFired">The action to fire.</param>
        /// <param name="cancellationToken">The CancellationToken for stopping the Timer.</param>
        public static void SpawnRepeatingTimer(this EntityUid entity, int milliseconds, Action onFired, CancellationToken cancellationToken)
        {
            var entMan = IoCManager.Resolve <IEntityManager>();

            entity
            .EnsureTimerComponent()
            .SpawnRepeating(milliseconds, onFired, cancellationToken);
        }
 /// <summary>
 ///     Schedule an action to be fired after a certain delay.
 ///     The action will be resumed on the main game logic thread.
 /// </summary>
 /// <param name="entity">The entity to add the timer to.</param>
 /// <param name="duration">The length of time, to wait before firing the action.</param>
 /// <param name="onFired">The action to fire.</param>
 /// <param name="cancellationToken"></param>
 public static void SpawnTimer(this EntityUid entity, TimeSpan duration, Action onFired, CancellationToken cancellationToken = default)
 {
     entity
     .EnsureTimerComponent()
     .Spawn((int)duration.TotalMilliseconds, onFired, cancellationToken);
 }
 /// <summary>
 ///     Schedule an action to be fired after a certain delay.
 ///     The action will be resumed on the main game logic thread.
 /// </summary>
 /// <param name="entity">The entity to add the timer to.</param>
 /// <param name="milliseconds">The length of time, in milliseconds, to wait before firing the action.</param>
 /// <param name="onFired">The action to fire.</param>
 /// <param name="cancellationToken"></param>
 public static void SpawnTimer(this EntityUid entity, int milliseconds, Action onFired, CancellationToken cancellationToken = default)
 {
     entity
     .EnsureTimerComponent()
     .Spawn(milliseconds, onFired, cancellationToken);
 }
 /// <summary>
 ///     Creates a task that will complete after a given delay.
 ///     The task is resumed on the main game logic thread.
 /// </summary>
 /// <param name="entity">The entity to add the timer to.</param>
 /// <param name="duration">The length of time to delay for.</param>
 /// <param name="cancellationToken"></param>
 /// <returns>The task that can be awaited.</returns>
 public static Task DelayTask(this EntityUid entity, TimeSpan duration, CancellationToken cancellationToken = default)
 {
     return(entity
            .EnsureTimerComponent()
            .Delay((int)duration.TotalMilliseconds, cancellationToken));
 }
 /// <summary>
 ///     Creates a task that will complete after a given delay.
 ///     The task is resumed on the main game logic thread.
 /// </summary>
 /// <param name="entity">The entity to add the timer to.</param>
 /// <param name="milliseconds">The length of time, in milliseconds, to delay for.</param>
 /// <param name="cancellationToken"></param>
 /// <returns>The task that can be awaited.</returns>
 public static Task DelayTask(this EntityUid entity, int milliseconds, CancellationToken cancellationToken = default)
 {
     return(entity
            .EnsureTimerComponent()
            .Delay(milliseconds, cancellationToken));
 }
 public static void AddTimer(this EntityUid entity, Timer timer, CancellationToken cancellationToken = default)
 {
     entity
     .EnsureTimerComponent()
     .AddTimer(timer, cancellationToken);
 }
 /// <summary>
 ///     Schedule an action that repeatedly fires after a delay.
 /// </summary>
 /// <param name="entity">The entity to add the timer to.</param>
 /// <param name="duration">The length of time to delay before firing the repeated action.</param>
 /// <param name="onFired">The action to fire.</param>
 /// <param name="cancellationToken">The CancellationToken for stopping the Timer.</param>
 public static void SpawnRepeatingTimer(this EntityUid entity, TimeSpan duration, Action onFired, CancellationToken cancellationToken)
 {
     entity
     .EnsureTimerComponent()
     .SpawnRepeating(duration, onFired, cancellationToken);
 }