예제 #1
0
        /// <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.
            }
        }
예제 #2
0
 /// <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
     }
 }
예제 #3
0
 /// <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;
 }
예제 #4
0
 /// <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
     }
 }
예제 #5
0
 /// <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.
 }
예제 #6
0
 /// <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.
 }
예제 #7
0
 /// <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;
 }
예제 #8
0
        /// <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.
            }
        }
예제 #9
0
 /// <summary>
 /// Initialisiert die Sonne und Ihre Position und Laufbahn
 /// </summary>
 public override void Init()
 {
     Sun = new o2Sun();
     suncount = 0;
     Objects.Add(Sun);
 }
예제 #10
0
 /// <summary>
 /// Initialisiert die Sonne und Ihre Position und Laufbahn
 /// </summary>
 public override void Init()
 {
     Sun      = new o2Sun();
     suncount = 0;
     Objects.Add(Sun);
 }