PageRenderTime 41ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/XSpriterPipelineExtensions/SCMLWriter.cs

https://bitbucket.org/dylanwolf/xspriter
C# | 89 lines | 81 code | 8 blank | 0 comment | 0 complexity | 435edbac10fb92c470724e82a7f6fe43 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler;
  6. namespace FuncWorks.XNA.XSpriter
  7. {
  8. [ContentTypeWriter]
  9. public class SCMLWriter : ContentTypeWriter<CharacterContent>
  10. {
  11. protected override void Write(ContentWriter output, CharacterContent value)
  12. {
  13. output.Write(value.FramesPerSecond);
  14. output.Write(value.Textures.Length);
  15. foreach (Image[] folder in value.Textures)
  16. {
  17. output.Write(folder.Length);
  18. foreach (Image img in folder)
  19. {
  20. output.Write(img.Pivot);
  21. }
  22. }
  23. output.Write(value.Animations.Count);
  24. foreach (AnimationContent anim in value.Animations)
  25. {
  26. output.Write(anim.Name);
  27. output.Write(anim.Looping);
  28. output.Write(anim.Length);
  29. output.Write(anim.Frames.Length);
  30. foreach (FrameContent frame in anim.Frames)
  31. {
  32. output.Write(frame.Objects.Length);
  33. foreach (FrameImage img in frame.Objects)
  34. {
  35. output.Write(img.Angle);
  36. output.Write(img.Clockwise);
  37. output.Write(img.Pivot);
  38. output.Write(img.Position);
  39. output.Write(img.TextureFolder);
  40. output.Write(img.TextureFile);
  41. output.Write(img.TimelineId);
  42. output.Write(img.Parent);
  43. output.Write(img.Scale);
  44. }
  45. output.Write(frame.Bones.Length);
  46. foreach (Bone bone in frame.Bones)
  47. {
  48. output.Write(bone.Angle);
  49. output.Write(bone.Clockwise);
  50. output.Write(bone.Id);
  51. output.Write(bone.Parent);
  52. output.Write(bone.Position);
  53. output.Write(bone.Scale);
  54. output.Write(bone.TimelineId);
  55. output.Write(!String.IsNullOrEmpty(bone.Name) ? bone.Name : String.Empty);
  56. }
  57. }
  58. output.Write(anim.TextureTimelines.Count);
  59. foreach (string key in anim.TextureTimelines.Keys)
  60. {
  61. output.Write(key);
  62. output.Write(anim.TextureTimelines[key]);
  63. }
  64. output.Write(anim.BoneTimelines.Count);
  65. foreach (string key in anim.BoneTimelines.Keys)
  66. {
  67. output.Write(key);
  68. output.Write(anim.BoneTimelines[key]);
  69. }
  70. }
  71. }
  72. public override string GetRuntimeReader(Microsoft.Xna.Framework.Content.Pipeline.TargetPlatform targetPlatform)
  73. {
  74. return "FuncWorks.XNA.XSpriter.CharacterReader, FuncWorks.XNA.XSpriter";
  75. }
  76. public override string GetRuntimeType(Microsoft.Xna.Framework.Content.Pipeline.TargetPlatform targetPlatform)
  77. {
  78. return "FuncWorks.XNA.XSpriter.CharacterData, FuncWorks.XNA.XSpriter";
  79. }
  80. }
  81. }