ParticleEffectProcessor.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using Microsoft.Xna.Framework.Content.Pipeline;
  3. using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
  4. using Microsoft.Xna.Framework.Content.Pipeline.Processors;
  5. namespace MonoGame.Extended.Content.Pipeline.Particles;
  6. [ContentProcessor(DisplayName = "Particle Effect Processor - MonoGame.Extended")]
  7. public class ParticleEffectProcessor : ContentProcessor<ContentImporterResult<ParticleEffectFileContent>, ParticleEffectProcessorResult>
  8. {
  9. public override ParticleEffectProcessorResult Process(ContentImporterResult<ParticleEffectFileContent> input, ContentProcessorContext context)
  10. {
  11. try
  12. {
  13. ContentLogger.Logger = context.Logger;
  14. ContentLogger.Log("Processing particle effect");
  15. ParticleEffectFileContent fileContent = input.Data;
  16. foreach (string texturePath in fileContent.TextureReferences)
  17. {
  18. ContentLogger.Log($"Validating texture '{texturePath}'");
  19. ExternalReference<Texture2DContent> externalRef = new ExternalReference<Texture2DContent>(texturePath);
  20. context.BuildAndLoadAsset<Texture2DContent, Texture2DContent>(externalRef, nameof(TextureProcessor));
  21. }
  22. ContentLogger.Log("Processed particle effect");
  23. return new ParticleEffectProcessorResult(fileContent);
  24. }
  25. catch(Exception e)
  26. {
  27. context.Logger.LogImportantMessage(e.Message);
  28. throw;
  29. }
  30. }
  31. }