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); }
private void CheckIfFreezeIsNeeded(Vessel from, Vessel to) { if (from.Landed && to.situation >= Vessel.Situations.SUB_ORBITAL) { TerrainExtender.ActivateNoCrashDamage(); from.SetWorldVelocity(Vector3d.zero); VesselToFreeze.Add(from); VesselToFreeze.AddRange(FlightGlobals.VesselsLoaded.Where(x => x.LandedOrSplashed)); } }
private void FreezeLandedVesselWhenSwitching() { VesselToFreeze.RemoveAll(x => x == null); VesselToFreeze.RemoveAll(x => !x.loaded); if (VesselToFreeze.Count == 0) { TerrainExtender.DeactivateNoCrashDamage(); } VesselToFreeze.ForEach(x => x?.SetWorldVelocity(Vector3d.zero)); }
private void Start() { if (!PreSettings.ConfigLoaded) { return; } if (!PreSettings.ModEnabled) { return; } TerrainExtender.UpdateSphere(); UpdateRanges(); GameEvents.onVesselCreate.Add(ApplyPhysRange); GameEvents.onVesselLoaded.Add(ApplyPhysRangeOnLoad); GameEvents.onVesselSwitching.Add(ApplyPhysRange); GameEvents.onVesselGoOffRails.Add(ApplyPhysRange); GameEvents.onVesselSituationChange.Add(SituationChangeFixes); }