private void HandleVesselUpdates() { if (!PositionUpdateSystemBasicReady) { return; } foreach (var keyVal in CurrentVesselUpdate) { if (!VesselCommon.DoVesselChecks(keyVal.Key)) { RemoveVesselFromSystem(keyVal.Key); } if (SettingsSystem.CurrentSettings.InterpolationEnabled) { keyVal.Value.ApplyInterpolatedVesselUpdate(); } else { keyVal.Value.ApplyVesselUpdate(); } } while (VesselsToRemove.Count > 0) { var vesselToRemove = VesselsToRemove.Dequeue(); TargetVesselUpdate.TryRemove(vesselToRemove, out _); CurrentVesselUpdate.TryRemove(vesselToRemove, out _); TargetVesselUpdateQueue.TryRemove(vesselToRemove, out _); } }
/// <summary> /// Removes a vessel from the system /// </summary> public void RemoveVesselFromSystem(Vessel vessel) { if (vessel == null) { return; } VesselsToRemove.Enqueue(vessel.id); }
protected override void OnDisabled() { base.OnDisabled(); VesselsToRemove.Clear(); VesselsToUnload.Clear(); GameEvents.onVesselRecovered.Remove(VesselRemoveEvents.OnVesselRecovered); GameEvents.onVesselTerminated.Remove(VesselRemoveEvents.OnVesselTerminated); GameEvents.onVesselDestroy.Remove(VesselRemoveEvents.OnVesselDestroyed); }
/// <summary> /// Add a vessel so it will be killed later /// </summary> public void AddToKillList(Vessel vessel, string reason) { if (vessel == null) { return; } VesselsToRemove.Enqueue(new VesselRemoveEntry(vessel, reason)); }
private static void HandleVesselUpdates() { foreach (var keyVal in CurrentVesselUpdate) { keyVal.Value.ApplyVesselUpdate(); } while (VesselsToRemove.Count > 0) { var vesselToRemove = VesselsToRemove.Dequeue(); TargetVesselUpdate.TryRemove(vesselToRemove, out _); CurrentVesselUpdate.TryRemove(vesselToRemove, out _); } }
private void RemoveQueuedVessels() { foreach (var vessel in VesselsToRemove.Values) { KillVessel(vessel, true); } VesselsToRemove.Clear(); foreach (var vessel in VesselsToUnload.Values) { KillVessel(vessel, false); } VesselsToUnload.Clear(); }
/// <summary> /// Add a vessel so it will be killed later /// </summary> public void AddToKillList(Vessel vessel, bool fullKill) { if (vessel == null) { return; } if (fullKill) { VesselsToRemove.TryAdd(vessel.id, vessel); } else { VesselsToUnload.TryAdd(vessel.id, vessel); } }
private void HandleVesselUpdates() { if (!PositionUpdateSystemBasicReady) { return; } foreach (var keyVal in CurrentVesselUpdate) { if (!DoVesselChecks(keyVal.Key)) { RemoveVesselFromSystem(keyVal.Key); } keyVal.Value.ApplyVesselUpdate(); } while (VesselsToRemove.Count > 0) { var vesselToRemove = VesselsToRemove.Dequeue(); TargetVesselUpdate.TryRemove(vesselToRemove, out _); CurrentVesselUpdate.TryRemove(vesselToRemove, out _); } }
/// <summary> /// Check if vessel is in the kill list /// </summary> public bool VesselWillBeKilled(Guid vesselId) { return(VesselsToRemove.ContainsKey(vesselId) || VesselsToUnload.ContainsKey(vesselId)); }
/// <summary> /// Removes a vessel from the system /// </summary> public void RemoveVesselFromSystem(Guid vesselId) { VesselsToRemove.Enqueue(vesselId); }
/// <summary> /// Check if vessel is in the kill list /// </summary> public bool VesselWillBeKilled(Guid vesselId) { return(VesselsToRemove.Any(v => v.VesselId == vesselId) || RemovedVessels.ContainsKey(vesselId)); }
/// <summary> /// Add a vessel so it will be killed later /// </summary> public void AddToKillList(Guid vesselId, string reason) { VesselsToRemove.Enqueue(new VesselRemoveEntry(vesselId, reason)); }
/// <summary> /// Add a vessel so it will be killed later /// </summary> public void AddToKillList(Guid vesselId) { VesselsToRemove.Enqueue(vesselId); }