void FixedUpdate() { EiLLNode <EiUpdateInterface> comp; var time = UnityEngine.Time.fixedDeltaTime; var iterator = fixedUpdateList.GetIterator(); while (iterator.Next(out comp)) { if (comp.Value == null) { fixedUpdateList.Remove(comp); } else { comp.Value.FixedUpdateComponent(time); } } }
void LateUpdate() { EiLLNode <EiUpdateInterface> comp; var time = UnityEngine.Time.deltaTime; var iterator = lateUpdateList.GetIterator(); while (iterator.Next(out comp)) { if (comp.Value.IsNull) { lateUpdateList.Remove(comp); } else { comp.Value.LateUpdateComponent(time); } } }
void Update() { while (isRunning) { #region start sw.Start(); var time = DeltaTime; updates++; #endregion #region EiComponent Update try { EiLLNode <EiUpdateInterface> component; var iterator = components.GetIterator(); while (iterator.Next(out component)) { try { if (component.Value == null) { components.Remove(component); } else { component.Value.ThreadedUpdateComponent(time); } } catch (Exception e) { if (component != null) { components.Remove(component); } LogException(() => e); } } } catch (Exception e) { LogException(() => e); } #endregion #region FPS Counter if (DateTime.UtcNow.Ticks > lastFpsUpdate + TimeSpan.TicksPerSecond) { lastFpsUpdate = DateTime.UtcNow.Ticks; framesPerSecond = updates; updates = 0; } #endregion #region End and sleep Thread.Sleep(new TimeSpan(Math.Max(1000, targetFpsInTicks - ticks))); ticks = sw.ElapsedTicks; if (components.Count() > 10) { if (node.Next.Value.ticks < ticks - 5000) { components.LastNode().MoveTo(node.Next.Value.components); } } sw.Reset(); #endregion } }
public void RemoveFromList() { List.Remove(this); }
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 }