/// <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); }
/// <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))); }