public override void Start() { o = new Orbit(5, 0.8, 2, 200, 2, true); OrbitLines ol = gameObject.AddComponent <OrbitLines>(); ol.SetOrbit(o); }
public static void DrawKeplerOrbits(OrbitLines.OrbitLinesPack orbitLines, List <Orbit> orbits) { orbitLines.hidden = false; bool ellipticalActive = false; bool[] array = new bool[3]; int num = 0; while (num < orbits.Count && num < 3) { if (orbits[num].eccentricity > 1.0 || orbits[num].eccentricity <= 0.9999999) { Orbit.Type orbitType = orbits[num].orbitType; if (orbitType != Orbit.Type.Eternal) { if (orbitType != Orbit.Type.Escape) { if (orbitType == Orbit.Type.Encounter) { orbitLines.procedual[num].material = Ref.map.orbitLineMaterials[orbits[num].planet.type]; double newTime = Math.Max(Ref.controller.globalTime, orbits[num].timeIn); orbitLines.procedual[num].SetPositions(orbits[num].GenerateOrbitLinePoints(orbits[num].GetTrueAnomalyOut(newTime), orbits[num].endTrueAnomaly + (double)(12.566371f * (float)Math.Sign(orbits[num].meanMotion)), 200)); orbitLines.procedual[num].startColor = new Color(1f, 1f, 1f, (num <= 0) ? 0.05f : 0.2f); OrbitLines.SetParentAndPosition(orbitLines.procedual[num].transform.parent, Ref.map.mapRefs[orbits[num].planet].holder, Vector3.zero); array[num] = true; } } else { orbitLines.procedual[num].material = Ref.map.orbitLineMaterials[orbits[num].planet.type]; orbitLines.procedual[num].SetPositions(orbits[num].GenerateOrbitLinePoints(-orbits[num].endTrueAnomaly, orbits[num].endTrueAnomaly, 200)); orbitLines.procedual[num].startColor = new Color(1f, 1f, 1f, 0.05f); OrbitLines.SetParentAndPosition(orbitLines.procedual[num].transform.parent, Ref.map.mapRefs[orbits[num].planet].holder, Vector3.zero); array[num] = true; } } else { orbitLines.elliptical.material = Ref.map.orbitLineMaterials[orbits[num].planet.type]; orbitLines.elliptical.startColor = new Color(1f, 1f, 1f, 0.2f); orbitLines.elliptical.transform.parent.localEulerAngles = new Vector3(0f, 0f, (float)orbits[num].argumentOfPeriapsis * 57.29578f); double num2 = Math.Sqrt(1.0 - orbits[num].eccentricity * orbits[num].eccentricity); double num3 = (num2 <= 0.0) ? 0.0 : (orbits[num].semiMajorAxis * num2); orbitLines.elliptical.transform.parent.localScale = new Vector3((float)(orbits[num].semiMajorAxis / 10000.0), (float)(num3 / 10000.0 * (double)(-(double)Math.Sign(orbits[num].meanMotion))), 1f); if (num > 0 && orbits[num - 1].orbitType == Orbit.Type.Escape) { orbitLines.elliptical.startColor = new Color(1f, 1f, 1f, 0.05f); orbitLines.elliptical.transform.localEulerAngles = new Vector3(0f, 0f, (float)orbits[num].GetEccentricAnomalyOut(orbits[num - 1].orbitEndTime) * 57.29578f * (float)(-(float)Math.Sign(orbits[num].meanMotion))); } Vector3 localPosition = new Vector3(Mathf.Cos((float)orbits[num].argumentOfPeriapsis), Mathf.Sin((float)orbits[num].argumentOfPeriapsis), 0f) * (float)((orbits[num].periapsis - orbits[num].apoapsis) / 20000.0); OrbitLines.SetParentAndPosition(orbitLines.elliptical.transform.parent, Ref.map.mapRefs[orbits[num].planet].holder, localPosition); ellipticalActive = true; } } num++; } orbitLines.SetActive(ellipticalActive, array); }
public static void CalculateOrbitLines(OrbitLines.OrbitLinesPack orbitLines, List <Orbit> orbits) { if (orbits.Count == 0) { orbitLines.HideAll(); return; } OrbitLines.DrawKeplerOrbits(orbitLines, orbits); }
public void DrawOrbitLines(List <Orbit> mainVesselOrbits, List <Orbit> selectedVesselOrbits) { OrbitLines.CalculateOrbitLines(this.mainLines, mainVesselOrbits); OrbitLines.CalculateOrbitLines(this.selectedLines, selectedVesselOrbits); }