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