Exemplo n.º 1
0
    public SolarSystem(SolarSystemData Data)
    {
        Suns            = new Sun[Data.Suns.Length];
        OrbitingPlanets = new Planet[Data.Planets.Length];

        systemObj      = new GameObject();
        systemObj.name = Data.Name;
        systemObj.transform.position = Vector3.zero;
        systemObj.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, true);

        // Create Suns, Planets and their Moons
        for (int i = 0; i < Suns.Length; i++)
        {
            SunData sd  = Data.Suns[i];
            Sun     sun = new Sun(sd.Name, sd.Type, sd.Color, sd.Radius, sd.Mass, sd.Age, systemObj);
            sun.SetPosition(sd.Position);
            Suns[i] = sun;
        }
        for (int i = 0; i < OrbitingPlanets.Length; i++)
        {
            PlanetData pd    = Data.Planets[i];
            Orbit      orbit = Orbit.Create(pd.Apoapsis, pd.Periapsis, Suns[pd.OrbitingIndex]);
            systemLogScaleBase = systemLogScaleBase > Mathf.Log(orbit.SemiMajor) ? Mathf.Log(orbit.SemiMajor) : systemLogScaleBase;
            Debug.Log(pd.Name + " Orbit info, T: " + orbit.Period + " Apoapsis: " + orbit.ApoApsis + " Periapsis: " + orbit.PeriApsis);
            Planet planet = new Planet(pd.Name, pd.Type, pd.Color, pd.Radius, pd.Mass, orbit, Suns[pd.OrbitingIndex].GameObject);
            if (pd.Moons != null)
            {
                int nr = pd.Moons.Length;
                planet.Moons = new Moon[nr];
                for (int j = 0; j < nr; j++)
                {
                    MoonData md        = pd.Moons[j];
                    Orbit    moonOrbit = Orbit.Create(md.Apoapsis, md.Periapsis, planet);
                    planet.Moons[j] = new Moon(md.Name, md.Type, md.Color, md.Radius, md.Mass, moonOrbit, md.Approachable, planet.GameObject);
                }
            }
            OrbitingPlanets[i] = planet;
        }
        Scaling.LogBase  = Mathf.Floor(systemLogScaleBase);
        TimeAcceleration = Scaling.SpeedUpFactor;
        SetOrbitingPositions(0);
    }