Alexandria.Engines.DarkSouls.ModelDetailLevel.ModelDetailLevel C# (CSharp) Method

ModelDetailLevel() private method

private ModelDetailLevel ( ModelMesh mesh, int index, AssetLoader loader, int dataOffset, ArrayBackedList bufferData ) : System
mesh ModelMesh
index int
loader Glare.Assets.AssetLoader
dataOffset int
bufferData ArrayBackedList
return System
        internal ModelDetailLevel(ModelMesh mesh, int index, AssetLoader loader, int dataOffset, ArrayBackedList<byte> bufferData)
            : base(mesh, index, loader)
        {
            var reader = loader.Reader;

            Mesh = mesh;

            const int indexSize = 2;

            Threshold = reader.ReadInt32();

            Unknowns.ReadInt16s(reader, IsDS1 ? 1 : 2);
            if (IsDS1) reader.RequireZeroes(2);

            IndexCount = reader.ReadInt32();
            IndexDataOffset = reader.ReadInt32() + dataOffset;
            int indexDataSize = reader.ReadInt32();
            if (indexDataSize != IndexCount * indexSize)
                throw new InvalidDataException("Index data size doesn't match the expected value from the index count.");
            reader.RequireZeroes(4 * 3);

            BufferIndexOffset = bufferData.Count;
            long reset = reader.BaseStream.Position;
            reader.BaseStream.Position = IndexDataOffset;
            bufferData.AddRange(reader, IndexCount * indexSize);
            reader.BaseStream.Position = reset;
        }