Exemplo n.º 1
0
        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 _);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Removes a vessel from the system
        /// </summary>
        public void RemoveVesselFromSystem(Vessel vessel)
        {
            if (vessel == null)
            {
                return;
            }

            VesselsToRemove.Enqueue(vessel.id);
        }
Exemplo n.º 3
0
 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));
        }
Exemplo n.º 5
0
        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 _);
            }
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        /// <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);
            }
        }
Exemplo n.º 8
0
        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 _);
            }
        }
Exemplo n.º 9
0
 /// <summary>
 /// Check if vessel is in the kill list
 /// </summary>
 public bool VesselWillBeKilled(Guid vesselId)
 {
     return(VesselsToRemove.ContainsKey(vesselId) || VesselsToUnload.ContainsKey(vesselId));
 }
Exemplo n.º 10
0
 /// <summary>
 /// Removes a vessel from the system
 /// </summary>
 public void RemoveVesselFromSystem(Guid vesselId)
 {
     VesselsToRemove.Enqueue(vesselId);
 }
Exemplo n.º 11
0
 /// <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));
 }
Exemplo n.º 12
0
 /// <summary>
 /// Add a vessel so it will be killed later
 /// </summary>
 public void AddToKillList(Guid vesselId, string reason)
 {
     VesselsToRemove.Enqueue(new VesselRemoveEntry(vesselId, reason));
 }
Exemplo n.º 13
0
 /// <summary>
 /// Add a vessel so it will be killed later
 /// </summary>
 public void AddToKillList(Guid vesselId)
 {
     VesselsToRemove.Enqueue(vesselId);
 }