/// <summary> /// Tiles the at position. /// </summary> /// <param name="x">The x.</param> /// <param name="y">The y.</param> /// <param name="width">The width.</param> /// <param name="height">The height.</param> /// <returns>A TileMaskCollection.</returns> public TileMaskCollection TilesAtPosition(int x, int y, int width, int height) { TileMaskCollection find = new TileMaskCollection(BytesPerColor) { tiles = tiles.Where((t) => { if (t.X + t.Width < x + 1) { return(false); } if (x + width < t.X + 1) { return(false); } if (t.Y + t.Height < y + 1) { return(false); } if (y + height < t.Y + 1) { return(false); } return(true); }).ToList() }; find.Sort(); find.UpdateContainer(); return(find); }
/// <summary> /// Finds the by area. /// </summary> /// <param name="x">The x.</param> /// <param name="width">The width.</param> /// <param name="y">The y.</param> /// <param name="height">The height.</param> public TileMaskCollection FindByArea(int x, int y, int width, int height) { if (selection == null) { selection = new TileMaskCollection(BytesPerColor); } selection.tiles = TilesAtPosition(x, y, width, height).tiles; selection.sorted = false; selection.UpdateContainer(); OnSelectionChanged?.Invoke(this, selection); return(selection); }