public StarData CreateBirthStar(GalaxyData galaxy, int seed) { StarData starData = new StarData(); starData.galaxy = galaxy; starData.index = 0; starData.level = 0.0f; starData.id = 1; starData.seed = seed; starData.resourceCoef = 0.6f; Random random1 = new Random(seed); int seed1 = random1.Next(); int Seed = random1.Next(); starData.name = NameGen.RandomName(seed1); starData.overrideName = string.Empty; starData.position = VectorLF3.zero; Random random2 = new Random(Seed); double r1 = random2.NextDouble(); double r2 = random2.NextDouble(); double num1 = random2.NextDouble(); double rn = random2.NextDouble(); double rt = random2.NextDouble(); double num2 = random2.NextDouble() * 0.2 + 0.9; double num3 = Math.Pow(2.0, random2.NextDouble() * 0.4 - 0.2); float p1 = Mathf.Clamp(this.RandNormal(0.0f, 0.08f, r1, r2), -0.2f, 0.2f); starData.mass = Mathf.Pow(2f, p1); if ((double)this.specifyBirthStarMass > 0.100000001490116) { starData.mass = this.specifyBirthStarMass; } if ((double)this.specifyBirthStarAge > 9.99999974737875E-06) { starData.age = this.specifyBirthStarAge; } double d = 2.0 + 0.4 * (1.0 - (double)starData.mass); starData.lifetime = (float)(10000.0 * Math.Pow(0.1, Math.Log10((double)starData.mass * 0.5) / Math.Log10(d) + 1.0) * num2); starData.age = (float)(num1 * 0.4 + 0.3); if ((double)this.specifyBirthStarAge > 9.99999974737875E-06) { starData.age = this.specifyBirthStarAge; } float f = (float)(1.0 - (double)Mathf.Pow(Mathf.Clamp01(starData.age), 20f) * 0.5) * starData.mass; starData.temperature = (float)(Math.Pow((double)f, 0.56 + 0.14 / (Math.Log10((double)f + 4.0) / Math.Log10(5.0))) * 4450.0 + 1300.0); double num4 = Math.Log10(((double)starData.temperature - 1300.0) / 4500.0) / Math.Log10(2.6) - 0.5; if (num4 < 0.0) { num4 *= 4.0; } if (num4 > 2.0) { num4 = 2.0; } else if (num4 < -4.0) { num4 = -4.0; } starData.spectr = (ESpectrType)Mathf.RoundToInt((float)num4 + 4f); starData.color = Mathf.Clamp01((float)((num4 + 3.5) * 0.200000002980232)); starData.classFactor = (float)num4; starData.luminosity = Mathf.Pow(f, 0.7f); starData.radius = (float)(Math.Pow((double)starData.mass, 0.4) * num3); starData.acdiskRadius = 0.0f; float p2 = (float)num4 + 2f; starData.habitableRadius = Mathf.Pow(1.7f, p2) + 0.2f * Mathf.Min(1f, starData.orbitScaler); starData.lightBalanceRadius = Mathf.Pow(1.7f, p2); starData.orbitScaler = Mathf.Pow(1.35f, p2); if ((double)starData.orbitScaler < 1.0) { starData.orbitScaler = Mathf.Lerp(starData.orbitScaler, 1f, 0.6f); } this.SetStarAge(starData, starData.age, rn, rt); starData.dysonRadius = starData.orbitScaler * 0.28f; if ((double)starData.dysonRadius * 40000.0 < (double)starData.physicsRadius * 1.5) { starData.dysonRadius = (float)((double)starData.physicsRadius * 1.5 / 40000.0); } starData.uPosition = VectorLF3.zero; starData.name = NameGen.RandomStarName(seed1, starData, galaxy); starData.overrideName = string.Empty; return(starData); }