/// <summary> /// eine von aussen auf die Hauptsonne zufliegende Sonne mit Planeten wird erstellt /// </summary> private void AddComingSun() { if (suncount < _Light.Length - 1) { float Massfak = (float)rnd.Next(1, 3) * 5 * PlanetAdvanced2.initSunMass; float Mass = (float)rnd.NextDouble() * Massfak; Point3 Pos = RndPosToSun(Sun, true, true); Pos = (Pos - Sun.Position) * (float)(rnd.Next(10, 20)); // Position weiter von der Sonne entfernen. Point3 Dir = new Point3(); Dir.assign(Sun.Position - Pos); // Bewegung auf die Sonne zu. Dir.x += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.y += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.z += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.Normalize(); // BewegungsRichtung normalisieren. Dir *= (float)((rnd.NextDouble() * 3) + 2f) * 10f; // Speed zurechnen; float[] Color = { (float)rnd.NextDouble(), (float)rnd.NextDouble(), (float)rnd.NextDouble() }; suncount++; o2Sun __Sun = new o2Sun(Pos, Dir, Mass, Color, _Light[suncount]); Objects.Add(__Sun); AddPlanet(__Sun, rnd.Next(1, 9)); // 1 bis 8 Planeten auf die Umlaufbahn der neuen Sonne bringen. } }
/// <summary> /// Ein Planet soll zu einer Sonne werden ab einer bestimmten Masse /// </summary> /// <param name="Planet2Convert">zu verändernder Planet</param> private void ConvertPlanet2Sun(o2Object Planet2Convert) { if ( (suncount < PlanetAdvanced2._Light.Length - 1) && (Planet2Convert.Mass > PlanetAdvanced3.initSunMass * 0.5)) { suncount++; // Sonnenzähler erhöhen. (wichtig wegen Lichtquellen); Sun = new o2Sun(Planet2Convert.Position, Planet2Convert.Direction, Planet2Convert.Mass, Planet2Convert.Farbe, PlanetAdvanced2._Light[suncount]); Objects.Add(Sun); Objects.Remove(Planet2Convert); // Convertierten Planeten löschen } }
/// <summary> /// Initialisiert die Sonne und Ihre Position und Laufbahn /// </summary> public override void Init() { t1 = new MyThread(Objects0, this); t2 = new MyThread(Objects1, this); t3 = new MyThread(Objects2, this); t4 = new MyThread(Objects3, this); PlanetAdvanced2.dt = 1f; Sun = null; Objects.Clear(); // bei ausblenden, werden alle Objekte zerstört und System wird neu initialisiert. Cam.X = 0; Cam.Y = 0; Cam.Z = 250000; DefaultLight = LightSource.bluelight; }
/// <summary> /// Initialisiert die Sonne und Ihre Position und Laufbahn /// </summary> public override void Init() { PlanetAdvanced2.dt = 1f; Sun = null; Objects.Clear(); // bei ausblenden, werden alle Objekte zerstört und System wird neu initialisiert. }
/// <summary> /// eine von aussen auf die Hauptsonne zufliegende Sonne mit Planeten wird erstellt /// </summary> private void AddComingSun() { if (suncount < _Light.Length - 1) { float Massfak = (float)rnd.Next(1, 3) * 5 * PlanetAdvanced2.initSunMass; float Mass = (float)rnd.NextDouble() * Massfak; Point3 Pos = RndPosToSun(Sun, true,true); Pos = (Pos - Sun.Position) * (float)(rnd.Next(10, 20)); // Position weiter von der Sonne entfernen. Point3 Dir = new Point3(); Dir.assign(Sun.Position - Pos); // Bewegung auf die Sonne zu. Dir.x += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.y += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.z += (float)rnd.NextDouble(); // ein wenig Varianz in der Bewegung. Dir.Normalize(); // BewegungsRichtung normalisieren. Dir *= (float)((rnd.NextDouble() * 3) + 2f) * 10f; // Speed zurechnen; float[] Color = { (float)rnd.NextDouble(), (float)rnd.NextDouble(), (float)rnd.NextDouble() }; suncount++; o2Sun __Sun = new o2Sun(Pos, Dir, Mass, Color, _Light[suncount]); Objects.Add(__Sun); AddPlanet(__Sun, rnd.Next(1, 9)); // 1 bis 8 Planeten auf die Umlaufbahn der neuen Sonne bringen. } }
/// <summary> /// Initialisiert die Sonne und Ihre Position und Laufbahn /// </summary> public override void Init() { Sun = new o2Sun(); suncount = 0; Objects.Add(Sun); }