public static void UpdateRanges(bool updatingFromUi = false) { Debug.Log("[PhysicsRangeExtender]: Updating ranges"); FloatingOrigin.fetch.threshold = Mathf.Pow(PreSettings.GlobalRange * 1000 * 1.20f, 2); if (updatingFromUi) { TerrainExtender.UpdateSphere(); } _globalSituation = new VesselRanges.Situation( PreSettings.GlobalRange * 1000, PreSettings.GlobalRange * 1000 * 1.05f, PreSettings.GlobalRange * 1000 * 1.10f, PreSettings.GlobalRange * 1000 * 0.99f); _baseRanges = new VesselRanges { escaping = _globalSituation, flying = _globalSituation, landed = _globalSituation, orbit = _globalSituation, prelaunch = _globalSituation, splashed = _globalSituation, subOrbital = _globalSituation }; ApplyRangesToVessels(updatingFromUi); }
/// <summary> /// This method will reduce the load/unload distances using a closer range to avoid issues. /// </summary> private void UnloadLandedVessels() { var vesselsCount = FlightGlobals.Vessels.Count; ScreenMessages.PostScreenMessage( "[PhysicsRangeExtender] Unloading landed vessels during active orbital fly.", 3f, ScreenMessageStyle.UPPER_CENTER); for (var i = 0; i < vesselsCount; i++) { if (FlightGlobals.Vessels[i].LandedOrSplashed) { var safeSituation = new VesselRanges.Situation( load: FlightGlobals.ActiveVessel.orbit.referenceBody.inverseRotThresholdAltitude * 0.90f, unload: FlightGlobals.ActiveVessel.orbit.referenceBody.inverseRotThresholdAltitude * 0.95f, pack: PreSettings.GlobalRange * 1000 * 1.10f, unpack: PreSettings.GlobalRange * 1000 * 0.99f); var newRanges = new VesselRanges { escaping = _globalSituation, flying = _globalSituation, landed = safeSituation, orbit = _globalSituation, prelaunch = safeSituation, splashed = safeSituation, subOrbital = _globalSituation }; FlightGlobals.Vessels[i].vesselRanges = newRanges; } } }
public static void SetVesselRanges(Vessel vessel, float load, float unload, float pack, float unpack, float revertAltitude) { ModuleRangeReverter moduleRangeReverter; if (!vessel.rootPart.Modules.Contains <ModuleRangeReverter>()) { moduleRangeReverter = (ModuleRangeReverter)vessel.rootPart.AddModule("ModuleRangeReverter"); moduleRangeReverter.originalRanges = vessel.vesselRanges; } else { moduleRangeReverter = (ModuleRangeReverter)vessel.rootPart.Modules.GetModule <ModuleRangeReverter>(); } moduleRangeReverter.revertAltitude = revertAltitude; VesselRanges newRanges = new VesselRanges(vessel.vesselRanges); newRanges.escaping = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.flying = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.landed = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.orbit = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.prelaunch = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.splashed = new VesselRanges.Situation(load, unload, pack, unpack); newRanges.subOrbital = new VesselRanges.Situation(load, unload, pack, unpack); vessel.vesselRanges = newRanges; }
public static VesselRanges SetUnpackDistance(this Vessel vessel, float distance, bool ifGreater = false) { var doNotCompare = !ifGreater; var pack = distance * 1.5f; var unpack = distance; var load = distance * 2f; var unload = distance * 2.5f; var orig_ranges = new VesselRanges(vessel.vesselRanges); foreach (var fi in situation_ranges) { if (!(fi.GetValue(vessel.vesselRanges) is VesselRanges.Situation sit)) { continue; } if (doNotCompare || sit.pack < pack) { sit.pack = pack; } if (doNotCompare || sit.unpack < unpack) { sit.unpack = unpack; } if (doNotCompare || sit.unload < unload) { sit.unload = unload; } if (doNotCompare || sit.load < load) { sit.load = load; } } return(orig_ranges); }
public void RestoreUnpackDistance() { if (saved_ranges == null) { return; } vessel.vesselRanges = new VesselRanges(saved_ranges); saved_ranges = null; }
public void SetRange(Vessel v, float _range) { float _modRange = 10000; if (OrXHoloKron.instance.bdaChallenge) { _modRange = _preLoadRange * 1000; try { var pqs = FlightGlobals.currentMainBody.pqsController; if (pqs != null) { if (pqs.horizonDistance <= _modRange) { pqs.horizonDistance = _modRange; pqs.maxDetailDistance = _modRange; pqs.minDetailDistance = _modRange; pqs.visRadSeaLevelValue = 200; pqs.collapseSeaLevelValue = 200; FloatingOrigin.fetch.threshold = _modRange; FloatingOrigin.fetch.thresholdSqr = _modRange * _modRange; Debug.Log("[OrX Log Set Range] === FLOATING ORIGIN THRESHOLD: " + FloatingOrigin.fetch.threshold + " meters ====="); } } } catch { } if (v.vesselRanges.landed.load <= _modRange * 950f) { _vesselLanded = new VesselRanges.Situation(_modRange, _modRange, _modRange, _modRange); _vesselFlying = new VesselRanges.Situation(_modRange * 4, _modRange * 4, _modRange * 4, _modRange * 4); _vesselOther = new VesselRanges.Situation(_modRange * 10, _modRange * 10, _modRange * 10, _modRange * 10); _vesselRanges = new VesselRanges { escaping = _vesselOther, flying = _vesselFlying, landed = _vesselLanded, orbit = _vesselOther, prelaunch = _vesselLanded, splashed = _vesselFlying, subOrbital = _vesselOther }; v.vesselRanges = new VesselRanges(_vesselRanges); } } else { SetGoalRange(v); } }
public void SetGoalRange(Vessel v) { _vesselRanges = new VesselRanges { escaping = new VesselRanges.Situation(10000, 10000, 10000, 10000), flying = new VesselRanges.Situation(10000, 10000, 10000, 10000), landed = new VesselRanges.Situation(10000, 10000, 10000, 10000), orbit = new VesselRanges.Situation(10000, 10000, 10000, 10000), prelaunch = new VesselRanges.Situation(10000, 10000, 10000, 10000), splashed = new VesselRanges.Situation(10000, 10000, 10000, 10000), subOrbital = new VesselRanges.Situation(10000, 10000, 10000, 10000) }; v.vesselRanges = new VesselRanges(_vesselRanges); }
public void SetUnpackDistance(float distance) { if (saved_ranges == null) { saved_ranges = new VesselRanges(vessel.vesselRanges); } foreach (var fi in situation_ranges) { var sit = fi.GetValue(vessel.vesselRanges) as VesselRanges.Situation; if (sit == null) { continue; } sit.pack = distance * 1.5f; sit.unpack = distance; sit.unload = distance * 2.5f; sit.load = distance * 2f; } }
public static void UpdateRanges(bool updatingFromUi = false) { Debug.Log("Updating ranges"); FloatingOrigin.fetch.threshold = Mathf.Pow(PreSettings.GlobalRange * 1000 * 1.20f, 2); _globalSituation = new VesselRanges.Situation( load: PreSettings.GlobalRange * 1000, unload: PreSettings.GlobalRange * 1000 * 1.05f, pack: PreSettings.GlobalRange * 1000 * 1.10f, unpack: PreSettings.GlobalRange * 1000 * 0.99f); _baseRanges = new VesselRanges { escaping = _globalSituation, flying = _globalSituation, landed = _globalSituation, orbit = _globalSituation, prelaunch = _globalSituation, splashed = _globalSituation, subOrbital = _globalSituation }; ApplyRangesToVessels(updatingFromUi); }
public SituationLoadDistanceValue(VesselRanges.Situation situation) { situationValue = situation; InitializeSuffixes(); }
public LoadDistanceValue(VesselRanges ranges) { vesselRanges = ranges; InitializeSuffixes(); }
public void RestoreUnpackDistance() { if(saved_ranges == null) return; vessel.vesselRanges = saved_ranges; saved_ranges = null; }
public void SetUnpackDistance(float distance) { saved_ranges = vessel.SetUnpackDistance(distance); }
private VesselRanges.Situation ClampedSituationLanded(VesselRanges.Situation input, VesselRanges.Situation minSituation) { float maxLanded = 11000; float load = Mathf.Clamp(input.load, minSituation.load, maxLanded*.9f*.9f); float unload = Mathf.Clamp(input.unload, minSituation.unload, maxLanded*.9f); float pack = Mathf.Clamp(input.pack, minSituation.pack, maxLanded); float unpack = Mathf.Clamp(input.unpack, minSituation.unpack, maxLanded*.9f*.9f*.9f); VesselRanges.Situation output = new VesselRanges.Situation(load, unload, pack, unpack); return output; }
private VesselRanges.Situation ClampedSituation(VesselRanges.Situation input, VesselRanges.Situation minSituation) { float load = Mathf.Clamp(input.load, minSituation.load, 81000); float unload = Mathf.Clamp(input.unload, minSituation.unload, 90000); float pack = Mathf.Clamp(input.pack, minSituation.pack, 100000); float unpack = Mathf.Clamp(input.unpack, minSituation.unpack, 72900); VesselRanges.Situation output = new VesselRanges.Situation(load, unload, pack, unpack); return output; }