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); }