private void UpdateMockBodyColliderFix() { if ((mockBody != null) && (FlightGlobals.currentMainBody)) { try { if (FlightGlobals.currentMainBody.name.Equals(PSystemManager.Instance.systemPrefab.rootBody.celestialBody.name)) { mockBody.enabled = false; foreach (Renderer renderer in mockBody.scaledBody.GetComponentsInChildren(true)) { renderer.enabled = false; } foreach (Collider collider in mockBody.scaledBody.GetComponentsInChildren(true)) { collider.enabled = false; } foreach (ScaledSpaceFader fader in mockBody.scaledBody.GetComponentsInChildren(true)) { fader.enabled = false; } foreach (OrbitRenderer renderer in mockBody.GetComponentsInChildren(true)) { renderer.drawMode = OrbitRendererBase.DrawMode.OFF; renderer.drawIcons = OrbitRendererBase.DrawIcons.NONE; } return; } else if (!FlightGlobals.currentMainBody.name.Equals(PSystemManager.Instance.systemPrefab.rootBody.celestialBody.name)) { if (mockBody.referenceBody.orbitingBodies.Contains(mockBody)) { mockBody.referenceBody.orbitingBodies.Remove(mockBody); } mockBody.orbit.SetOrbit(KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.inclination, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.eccentricity, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.semiMajorAxis * 1.001, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.LAN, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.argumentOfPeriapsis, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.meanAnomalyAtEpoch, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.epoch, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody)); if (!KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbitingBodies.Contains(mockBody)) { KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbitingBodies.Add(mockBody); } } else if (FlightGlobals.currentMainBody.referenceBody.name.Equals(PSystemManager.Instance.systemPrefab.rootBody.celestialBody.name)) { if (mockBody.referenceBody.orbitingBodies.Contains(mockBody)) { mockBody.referenceBody.orbitingBodies.Remove(mockBody); } mockBody.orbit.SetOrbit(KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.inclination, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.eccentricity, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.semiMajorAxis * 1.001, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.LAN, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.argumentOfPeriapsis, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.meanAnomalyAtEpoch, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).orbit.epoch, KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).referenceBody); if (!KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).referenceBody.orbitingBodies.Contains(mockBody)) { KopernicusStar.GetNearestBodyOverSystenRoot(FlightGlobals.currentMainBody).referenceBody.orbitingBodies.Add(mockBody); } } mockBody.enabled = false; foreach (Renderer renderer in mockBody.scaledBody.GetComponentsInChildren(true)) { renderer.enabled = false; } foreach (Collider collider in mockBody.scaledBody.GetComponentsInChildren(true)) { collider.enabled = true; } foreach (ScaledSpaceFader fader in mockBody.scaledBody.GetComponentsInChildren(true)) { fader.enabled = false; } foreach (OrbitRenderer renderer in mockBody.GetComponentsInChildren(true)) { renderer.drawMode = OrbitRendererBase.DrawMode.OFF; renderer.drawIcons = OrbitRendererBase.DrawIcons.NONE; } } catch { } } } public static CelestialBody GetNearestBodyOverSystenRoot(CelestialBody body) { while (body?.referenceBody != null) { if (body.referenceBody.name.Equals(PSystemManager.Instance.systemPrefab.rootBody.celestialBody.name)) { break; } body = body.referenceBody; } return body; }