예제 #1
0
 private static bool GeneratedPositionIsValid(Vector2 position, NetworkMap netMap)
 {
     if (position.X < 0.0 || position.X > 1.0 || (position.Y < 0.0 || position.Y > 1.0))
     {
         return(false);
     }
     return(!netMap.collides(position, -1f));
 }
예제 #2
0
 private static bool GeneratedPositionIsValid(Vector2 position, NetworkMap netMap, bool ignoreNetmap = false)
 {
     if ((double)position.X < 0.0 || (double)position.X > 1.0 || (double)position.Y < 0.0 || (double)position.Y > 1.0)
     {
         return(false);
     }
     return(ignoreNetmap || !netMap.collides(position, -1f));
 }
예제 #3
0
        public static Vector2 getNearbyNodeOffsetOld(Vector2 basePos, int positionNumber, int total, NetworkMap map,
                                                     float ExtraSeperationDistance = 0.0f)
        {
            var     num1    = 60;
            var     num2    = 0;
            var     vector2 = Vector2.Zero;
            Vector2 location;

            do
            {
                var num3 = positionNumber + num2;
                var num4 = total;
                while (num3 >= num4)
                {
                    num3 -= num4;
                    num4 += total;
                }
                if (num3 > 0)
                {
                    vector2 = Utils.PolarToCartesian(num3 / (float)num4 * 6.283185f, 1f);
                }
                else
                {
                    vector2.X = 1f;
                }
                vector2.Y *= Y_ASPECT_RATIO_BIAS;
                double num5 = COMPUTER_SEPERATION;
                vector2  = new Vector2(vector2.X * COMPUTER_SEPERATION, vector2.Y * COMPUTER_SEPERATION);
                location = basePos + vector2;
                ++num2;
                TestedPositions.Add(vector2);
            } while ((location.X < 0.0 || location.X > 1.0 || (location.Y < 0.0 || location.Y > 1.0) ||
                      map.collides(location, 0.075f)) && num2 < num1);
            if (num2 >= num1)
            {
                if (ExtraSeperationDistance <= 0.0)
                {
                    return(getNearbyNodeOffsetOld(basePos, positionNumber, total, map, COMPUTER_SEPERATION));
                }
                if (ExtraSeperationDistance <= (double)COMPUTER_SEPERATION)
                {
                    return(getNearbyNodeOffsetOld(basePos, positionNumber, total, map,
                                                  COMPUTER_SEPERATION + COMPUTER_SEPERATION));
                }
                Console.WriteLine("Node had to resort to random");
                vector2 = map.getRandomPosition() - basePos;
            }
            return(vector2);
        }
예제 #4
0
 public static Vector2 getNearbyNodeOffsetOld(Vector2 basePos, int positionNumber, int total, NetworkMap map,
     float ExtraSeperationDistance = 0.0f)
 {
     var num1 = 60;
     var num2 = 0;
     var vector2 = Vector2.Zero;
     Vector2 location;
     do
     {
         var num3 = positionNumber + num2;
         var num4 = total;
         while (num3 >= num4)
         {
             num3 -= num4;
             num4 += total;
         }
         if (num3 > 0)
             vector2 = Utils.PolarToCartesian(num3/(float) num4*6.283185f, 1f);
         else
             vector2.X = 1f;
         vector2.Y *= Y_ASPECT_RATIO_BIAS;
         double num5 = COMPUTER_SEPERATION;
         vector2 = new Vector2(vector2.X*COMPUTER_SEPERATION, vector2.Y*COMPUTER_SEPERATION);
         location = basePos + vector2;
         ++num2;
         TestedPositions.Add(vector2);
     } while ((location.X < 0.0 || location.X > 1.0 || (location.Y < 0.0 || location.Y > 1.0) ||
               map.collides(location, 0.075f)) && num2 < num1);
     if (num2 >= num1)
     {
         if (ExtraSeperationDistance <= 0.0)
             return getNearbyNodeOffsetOld(basePos, positionNumber, total, map, COMPUTER_SEPERATION);
         if (ExtraSeperationDistance <= (double) COMPUTER_SEPERATION)
             return getNearbyNodeOffsetOld(basePos, positionNumber, total, map,
                 COMPUTER_SEPERATION + COMPUTER_SEPERATION);
         Console.WriteLine("Node had to resort to random");
         vector2 = map.getRandomPosition() - basePos;
     }
     return vector2;
 }
예제 #5
0
 private static bool GeneratedPositionIsValid(Vector2 position, NetworkMap netMap)
 {
     if (position.X < 0.0 || position.X > 1.0 || (position.Y < 0.0 || position.Y > 1.0))
         return false;
     return !netMap.collides(position, -1f);
 }
예제 #6
0
        public static Vector2 getNearbyNodeOffsetOld(Vector2 basePos, int positionNumber, int total, NetworkMap map, float ExtraSeperationDistance = 0.0f)
        {
            int     num1    = 60;
            int     num2    = 0;
            Vector2 vector2 = Vector2.Zero;
            Vector2 location;

            do
            {
                int num3 = positionNumber + num2;
                int num4 = total;
                while (num3 >= num4)
                {
                    num3 -= num4;
                    num4 += total;
                }
                if (num3 > 0)
                {
                    vector2 = Utils.PolarToCartesian((float)num3 / (float)num4 * 6.283185f, 1f);
                }
                else
                {
                    vector2.X = 1f;
                }
                vector2.Y *= Corporation.Y_ASPECT_RATIO_BIAS;
                float num5 = Corporation.COMPUTER_SEPERATION + ExtraSeperationDistance;
                vector2  = new Vector2(vector2.X * Corporation.COMPUTER_SEPERATION, vector2.Y * Corporation.COMPUTER_SEPERATION);
                location = basePos + vector2;
                ++num2;
                Corporation.TestedPositions.Add(vector2);
            }while (((double)location.X < 0.0 || (double)location.X > 1.0 || ((double)location.Y < 0.0 || (double)location.Y > 1.0) || map.collides(location, 0.075f)) && num2 < num1);
            if (num2 >= num1)
            {
                if ((double)ExtraSeperationDistance <= 0.0)
                {
                    return(Corporation.getNearbyNodeOffsetOld(basePos, positionNumber, total, map, Corporation.COMPUTER_SEPERATION));
                }
                if ((double)ExtraSeperationDistance <= (double)Corporation.COMPUTER_SEPERATION)
                {
                    return(Corporation.getNearbyNodeOffsetOld(basePos, positionNumber, total, map, Corporation.COMPUTER_SEPERATION + Corporation.COMPUTER_SEPERATION));
                }
                vector2 = map.getRandomPosition() - basePos;
            }
            return(vector2);
        }