diff options
| author | chai <215380520@qq.com> | 2024-06-03 10:15:45 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-06-03 10:15:45 +0800 |
| commit | acea7b2e728787a0d83bbf83c8c1f042d2c32e7e (patch) | |
| tree | 0bfec05c1ca2d71be2c337bcd110a0421f19318b /Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs | |
| parent | 88febcb02bf127d961c6471d9e846c0e1315f5c3 (diff) | |
+ plugins project
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs')
| -rw-r--r-- | Plugins/MonoGame.Extended/source/MonoGame.Extended.Content.Pipeline/Tiled/TiledMapTilesetProcessor.cs | 44 |
1 files changed, 44 insertions, 0 deletions
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<TiledMapTilesetContentItem, TiledMapTilesetContentItem> + { + 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<Texture2DContent>(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<Texture2DContent>(context, tile.Image); + } + + ContentLogger.Log($"Processed tileset '{tileset.Name}'"); + + return contentItem; + } + catch (Exception ex) + { + context.Logger.LogImportantMessage(ex.Message); + throw ex; + } + } + } +} |
