From acea7b2e728787a0d83bbf83c8c1f042d2c32e7e Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 3 Jun 2024 10:15:45 +0800 Subject: + plugins project --- .../Tiled/TiledMapTilesetProcessor.cs | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs') diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs new file mode 100644 index 0000000..5682602 --- /dev/null +++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs @@ -0,0 +1,44 @@ +using Microsoft.Xna.Framework.Content.Pipeline; +using Microsoft.Xna.Framework.Content.Pipeline.Graphics; +using System; + +namespace MonoGame.Extended.Content.Pipeline.Tiled +{ + [ContentProcessor(DisplayName = "Tiled Map Tileset Processor - MonoGame.Extended")] + public class TiledMapTilesetProcessor : ContentProcessor + { + public override TiledMapTilesetContentItem Process(TiledMapTilesetContentItem contentItem, ContentProcessorContext context) + { + try + { + var tileset = contentItem.Data; + + ContentLogger.Logger = context.Logger; + ContentLogger.Log($"Processing tileset '{tileset.Name}'"); + + // Build the Texture2D asset and load it as it will be saved as part of this tileset file. + if (tileset.Image is not null) + contentItem.BuildExternalReference(context, tileset.Image); + + foreach (var tile in tileset.Tiles) + { + foreach (var obj in tile.Objects) + { + TiledMapContentHelper.Process(obj, context); + } + if (tile.Image is not null) + contentItem.BuildExternalReference(context, tile.Image); + } + + ContentLogger.Log($"Processed tileset '{tileset.Name}'"); + + return contentItem; + } + catch (Exception ex) + { + context.Logger.LogImportantMessage(ex.Message); + throw ex; + } + } + } +} -- cgit v1.1-26-g67d0