diff --git a/src/RealAntennasProject/Physics.cs b/src/RealAntennasProject/Physics.cs index 87c049f..9d6a9ad 100644 --- a/src/RealAntennasProject/Physics.cs +++ b/src/RealAntennasProject/Physics.cs @@ -227,8 +227,8 @@ public static float NoiseTemperature(RealAntenna rx, Vector3d origin) float amt = AntennaMicrowaveTemp(rx); float atmos = AtmosphericTemp(rx, origin); float cosmic = CosmicBackgroundTemp(rx, origin); - // Home Stations are directional, but treated as always pointing towards the peer. - float allbody = rx.ParentNode.isHome ? AllBodyTemps(rx, origin - rx.Position) : AllBodyTemps(rx, rx.ToTarget); + // Tracking antennas always point towards the peer. + float allbody = rx.IsTracking ? AllBodyTemps(rx, origin - rx.Position) : AllBodyTemps(rx, rx.ToTarget); float total = amt + atmos + cosmic + allbody; // Debug.LogFormat("NoiseTemp: Antenna {0:F2} Atmos: {1:F2} Cosmic: {2:F2} Bodies: {3:F2} Total: {4:F2}", amt, atmos, cosmic, allbody, total); return total; @@ -304,7 +304,7 @@ private static float CosmicBackgroundTemp(RealAntenna rx, Vector3d origin) temp = CosmicBackgroundTemp(new double3(normal.x, normal.y, normal.z), new double3(to_origin.x, to_origin.y, to_origin.z), rx.Frequency, - rxNode.isHome); + rxNode.isGroundStation); } return temp; @@ -320,7 +320,7 @@ public static float AllBodyTemps(RealAntenna rx, Vector3d rxPointing) // Note there are ~33 bodies in RSS. foreach (CelestialBody body in FlightGlobals.Bodies) { - if (!node.isHome || !node.ParentBody.Equals(body)) + if (!node.isGroundStation || !node.ParentBody.Equals(body)) { temp += BodyNoiseTemp(rx, body, rxPointing); } diff --git a/src/RealAntennasProject/PlannerGUI.cs b/src/RealAntennasProject/PlannerGUI.cs index 4b6175e..84e3eee 100644 --- a/src/RealAntennasProject/PlannerGUI.cs +++ b/src/RealAntennasProject/PlannerGUI.cs @@ -349,7 +349,7 @@ private void FireOnce() var defaultPos = home.GetWorldSurfacePosition(0, 0, 100); var defaultOffset = home.GetWorldSurfacePosition(0, 0, 1e6); var defaultDir = (defaultOffset - defaultPos).normalized; - var offset = fixedNode.isHome ? 1e8 : 0; + var offset = ((fixedAntenna.ParentNode as RACommNode)?.isGroundStation ?? false) ? 1e8 : 0; fixedNode.transform.SetPositionAndRotation(defaultPos + offset * defaultDir, Quaternion.identity); primaryNearNode.transform.SetPositionAndRotation(defaultPos + (offset + distanceMin) * defaultDir, Quaternion.identity); primaryFarNode.transform.SetPositionAndRotation(defaultPos + (offset + distanceMax) * defaultDir, Quaternion.identity); @@ -361,6 +361,9 @@ private void FireOnce() primaryNearNode.ParentBody = (primaryAntenna.ParentNode as RACommNode)?.ParentBody; primaryFarNode.ParentBody = (primaryAntenna.ParentNode as RACommNode)?.ParentBody; fixedNode.ParentBody = (fixedAntenna.ParentNode as RACommNode)?.ParentBody; + primaryNearNode.ParentVessel = (primaryAntenna.ParentNode as RACommNode)?.ParentVessel; // Copy this info over as well in case anything needs it. + primaryFarNode.ParentVessel = (primaryAntenna.ParentNode as RACommNode)?.ParentVessel; + fixedNode.ParentVessel = (fixedAntenna.ParentNode as RACommNode)?.ParentVessel; var nodes = new List { fixedNode, primaryNearNode }; var bodies = new List { Planetarium.fetch.Home }; diff --git a/src/RealAntennasProject/Precompute/FilteringJobs.cs b/src/RealAntennasProject/Precompute/FilteringJobs.cs index a85d9c4..260e135 100644 --- a/src/RealAntennasProject/Precompute/FilteringJobs.cs +++ b/src/RealAntennasProject/Precompute/FilteringJobs.cs @@ -18,7 +18,7 @@ public void Execute(int index) int y = pairs[index].y; CNInfo a = nodes[x]; CNInfo b = nodes[y]; - valid[index] = x != y && !(a.isHome && b.isHome) && a.canComm && b.canComm; + valid[index] = x != y && !(a.isGroundStation && b.isGroundStation) && a.canComm && b.canComm; } } diff --git a/src/RealAntennasProject/Precompute/Precompute.cs b/src/RealAntennasProject/Precompute/Precompute.cs index 199ff00..3b27f36 100644 --- a/src/RealAntennasProject/Precompute/Precompute.cs +++ b/src/RealAntennasProject/Precompute/Precompute.cs @@ -28,7 +28,7 @@ public struct CNInfo { internal double3 position; internal double3 surfaceNormal; - internal bool isHome; + internal bool isGroundStation; internal bool canComm; } @@ -682,7 +682,7 @@ private void SetupCommNodes(out NativeList infos, List infos.Add(new CNInfo() { position = new double3(node.precisePosition.x, node.precisePosition.y, node.precisePosition.z), - isHome = node.isHome, + isGroundStation = node.isGroundStation, canComm = forceValid || node.CanComm(), surfaceNormal = new double3(surfN.x, surfN.y, surfN.z), //name = $"{node}", diff --git a/src/RealAntennasProject/RACommNetwork.cs b/src/RealAntennasProject/RACommNetwork.cs index 866f941..742c44d 100644 --- a/src/RealAntennasProject/RACommNetwork.cs +++ b/src/RealAntennasProject/RACommNetwork.cs @@ -22,6 +22,8 @@ public class RACommNetwork : CommNetwork public List Nodes { get => nodes; } public RealAntenna DebugAntenna => connectionDebugger?.antenna; public Network.ConnectionDebugger connectionDebugger = null; + public readonly EventVoid NetworkUpdateComplete = new EventVoid("Network Rebuild Complete"); + public double LastUpdateUT { get; private set; } = 0; public override CommNode Add(CommNode conn) { @@ -164,6 +166,8 @@ public virtual void CompleteRebuild() PostUpdateNodes(); if (OnNetworkPostUpdate is Action) OnNetworkPostUpdate(); + LastUpdateUT = Planetarium.GetUniversalTime(); + NetworkUpdateComplete.Fire(); tempWatch.Stop(); Profiler.EndSample(); (RACommNetScenario.Instance as RACommNetScenario).metrics.AddMeasurement("Precompute LateRebuild", PrecomputeLateWatch.Elapsed.TotalMilliseconds); diff --git a/src/RealAntennasProject/RACommNode.cs b/src/RealAntennasProject/RACommNode.cs index e8ddbdb..755cc6a 100644 --- a/src/RealAntennasProject/RACommNode.cs +++ b/src/RealAntennasProject/RACommNode.cs @@ -10,6 +10,8 @@ public class RACommNode : CommNet.CommNode public List RAAntennaList { get; set; } public CelestialBody ParentBody { get; set; } public Vessel ParentVessel { get; set; } + public bool isGroundStation => !(ParentBody is null); + // Skopos stations have isHome set to false, hence the need for this check. public RACommNode() : base() { } public RACommNode(Transform t) : base(t) diff --git a/src/RealAntennasProject/RealAntennasUI.cs b/src/RealAntennasProject/RealAntennasUI.cs index 74177a2..46c8818 100644 --- a/src/RealAntennasProject/RealAntennasUI.cs +++ b/src/RealAntennasProject/RealAntennasUI.cs @@ -128,7 +128,7 @@ private void VesselCounts(out int vessels, out int groundStations, out int anten net = $"{racn}"; foreach (RACommNode node in racn.Nodes) { - if (node.isHome) + if (node.isGroundStation) { groundStations++; }