using Microsoft.Xna.Framework; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; namespace OpenVIII.Fields { /// /// Movie Cam? /// /// public class MSK : IReadOnlyList { #region Fields private readonly IReadOnlyList _camPositions; #endregion Fields #region Constructors public MSK(byte[] mskB) { if (mskB == null || mskB.Length <= 4) return; using (var br = new BinaryReader(new MemoryStream(mskB))) _camPositions = Enumerable.Range(0, br.ReadInt32()) .Select(_ => new Vector3(br.ReadInt16(), br.ReadInt16(), br.ReadInt16())).ToList().AsReadOnly(); } #endregion Constructors #region Properties public int Count => _camPositions.Count; #endregion Properties #region Indexers public Vector3 this[int index] => _camPositions[index]; #endregion Indexers #region Methods public IEnumerator GetEnumerator() => _camPositions.GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => _camPositions.GetEnumerator(); #endregion Methods } }