Exemple #1
0
 /// <summary>
 /// Brukes når en blimp skal ungå en annen
 /// </summary>
 /// <param name="b">en blimp</param>
 private void Reverese(Blimp b)
 {
     rotMatrix = new Matrix();
     Vector3 addVector;
     rotMatrix = Matrix.Identity * Matrix.CreateRotationY(b.Rotation);
     addVector = Vector3.Transform(new Vector3(0, 0, -1), rotMatrix);
     b.Pos += addVector * b.Speed * 2;
 }
Exemple #2
0
 /// <summary>
 /// Metode som får blimpene til å bevege seg fremover
 /// </summary>
 /// <param name="b">en blimp</param>
 private void Move(Blimp b)
 {
     rotMatrix = new Matrix();
     Vector3 addVector;
     rotMatrix = Matrix.Identity * Matrix.CreateRotationY(b.Rotation); //Finner rotasjonen til blimpen
     addVector = Vector3.Transform(new Vector3(0, 0, 1), rotMatrix); //Transformerer en vektor slik at ballongen alltid peker den veien den beveger seg.
     b.Pos += addVector * b.Speed;
 }
Exemple #3
0
 /// <summary>
 /// Ser om 2 blimper er på tur å kollidere
 /// Bruker den ytre BoundingSpheren til blimpen
 /// </summary>
 /// <param name="b">en blimp</param>
 /// <returns>kollisjons type</returns>
 private CollisionType checkCollision(Blimp b)
 {
     foreach (Blimp blimp in blimps)
     {
         if (blimp.Id != b.Id)
         {
             if (b.BlimpSphere.Contains(blimp.BlimpSphere) != ContainmentType.Disjoint)
                 return CollisionType.BlimpCollision;
         }
     }
     return CollisionType.None;
 }
Exemple #4
0
 /// <summary>
 /// Sjekker om to blimper kolliderer
 /// </summary>
 /// <param name="b">en blimp</param>
 /// <returns>kollisjonstype</returns>
 private CollisionType checkImpact(Blimp b)
 {
     foreach (Blimp blimp in blimps)
     {
         if (blimp.Id != b.Id)
         {
             if (b.BlimpFrontSphere.Contains(blimp.BlimpFrontSphere) != ContainmentType.Disjoint || b.BlimpFrontSphere.Contains(blimp.BlimpBackSphere) != ContainmentType.Disjoint)
             {
                 return CollisionType.BlimpImpact;
             }
         }
     }
     return CollisionType.None;
 }
Exemple #5
0
        /// <summary>
        /// Legger til nye blimps
        /// </summary>
        private void AddBlimps()
        {
            blimps = new List<Blimp>();
            Blimp b;
            int i = 1;
            while (blimps.Count < MAXBLIMPS)
            {
                int x = rand.Next((int)terrain.EdgeX.X, (int)terrain.EdgeX.Y); //X verdi innenfor en grense
                int z = rand.Next((int)terrain.EdgeZ.X, (int)terrain.EdgeZ.Y); //Z verdi innenfor en grense
                float y = (float)rand.Next(2000, 3000); //Y verdi innenfor en grense
                Color color = new Color(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)); //Setter tilfeldig farge på blimpen
                float rot = rand.Next(0, (int)(2 * MathHelper.Pi * 100)); //Snur alle forskjellige veier
                rot = rot / 100f;
                b = new Blimp(new Vector3(x, y, z), color, rot);
                b.Id = i;
                b.CurrentRotation = b.Rotation;
                b.BlimpSphere = new BoundingSphere(new Vector3(b.Pos.X, b.Pos.Y, b.Pos.Z), 150f);

                //sjekker om 2 blimper opprettes i samme posisjon.
                if (checkCollision(b) == CollisionType.None)
                    blimps.Add(b);

                i++;
            }
        }