public static ConfigNode LocalMasCon(Vessel vessel) { ConfigNode LocalGravityMap = ThisGravityMap(vessel.orbitDriver.orbit.referenceBody.GetName()); ConfigNode Local = new ConfigNode(); if (LocalGravityMap.nodes.Count > 0) { double VesselLat = vessel.latitude; double VesselLong = vessel.longitude; bool LatitudeWithin = false; bool LongitudeWithin = false; foreach (ConfigNode MasCon in LocalGravityMap.GetNodes("MASCON")) { double CentreGal = double.Parse(MasCon.GetValue("centreGal")); double CentreLat = double.Parse(MasCon.GetValue("centreLat")); double CentreLong = double.Parse(MasCon.GetValue("centreLong")); double DegDiam = double.Parse(MasCon.GetValue("diamdeg")); double DegRad = DegDiam / 2.0; double UpperBoundLat = CentreLat + DegRad; double LowerBoundLat = CentreLat - DegRad; double UpperBoundLong = CentreLong + DegRad; double LowerBoundLong = CentreLong - DegRad; if (UpperBoundLat > 90) { UpperBoundLat = Math.Abs(UpperBoundLat - 180); } if (LowerBoundLat < 90) { LowerBoundLat = -1 * (UpperBoundLat + 180); } if (UpperBoundLong > 180) { UpperBoundLong = UpperBoundLong - 360; } if (UpperBoundLong < -180) { UpperBoundLong = UpperBoundLong + 360; } if (IsBetween(VesselLat, UpperBoundLat, LowerBoundLat)) { LatitudeWithin = true; } if (IsBetween(VesselLong, UpperBoundLong, LowerBoundLong)) { LongitudeWithin = true; } if (LatitudeWithin == true && LongitudeWithin == true) { Local = MasCon; break; } } } return(Local); }
public static bool CheckMasConProximity(Vessel vessel) { bool WithinEffectRange = false; if (vessel.orbitDriver.orbit.referenceBody.GetName() == "Earth" || vessel.orbitDriver.orbit.referenceBody.GetName() == "Kerbin" || vessel.orbitDriver.orbit.referenceBody.GetName() == "Moon") // { ConfigNode LocalGravityMap = ThisGravityMap(vessel.orbitDriver.orbit.referenceBody.GetName()); if (LocalGravityMap.nodes.Count > 0) { double VesselLat = vessel.latitude; double VesselLong = vessel.longitude; bool LatitudeWithin = false; bool LongitudeWithin = false; foreach (ConfigNode MasCon in LocalGravityMap.GetNodes("MASCON")) { double CentreGal = double.Parse(MasCon.GetValue("centreGal")); double CentreLat = double.Parse(MasCon.GetValue("centreLat")); double CentreLong = double.Parse(MasCon.GetValue("centreLong")); double DegDiam = double.Parse(MasCon.GetValue("diamdeg")); double DegRad = DegDiam / 2.0; double UpperBoundLat = CentreLat + DegRad; double LowerBoundLat = CentreLat - DegRad; double UpperBoundLong = CentreLong + DegRad; double LowerBoundLong = CentreLong - DegRad; if (UpperBoundLat > 90) { UpperBoundLat = Math.Abs(UpperBoundLat - 180); } if (LowerBoundLat < 90) { LowerBoundLat = -1 * (UpperBoundLat + 180); } if (UpperBoundLong > 180) { UpperBoundLong = UpperBoundLong - 360; } if (UpperBoundLong < -180) { UpperBoundLong = UpperBoundLong + 360; } if (IsBetween(VesselLat, UpperBoundLat, LowerBoundLat)) { LatitudeWithin = true; } if (IsBetween(VesselLong, UpperBoundLong, LowerBoundLong)) { LongitudeWithin = true; } if (LatitudeWithin && LongitudeWithin) { break; } } if (LatitudeWithin && LongitudeWithin) { WithinEffectRange = true; } } } return(WithinEffectRange); }