GLTF.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using System.Collections.Generic;
  2. using System.Runtime.Serialization;
  3. namespace GLTFExport.Entities
  4. {
  5. [DataContract]
  6. public class GLTF
  7. {
  8. [DataMember(IsRequired = true)]
  9. public GLTFAsset asset { get; set; }
  10. [DataMember(EmitDefaultValue = false)]
  11. public int? scene { get; set; }
  12. [DataMember(EmitDefaultValue = false)]
  13. public GLTFScene[] scenes { get; set; }
  14. [DataMember(EmitDefaultValue = false)]
  15. public GLTFNode[] nodes { get; set; }
  16. [DataMember(EmitDefaultValue = false)]
  17. public GLTFCamera[] cameras { get; set; }
  18. [DataMember(EmitDefaultValue = false)]
  19. public GLTFMesh[] meshes { get; set; }
  20. [DataMember(EmitDefaultValue = false)]
  21. public GLTFAccessor[] accessors { get; set; }
  22. [DataMember(EmitDefaultValue = false)]
  23. public GLTFBufferView[] bufferViews { get; set; }
  24. [DataMember(EmitDefaultValue = false)]
  25. public GLTFBuffer[] buffers { get; set; }
  26. [DataMember(EmitDefaultValue = false)]
  27. public GLTFMaterial[] materials { get; set; }
  28. [DataMember(EmitDefaultValue = false)]
  29. public GLTFTexture[] textures { get; set; }
  30. [DataMember(EmitDefaultValue = false)]
  31. public GLTFImage[] images { get; set; }
  32. [DataMember(EmitDefaultValue = false)]
  33. public GLTFSampler[] samplers { get; set; }
  34. public string OutputPath { get; private set; }
  35. public List<GLTFNode> NodesList { get; private set; }
  36. public List<GLTFCamera> CamerasList { get; private set; }
  37. public List<GLTFBuffer> BuffersList { get; private set; }
  38. public List<GLTFBufferView> BufferViewsList { get; private set; }
  39. public List<GLTFAccessor> AccessorsList { get; private set; }
  40. public List<GLTFMesh> MeshesList { get; private set; }
  41. public List<GLTFMaterial> MaterialsList { get; private set; }
  42. public List<GLTFTexture> TexturesList { get; private set; }
  43. public List<GLTFImage> ImagesList { get; private set; }
  44. public List<GLTFSampler> SamplersList { get; private set; }
  45. public GLTF(string outputPath)
  46. {
  47. OutputPath = outputPath;
  48. NodesList = new List<GLTFNode>();
  49. CamerasList = new List<GLTFCamera>();
  50. BuffersList = new List<GLTFBuffer>();
  51. BufferViewsList = new List<GLTFBufferView>();
  52. AccessorsList = new List<GLTFAccessor>();
  53. MeshesList = new List<GLTFMesh>();
  54. MaterialsList = new List<GLTFMaterial>();
  55. TexturesList = new List<GLTFTexture>();
  56. ImagesList = new List<GLTFImage>();
  57. SamplersList = new List<GLTFSampler>();
  58. }
  59. public void Prepare()
  60. {
  61. scenes[0].Prepare();
  62. // Do not export empty arrays
  63. if (NodesList.Count > 0)
  64. {
  65. nodes = NodesList.ToArray();
  66. NodesList.ForEach(node => node.Prepare());
  67. }
  68. if (CamerasList.Count > 0)
  69. {
  70. cameras = CamerasList.ToArray();
  71. }
  72. if (BuffersList.Count > 0)
  73. {
  74. buffers = BuffersList.ToArray();
  75. }
  76. if (BufferViewsList.Count > 0)
  77. {
  78. bufferViews = BufferViewsList.ToArray();
  79. }
  80. if (AccessorsList.Count > 0)
  81. {
  82. accessors = AccessorsList.ToArray();
  83. }
  84. if (MeshesList.Count > 0)
  85. {
  86. meshes = MeshesList.ToArray();
  87. }
  88. if (MaterialsList.Count > 0)
  89. {
  90. materials = MaterialsList.ToArray();
  91. }
  92. if (TexturesList.Count > 0)
  93. {
  94. textures = TexturesList.ToArray();
  95. }
  96. if (ImagesList.Count > 0)
  97. {
  98. images = ImagesList.ToArray();
  99. }
  100. if (SamplersList.Count > 0)
  101. {
  102. samplers = SamplersList.ToArray();
  103. }
  104. }
  105. }
  106. }