/// <summary> /// Determines if relayOne is in range of the specified relayTwo. /// </summary> /// <returns><c>true</c> if relayOne is in range of the specifie relayTwo; otherwise, <c>false</c>.</returns> /// <param name="relayOne">Relay one.</param> /// <param name="relayTwo">Relay two.</param> public static bool IsInRangeOf(this AntennaRelay relayOne, IAntennaRelay relayTwo) { if (relayOne == null || relayTwo == null) { return(false); } return(relayOne.SqrDistanceTo(relayTwo) <= relayOne.MaxLinkSqrDistanceTo(relayTwo)); }
/// <summary> /// Determines if relayOne is in range of the specified body. /// </summary> /// <returns><c>true</c> if relayOne is in range of the specified body; otherwise, <c>false</c>.</returns> /// <param name="relayOne">Relay one.</param> /// <param name="body">Body.</param> public static bool IsInRangeOf(this AntennaRelay relayOne, CelestialBody body) { if (relayOne == null || body == null) { return(false); } return(relayOne.SqrDistanceTo(body) <= relayOne.MaxLinkSqrDistanceTo(body)); }
public static void LogDebug(this AntennaRelay relay, string msg) { using (var sb = ToadicusTools.Text.PooledStringBuilder.Get()) { sb.AppendFormat("[{0}] ", relay == null ? "NULL" : relay.ToString()); sb.Append(msg); ToadicusTools.Logging.PostDebugMessage(sb.ToString()); } }
/// <summary> /// Returns the square of the maximum link range between two relays. /// </summary> /// <returns>The maximum link range between two relays.</returns> /// <param name="relayOne">Relay one.</param> /// <param name="relayTwo">Relay two.</param> public static double MaxLinkSqrDistanceTo(this AntennaRelay relayOne, IAntennaRelay relayTwo) { if (ARConfiguration.UseAdditiveRanges) { return(relayOne.maxTransmitDistance * relayTwo.maxTransmitDistance); } else { return(relayOne.maxTransmitDistance * relayOne.maxTransmitDistance); } }
/// <summary> /// Returns the square of the maximum link range between a relay and Kerbin. /// </summary> /// <returns>The maximum link range between a relay and Kerbin.</returns> /// <param name="relayOne">Relay one.</param> /// <param name="body">A CelestialBody (must be Kerbin).</param> public static double MaxLinkSqrDistanceTo(this AntennaRelay relayOne, CelestialBody body) { if (body != AntennaRelay.Kerbin) { return(0d); } if (ARConfiguration.UseAdditiveRanges) { return(relayOne.maxTransmitDistance * ARConfiguration.KerbinRelayRange); } else { return(relayOne.maxTransmitDistance * relayOne.maxTransmitDistance); } }
/// <summary> /// PartModule OnStart override; runs at Unity Start. /// </summary> /// <param name="state">State.</param> public override void OnStart(StartState state) { this.BaseLinkCost = new RelayDataCost(this.basePacketResourceCost, this.basePacketSize); this.RecalculateMaxRange(); base.OnStart(state); if (state >= StartState.PreLaunch) { this.relay = new AntennaRelay(this); this.relay.nominalTransmitDistance = this.nominalTransmitDistance; this.relay.maxTransmitDistance = this.maxTransmitDistance; this.UImaxTransmitDistance = TextTools.Format("{0:S3}m", this.maxTransmitDistance); GameEvents.onPartActionUICreate.Add(this.onPartActionUICreate); GameEvents.onPartActionUIDismiss.Add(this.onPartActionUIDismiss); } }
/// <summary> /// PartModule OnStart override; runs at Unity Start. /// </summary> /// <param name="state">State.</param> public override void OnStart(StartState state) { this.BaseLinkCost = new RelayDataCost(this.basePacketResourceCost, this.basePacketSize); this.RecalculateMaxRange(); base.OnStart (state); if (state >= StartState.PreLaunch) { this.relay = new AntennaRelay(this); this.relay.nominalTransmitDistance = this.nominalTransmitDistance; this.relay.maxTransmitDistance = this.maxTransmitDistance; this.UImaxTransmitDistance = TextTools.Format("{0:S3}m", this.maxTransmitDistance); GameEvents.onPartActionUICreate.Add(this.onPartActionUICreate); GameEvents.onPartActionUIDismiss.Add(this.onPartActionUIDismiss); } }
/// <summary> /// Returns the distance between this IAntennaRelay and a CelestialBody /// </summary> /// <param name="relay">This <see cref="IAntennaRelay"/></param> /// <param name="body">A <see cref="CelestialBody"/></param> public static double DistanceTo(this AntennaRelay relay, CelestialBody body) { return(relay.vessel.DistanceTo(body) - body.Radius); }
/// <summary> /// Returns the distance between this IAntennaRelay and a Vessel /// </summary> /// <param name="relay">This <see cref="IAntennaRelay"/></param> /// <param name="Vessel">A <see cref="Vessel"/></param> public static double DistanceTo(this AntennaRelay relay, Vessel Vessel) { return(relay.vessel.DistanceTo(Vessel)); }
/// <summary> /// Logs an error message on behalf of this relay /// </summary> public static void LogError(this AntennaRelay relay, string msg) { ToadicusTools.Logging.PostErrorMessage("[{0}] {1}", relay.ToString(), msg); }
/// <summary> /// Logs an error message on behalf of this relay /// </summary> public static void LogError(this AntennaRelay relay, string format, params object[] args) { ToadicusTools.Logging.PostErrorMessage(string.Format("[{0}] {1}", relay.ToString(), format), args); }
/// <summary> /// Returns the square of the distance between this IAntennaRelay and another IAntennaRelay /// </summary> /// <param name="relayOne">This <see cref="IAntennaRelay"/></param> /// <param name="relayTwo">Another <see cref="IAntennaRelay"/></param> public static double SqrDistanceTo(this AntennaRelay relayOne, IAntennaRelay relayTwo) { return(relayOne.vessel.sqrDistanceTo(relayTwo.vessel)); }
/// <summary> /// Returns the square of the distance between this IAntennaRelay and a CelestialBody /// </summary> /// <param name="relay">This <see cref="IAntennaRelay"/></param> /// <param name="body">A <see cref="CelestialBody"/></param> public static double SqrDistanceTo(this AntennaRelay relay, CelestialBody body) { double dist = (relay.vessel.GetWorldPos3D() - body.position).magnitude - body.Radius; return(dist * dist); }
/// <summary> /// Returns the square of the distance between this IAntennaRelay and a Vessel /// </summary> /// <param name="relay">This <see cref="IAntennaRelay"/></param> /// <param name="vessel">A <see cref="Vessel"/></param> public static double SqrDistanceTo(this AntennaRelay relay, Vessel vessel) { return(relay.vessel.sqrDistanceTo(vessel)); }