TiledMapTilesetProcessor.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Microsoft.Xna.Framework.Content.Pipeline;
  2. using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
  3. using System;
  4. namespace MonoGame.Extended.Content.Pipeline.Tiled
  5. {
  6. [ContentProcessor(DisplayName = "Tiled Map Tileset Processor - MonoGame.Extended")]
  7. public class TiledMapTilesetProcessor : ContentProcessor<TiledMapTilesetContentItem, TiledMapTilesetContentItem>
  8. {
  9. public override TiledMapTilesetContentItem Process(TiledMapTilesetContentItem contentItem, ContentProcessorContext context)
  10. {
  11. try
  12. {
  13. var tileset = contentItem.Data;
  14. ContentLogger.Logger = context.Logger;
  15. ContentLogger.Log($"Processing tileset '{tileset.Name}'");
  16. // Build the Texture2D asset and load it as it will be saved as part of this tileset file.
  17. if (tileset.Image is not null)
  18. contentItem.BuildExternalReference<Texture2DContent>(context, tileset.Image);
  19. foreach (var tile in tileset.Tiles)
  20. {
  21. foreach (var obj in tile.Objects)
  22. {
  23. TiledMapContentHelper.Process(obj, context);
  24. }
  25. if (tile.Image is not null)
  26. contentItem.BuildExternalReference<Texture2DContent>(context, tile.Image);
  27. }
  28. ContentLogger.Log($"Processed tileset '{tileset.Name}'");
  29. return contentItem;
  30. }
  31. catch (Exception ex)
  32. {
  33. context.Logger.LogImportantMessage(ex.Message);
  34. throw ex;
  35. }
  36. }
  37. }
  38. }