Example #1
0
        public override void Start()
        {
            o = new Orbit(5, 0.8, 2, 200, 2, true);
            OrbitLines ol = gameObject.AddComponent <OrbitLines>();

            ol.SetOrbit(o);
        }
Example #2
0
    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);
    }
Example #3
0
 public static void CalculateOrbitLines(OrbitLines.OrbitLinesPack orbitLines, List <Orbit> orbits)
 {
     if (orbits.Count == 0)
     {
         orbitLines.HideAll();
         return;
     }
     OrbitLines.DrawKeplerOrbits(orbitLines, orbits);
 }
Example #4
0
 public void DrawOrbitLines(List <Orbit> mainVesselOrbits, List <Orbit> selectedVesselOrbits)
 {
     OrbitLines.CalculateOrbitLines(this.mainLines, mainVesselOrbits);
     OrbitLines.CalculateOrbitLines(this.selectedLines, selectedVesselOrbits);
 }