public void UnPauseTimer(TimerHandle handle)
 {
     if (handle.IsActive)
     {
         activeTimers[handle].timerStatus = ETimerStatus.Active;
         activeTimers[handle].expireTime += Time.time;
     }
 }
 public void PauseTimer(TimerHandle handle)
 {
     if (handle.IsActive)
     {
         activeTimers[handle].timerStatus = ETimerStatus.Paused;
         activeTimers[handle].expireTime -= Time.time;
     }
 }
 public void SetTimer(TimerHandle handle, Action action, float timerRate, bool isLooping = false, float firstDelay = 0.0f)
 {
     if (!handle.IsActive)
     {
         handle.IsActive = true;
         TimerData newTimerData = new TimerData(isLooping, ETimerStatus.Active, timerRate, Time.time + timerRate + firstDelay, action);
         activeTimers.Add(handle, newTimerData);
     }
 }
 public void StopTimer(TimerHandle handle)
 {
     if (handle.IsActive)
     {
         if (activeTimers.ContainsKey(handle))
         {
             activeTimers[handle].timerStatus = ETimerStatus.PendingRemoval;
         }
     }
 }
 private void RemoveTimer(TimerHandle handle)
 {
     activeTimers.Remove(handle);
     handle.IsActive = false;
 }