Ejemplo n.º 1
0
        public static StellarSystem GenerateStellarSystem(string systemName, SystemGenerationOptions genOptions = null, StellarBody sun = null, IEnumerable <Seed> seedSystem = null)
        {
            genOptions ??= new SystemGenerationOptions();

            var phy = new BodyPhysics();

            sun ??= new Star()
            {
                Science = phy
            };
            var useRandomTilt = seedSystem == null;

            var accrete = new Accrete(Ratio.FromDecimalFractions(genOptions.CloudEccentricity),
                                      Ratio.FromDecimalFractions(genOptions.GasDensityRatio),
                                      Ratio.FromDecimalFractions(genOptions.DustDensityCoeff));
            double outer_planet_limit = GetOuterLimit(sun);
            double outer_dust_limit   = GetStellarDustLimit(sun.Mass.SolarMasses);

            seedSystem = seedSystem ?? accrete.CreateSeeds(sun.Mass,
                                                           sun.Luminosity, Length.FromAstronomicalUnits(0.0), Length.FromAstronomicalUnits(outer_dust_limit), Length.FromAstronomicalUnits(outer_planet_limit), Length.Zero);

            var planets = GeneratePlanets(sun, seedSystem, useRandomTilt, genOptions);

            return(new StellarSystem()
            {
                Options = genOptions,
                Planets = planets,
                Name = systemName,
                Star = sun
            });
        }
Ejemplo n.º 2
0
        public static StellarGroup GenerateStellarGroup(int seed, int numSystems, SystemGenerationOptions genOptions = null)
        {
            Extensions.InitRandomSeed(seed);
            genOptions = genOptions ?? SystemGenerationOptions.DefaultOptions;
            var group = new StellarGroup()
            {
                Seed = seed, GenOptions = genOptions, Systems = new List <StellarSystem>()
            };

            for (var i = 0; i < numSystems; i++)
            {
                var name = string.Format("System {0}", i);
                group.Systems.Add(GenerateStellarSystem(name, genOptions));
            }
            return(group);
        }
Ejemplo n.º 3
0
        private static ICollection <SatelliteBody> GeneratePlanets(StellarBody sun, IEnumerable <Seed> seeds, bool useRandomTilt, SystemGenerationOptions genOptions)
        {
            var planets = new List <SatelliteBody>();
            var i       = 0;

            foreach (var seed in seeds)
            {
                var planetNo = i + 1;                 // start counting planets at 1
                i += 1;

                string planet_id = planetNo.ToString();

                var planet = new Planet(seed, sun, sun);
                planets.Add(planet);
            }

            return(planets);
        }