function generateOrbitalObject({ parent, type, id, distance, orbitTilt }) {
const seed = [...parent.seed, type, id];
const name = generateName(seed, type);
let satelliteCount = 0;
if (settings[type].satelliteCountRange[1]) {
satelliteCount = getSeededInt(
[...seed, "satelliteCount"],
settings[type].satelliteCountRange[0],
settings[type].satelliteCountRange[1]
);
}
let radius = undefined;
if (settings[type].radiusRange) {
radius = getSeededFloat(
[...seed, "radius"],
settings[type].radiusRange[0],
settings[type].radiusRange[1]
);
}
const solarMass = getSeededFloat(
[...seed, "solarMass"],
settings[type].solarMassRange[0],
settings[type].solarMassRange[1]
);
let temperature = undefined;
if (settings[type].temperatureRange) {
temperature = getSeededFloat(
[...seed, "temperature"],
settings[type].temperatureRange[0],
settings[type].temperatureRange[1]
);
}
const satelliteOrbits =
settings[type].satelliteCountRange[1] > 0
? generateSatelliteOrbits(seed, type, satelliteCount)
: undefined;
return {
parentSeed: parent.seed || [],
parentId: parent.seed[parent.seed.length - 1],
seed,
type,
id,
distance,
orbitTilt,
name,
solarMass,
radius,
temperature,
satelliteCount,
satelliteOrbits
};
}