public override TileMap Process(TileMapData input, ContentProcessorContext context) { TileMap tileMap = new TileMap(input.TileWidth, input.TileWidth, input.Width, input.Height); foreach (var tsRef in input.TileSets) { string tsPath = $"{TILE_SET_PATH}/{Path.GetFileNameWithoutExtension(tsRef.Source)}"; tileMap.AddTileSetReference(tsRef.FirstGid, tsPath); } foreach (var layer in input.Layers) { TileMatrix tileMatrix = TileMatrix.ParseCsv(layer.Data); tileMap.AddLayer(new TileMapTileLayer(tileMap, layer.Id, layer.Name, tileMatrix)); } foreach (var objGroup in input.ObjectGroups) { TileMapObjectLayer objLayer = new TileMapObjectLayer(tileMap, objGroup.Id, objGroup.Name); tileMap.AddLayer(objLayer); foreach (var objData in objGroup.Objects) { if (objData.Point != null) { var pointObj = new TileMapPointObject(objData.Name, objData.Type, objData.Id, (float)objData.X, (float)objData.Y); ProcessObjectProperties(objData, pointObj); objLayer.AddObject(pointObj); } else if (objData.Polygon != null) { IEnumerable <Vector2> vertices = objData.Polygon.GetVertices(); var polygonObj = new TileMapPolygonObject(vertices, objData.Name, objData.Type, objData.Id, (float)objData.X, (float)objData.Y); objLayer.AddObject(polygonObj); } else { TileMapRectangleObject tileMapRectangleObject = new TileMapRectangleObject(objData.Width, objData.Height, objData.Name, objData.Type, objData.Id, (float)objData.X, (float)objData.Y); objLayer.AddObject(tileMapRectangleObject); } } } return(tileMap); }