void Update() { var time = UnityEngine.Time.deltaTime; #region Property Event Unity Main Thread Call isRunningUnityThreadCallback = true; var unityThreadIterator = unityThreadQueue.GetIterator(); EiLLNode <EiUnityThreadCallbackInterface> propertyEvent; while (unityThreadIterator.Next(out propertyEvent)) { propertyEvent.Value.UnityThreadOnChangeOnly(); } unityThreadQueue.Clear(); isRunningUnityThreadCallback = false; #endregion #region TimerUpdateList EiLLNode <TimerUpdateData> dataNode; var dataIterator = timerUpdateList.GetIterator(); while (dataIterator.Next(out dataNode)) { if (dataNode.Value.comp == null) { timerUpdateList.Remove(dataNode); } else { dataNode.Value.Update(time); } } #endregion #region Pre Update Loop EiLLNode <EiUpdateInterface> pre; var preiterator = preUpdateList.GetIterator(); while (preiterator.Next(out pre)) { if (pre.Value == null) { preUpdateList.Remove(pre); } else { pre.Value.PreUpdateComponent(time); } } #endregion #region Update Loop EiLLNode <EiUpdateInterface> comp; var iterator = updateList.GetIterator(); while (iterator.Next(out comp)) { if (comp.Value == null) { updateList.Remove(comp); } else { comp.Value.UpdateComponent(time); } } #endregion }