AstridAnimatorWriter.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Microsoft.Xna.Framework.Content.Pipeline;
  2. using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler;
  3. namespace MonoGame.Extended.Content.Pipeline.Animations
  4. {
  5. [ContentTypeWriter]
  6. public class AstridAnimatorWriter : ContentTypeWriter<AstridAnimatorProcessorResult>
  7. {
  8. public override string GetRuntimeReader(TargetPlatform targetPlatform)
  9. {
  10. return "MonoGame.Extended.Animations.SpriteSheets.SpriteSheetAnimationFactoryReader, MonoGame.Extended.Animations";
  11. }
  12. protected override void Write(ContentWriter writer, AstridAnimatorProcessorResult input)
  13. {
  14. var data = input.Data;
  15. writer.Write(input.TextureAtlasAssetName);
  16. writer.Write(input.Frames.Count);
  17. foreach (var frame in input.Frames)
  18. writer.Write(frame);
  19. writer.Write(data.Animations.Count);
  20. foreach (var animation in data.Animations)
  21. {
  22. writer.Write(animation.Name);
  23. writer.Write(animation.FramesPerSecond);
  24. writer.Write(animation.IsLooping);
  25. writer.Write(animation.IsReversed);
  26. writer.Write(animation.IsPingPong);
  27. writer.Write(animation.Frames.Count);
  28. foreach (var frame in animation.Frames)
  29. writer.Write(input.Frames.IndexOf(frame));
  30. }
  31. }
  32. }
  33. }