/// <summary> /// Main system that picks changes received and process them /// </summary> public IEnumerator HandleVesselChanges() { var seconds = new WaitForSeconds(0.5f); while (true) { try { if (!Enabled) { break; } if (MainSystem.Singleton.GameRunning) { while (IncomingChanges.Count > 0 && Time.fixedTime - IncomingChanges.Peek().ReceiveTime >= 0.5) { HandleVesselChange(IncomingChanges.Dequeue()); } } } catch (Exception e) { Debug.LogError($"[LMP]: Error in coroutine HandleVesselChanges {e}"); } yield return(seconds); } }
public override void OnDisabled() { base.OnDisabled(); IncomingChanges.Clear(); GameEvents.onStageSeparation.Remove(VesselChangeEvents.OnStageSeparation); GameEvents.onPartDie.Remove(VesselChangeEvents.OnPartDie); }