示例#1
0
        /// <summary>
        /// Retourne tous les Square qui sont en collision avec un rectangle positionné dans le monde.
        /// </summary>
        /// <param name="data"> Le rectangle positionné </param>
        /// <returns> La liste de Squares </returns>
        private List <Square> GetSquares(ShiftedRectangle data)
        {
            var demiSize = new Point(data.Rectangle.Width / 2, data.Rectangle.Height / 2);
            var min      = (data.Position - demiSize) / Square.Size;
            var max      = (data.Position + demiSize) / Square.Size;
            var squares  = new List <Square>();

            for (var i = (int)min.X; i <= (int)max.X; ++i)
            {
                if (i < 0 || i >= _width)
                {
                    continue;
                }
                for (var j = (int)min.Y; j <= (int)max.Y; ++j)
                {
                    if (j < 0 || j >= _height)
                    {
                        continue;
                    }
                    squares.Add(_squares[i, j]);
                }
            }
            return(squares);
        }
示例#2
0
 /// <summary>
 /// Retourne la liste d'acteurs (sans doublons) proches du rectangle positionné passé en paramètre.
 /// </summary>
 /// <param name="data"> Le rectangle positionné </param>
 /// <returns> La liste d'acteurs </returns>
 public List <Actor> GetActors(ShiftedRectangle data)
 {
     return(GetActors(GetSquares(data)));
 }