| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System;
- using System.IO;
- using System.Xml.Serialization;
- using Microsoft.Xna.Framework.Content.Pipeline;
- using MonoGame.Extended.Content.Tiled;
- namespace MonoGame.Extended.Content.Pipeline.Tiled
- {
- [ContentImporter(".tx", DefaultProcessor = "TiledMapObjectTemplateProcessor", DisplayName = "Tiled Map Object Template Importer - MonoGame.Extended")]
- public class TiledMapObjectTemplateImporter : ContentImporter<TiledMapObjectTemplateContent>
- {
- public override TiledMapObjectTemplateContent Import(string filePath, ContentImporterContext context)
- {
- try
- {
- if (filePath == null)
- throw new ArgumentNullException(nameof(filePath));
- ContentLogger.Logger = context.Logger;
- ContentLogger.Log($"Importing '{filePath}'");
- var template = DeserializeTileMapObjectTemplateContent(filePath, context);
- ContentLogger.Log($"Imported '{filePath}'");
- return template;
- }
- catch (Exception e)
- {
- context.Logger.LogImportantMessage(e.StackTrace);
- return null;
- }
- }
- private static TiledMapObjectTemplateContent DeserializeTileMapObjectTemplateContent(string filePath, ContentImporterContext context)
- {
- using (var reader = new StreamReader(filePath))
- {
- var templateSerializer = new XmlSerializer(typeof(TiledMapObjectTemplateContent));
- var template = (TiledMapObjectTemplateContent)templateSerializer.Deserialize(reader);
- if (!string.IsNullOrWhiteSpace(template.Tileset?.Source))
- {
- template.Tileset.Source = Path.Combine(Path.GetDirectoryName(filePath), template.Tileset.Source);
- ContentLogger.Log($"Adding dependency '{template.Tileset.Source}'");
- // We depend on this tileset.
- context.AddDependency(template.Tileset.Source);
- }
- return template;
- }
- }
- }
- }
|