Last active
August 17, 2021 07:44
-
-
Save valryon/9915075 to your computer and use it in GitHub Desktop.
Revisions
-
Damien Mayance revised this gist
Sep 10, 2015 . 1 changed file with 0 additions and 8 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -8,14 +8,6 @@ //... })); // Launch the timer StartCoroutine(t.Start()); -
Damien Mayance renamed this gist
Apr 26, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
Damien Mayance revised this gist
Apr 26, 2015 . 2 changed files with 42 additions and 58 deletions.There are no files selected for viewing
File renamed without changes.This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,74 +6,58 @@ /// <summary> /// Ready to use timers for coroutines /// </summary> /// <summary> /// Ready to use timers for coroutines /// </summary> public class Timer { /// <summary> /// Simple timer, no reference, wait and then execute something /// </summary> /// <param name="duration"></param> /// <param name="callback"></param> /// <returns></returns> public static IEnumerator Start(float duration, Action callback) { return Start(duration, false, callback); } /// <summary> /// Simple timer, no reference, wait and then execute something /// </summary> /// <param name="duration"></param> /// <param name="repeat"></param> /// <param name="callback"></param> /// <returns></returns> public static IEnumerator Start(float duration, bool repeat, Action callback) { do { yield return new WaitForSeconds(duration); if (callback != null) callback(); } while (repeat); } public static IEnumerator StartRealtime(float time, System.Action callback) { float start = Time.realtimeSinceStartup; while (Time.realtimeSinceStartup < start + time) { yield return null; } if (callback != null) callback(); } public static IEnumerator NextFrame(Action callback) { yield return new WaitForEndOfFrame(); if (callback != null) callback(); } } -
Damien Mayance created this gist
Apr 1, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,24 @@ const float duration = 3f; // Simple creation: can't be stopped even if lopping //-------------------------------------------- StartCoroutine(Timer.Start(duration, true, () => { // Do something at the end of the 3 seconds (duration) //... })); // Advanced creation: you can launch it later and stop it //-------------------------------------------- Timer t = new Timer(duration, false, () => { //... }); // Launch the timer StartCoroutine(t.Start()); // Ask to stop it next frame t.Stop(); This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,79 @@ // 2014 - Pixelnest Studio using System; using System.Collections; using UnityEngine; /// <summary> /// Ready to use timers for coroutines /// </summary> public class Timer { private bool repeat; private bool stop; private float duration; private Action callback; public Timer(float duration, bool repeat, Action callback) { this.stop = false; this.repeat = repeat; this.duration = duration; this.callback = callback; } /// <summary> /// Start in co-routine /// </summary> /// <returns></returns> public IEnumerator Start() { do { if (stop == false) { yield return new WaitForSeconds(duration); if (callback != null) callback(); } } while (repeat && !stop); } /// <summary> /// Stop the timer (at next frame) /// </summary> public void Stop() { this.stop = true; } /// <summary> /// Simple timer, no reference, wait and then execute something /// </summary> /// <param name="duration"></param> /// <param name="callback"></param> /// <returns></returns> public static IEnumerator Start(float duration, Action callback) { return Start(duration, false, callback); } /// <summary> /// Simple timer, no reference, wait and then execute something /// </summary> /// <param name="duration"></param> /// <param name="repeat"></param> /// <param name="callback"></param> /// <returns></returns> public static IEnumerator Start(float duration, bool repeat, Action callback) { Timer timer = new Timer(duration, repeat, callback); return timer.Start(); } public bool Repeat { get { return repeat; } } }