/// <summary> /// Check if we must send a message or not based on the fixed time that has passed. /// Note that when no vessels are nearby or we are not in KSC the time is multiplied by 10 /// </summary> private static bool ShouldSendPositionUpdate() { if (VesselCommon.IsSpectating) { return(false); } var secSinceLastSend = Time.fixedTime - _lastSentTime; if (VesselCommon.PlayerVesselsNearby() || VesselCommon.IsNearKsc(20000)) { return(secSinceLastSend > VesselUpdatesSendSInterval); } return(secSinceLastSend > VesselUpdatesSendSInterval * 10); }
/// <summary> /// Check vessels that must be loaded /// </summary> private void CheckVesselsToLoad() { try { if (ProtoSystemBasicReady) { //Load vessels that don't exist, are in our subspace and out of safety bubble var vesselsToLoad = VesselsProtoStore.AllPlayerVessels.Where(v => !v.Value.VesselExist && v.Value.ShouldBeLoaded); foreach (var vesselProto in vesselsToLoad) { if (VesselRemoveSystem.VesselWillBeKilled(vesselProto.Key)) { continue; } //Only load vessels that are in safety bubble on the track station if (vesselProto.Value.IsInSafetyBubble && HighLogic.LoadedScene != GameScenes.TRACKSTATION) { continue; } if (VesselCommon.ActiveVesselIsInSafetyBubble() && VesselCommon.IsNearKsc(vesselProto.Value.ProtoVessel, 20000)) { continue; } LunaLog.Log($"[LMP]: Loading vessel {vesselProto.Key}"); CurrentlyUpdatingVesselId = vesselProto.Key; if (VesselLoader.LoadVessel(vesselProto.Value.ProtoVessel)) { LunaLog.Log($"[LMP]: Vessel {vesselProto.Key} loaded"); } CurrentlyUpdatingVesselId = Guid.Empty; } } } catch (Exception e) { LunaLog.LogError($"[LMP]: Error in CheckVesselsToLoad {e}"); } }