# Tiled Extensions If you're using [MonoGame.Extended](https://github.com/craftworkgames/MonoGame.Extended)'s [Tiled](https://www.mapeditor.org/) map editor support, you can use the **MLEM.Extended** package alongside that to enhance your tilemap experience. ## Extensions There are several extensions to tiled maps, tilesets and tiles, including, but not limited to: - The ability to get a tileset tile from a tile easily - The ability to get tile and tile map properties easily - Getting multiple tiles and objects at a location or in an area All of these extension methods can be found in the [TiledExtensions](https://github.com/Ellpeck/MLEM/blob/main/MLEM.Extended/Tiled/TiledExtensions.cs) class. ## Tiled map collisions MLEM.Extended includes a very easy way to set up collisions within your tiled maps through the use of [tile collisions](https://doc.mapeditor.org/en/stable/manual/editing-tilesets/#tile-collision-editor). To get this set up, you simply have to add bounding rectangles to your tilesets within the Tiled editor. Then, you can query collisions like so: ```cs // Creating the collision system for a tiled map var collisions = new TiledMapCollisions(myMap); // Getting a list of collisions for an area var tiles = collisions.GetCollidingTiles(new RectangleF(2, 2, 3.5F, 3.5F)); // Checking if an area is colliding var colliding = collisions.IsColliding(new RectangleF(4, 4, 1, 1)); ``` ### Collision coordinate system The coordinate system of these tiled collisions functions based on *percentages* rather than absolute pixel coordinates. The collision system sees each tile as being *one unit by one unit* big. This means that, to check if the tile at tile coordinate `6, 10` contains any collisions, the following rectangle has to be used: ```cs var tiles = collisions.GetCollidingTiles(new RectangleF(6, 10, 1, 1)); ``` If the tile at that location is `16x16` pixels big, and it has a single collision box at pixels `4, 4` that is `8x8` pixels big, then the following code prints out its percentaged coordinates: `X: 0.25, Y: 0.25, Width: 0.5, Height: 0.5`. ```cs foreach (var tile in tiles) Console.WriteLine(tile.Collisions[0]); ```