public void AddNewUpdatee(MonoBehaviour component, Action updateAction) { var updateOffset = (float)(_random.NextDouble() * _timeBetweenUpdates); var key = new UpdateOffsetWithAction() { Action = updateAction, UpdateOffset = updateOffset }; Assert.IsFalse(_actionToKey.ContainsKey(updateAction)); _actionToKey[updateAction] = key; var updatee = new UpdateeWithMethod() { Component = component, UpdateOffset = updateOffset, UpdateAction = updateAction, }; _updatees.Add(key, updatee); if (_updatees.Count == 1) { _currentIndex = 0; } else { var indexOfNewUpdatee = _updatees.IndexOfKey(key); if (indexOfNewUpdatee <= _currentIndex) { _currentIndex++; } } }
private void ExecuteLoop(UpdateeWithMethod element, ref List <Action> actionsToDelete) { try { element.UpdateAction(); } catch (Exception ex) { if (element.Component == null) { if (actionsToDelete == null) { actionsToDelete = new List <Action>(); } actionsToDelete.Add(element.UpdateAction); } else { UnityEngine.Debug.LogError(ex.ToString()); } } }