VertexData.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Microsoft.Xna.Framework;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. namespace OpenVIII.Battle.Dat
  6. {
  7. /// <summary>
  8. /// Section 2c: Vertex Data
  9. /// </summary>
  10. /// <see cref="http://wiki.ffrtt.ru/index.php?title=FF8/FileFormat_DAT#Vertice_Data"/>
  11. public class VertexData
  12. {
  13. #region Fields
  14. public readonly ushort BoneId;
  15. public readonly ushort CVertices;
  16. public readonly IReadOnlyList<Vector3> Vertices;
  17. #endregion Fields
  18. #region Constructors
  19. private VertexData(BinaryReader br)
  20. {
  21. BoneId = br.ReadUInt16();
  22. CVertices = br.ReadUInt16();
  23. Vertices = Vertex.CreateInstances(br, CVertices);
  24. }
  25. #endregion Constructors
  26. #region Methods
  27. public static VertexData CreateInstance(BinaryReader br) => new VertexData(br);
  28. public static IReadOnlyList<VertexData> CreateInstances(BinaryReader br, ushort count)
  29. => Enumerable.Range(0, count).Select(_ => CreateInstance(br)).ToList().AsReadOnly();
  30. #endregion Methods
  31. }
  32. }