Ejemplo 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 _);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Gets the latest received ref body of a vessel
 /// </summary>
 public int GetLatestVesselRefBody(Guid vesselId)
 {
     return(TargetVesselUpdate.TryGetValue(vesselId, out var vesselPosition) ?
            vesselPosition.BodyIndex :
            CurrentVesselUpdate.TryGetValue(vesselId, out vesselPosition) ?
            vesselPosition.BodyIndex :
            int.MinValue);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Gets the latest received position of a vessel
 /// </summary>
 public double[] GetLatestVesselPosition(Guid vesselId)
 {
     return(TargetVesselUpdate.TryGetValue(vesselId, out var vesselPosition) ?
            vesselPosition.LatLonAlt :
            CurrentVesselUpdate.TryGetValue(vesselId, out vesselPosition) ?
            vesselPosition.LatLonAlt :
            null);
 }
Ejemplo n.º 4
0
        protected override void OnDisabled()
        {
            base.OnDisabled();
            CurrentVesselUpdate.Clear();
            TargetVesselUpdate.Clear();
            TargetVesselUpdateQueue.Clear();

            TimingManager.UpdateRemove(TimingManager.TimingStage.ObscenelyEarly, HandleVesselUpdates);
            TimingManager.FixedUpdateRemove(TimingManager.TimingStage.ObscenelyEarly, SendVesselPositionUpdates);
        }
Ejemplo 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 _);
            }
        }
Ejemplo n.º 6
0
        private static void HandleVesselUpdates()
        {
            if (FlightGlobals.ActiveVessel == null)
            {
                return;
            }

            foreach (var keyVal in CurrentVesselUpdate)
            {
                keyVal.Value.ApplyVesselUpdate();
                //FlightGlobals.ActiveVessel.StartCoroutine(ApplyVesselUpdate(keyVal.Value));
            }

            while (VesselsToRemove.Count > 0)
            {
                var vesselToRemove = VesselsToRemove.Dequeue();
                TargetVesselUpdate.TryRemove(vesselToRemove, out _);
                CurrentVesselUpdate.TryRemove(vesselToRemove, out _);
            }
        }
Ejemplo n.º 7
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 _);
            }
        }