void Update() { if (listOfCallbacks == null || listOfCallbacks.Count == 0) { return; } for (int i = 0; i < listOfCallbacks.Count; ++i) { callbackStruct = listOfCallbacks[i]; if ((!callbackStruct.isRealTime && Time.time - callbackStruct.startTime > callbackStruct.timeDelay) || (callbackStruct.isRealTime && Time.realtimeSinceStartup - callbackStruct.startTime > callbackStruct.timeDelay)) { callbackStruct.func(); if (callbackStruct.repeat) { callbackStruct.startTime = Time.time; } else { listOfCallbacks.Remove(callbackStruct); } } } }
public void repeat(System.Action func, float repeatTimeDelay) { if (func == null) { return; } CallbackInstance newCallback = new CallbackInstance(); newCallback.func = func; newCallback.timeDelay = repeatTimeDelay; newCallback.startTime = Time.time; newCallback.repeat = true; listOfCallbacks.Add(newCallback); }
public void clearAllRepeats() { if (listOfCallbacks.Count == 0) { return; } CallbackInstance callbackStruct; for (int i = 0; i < listOfCallbacks.Count; ++i) { callbackStruct = listOfCallbacks[i]; if (callbackStruct.repeat) { listOfCallbacks.Remove(callbackStruct); } } }
public void doLater(System.Action func, float timeDelay, bool isRealTime = false) { if (func == null) { return; } if (timeDelay <= 0.0f) { func(); return; } CallbackInstance newCallback = new CallbackInstance(); newCallback.func = func; newCallback.timeDelay = timeDelay; newCallback.startTime = isRealTime?Time.realtimeSinceStartup:Time.time; newCallback.isRealTime = isRealTime; listOfCallbacks.Add(newCallback); }