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

ModelMesh() private method

private ModelMesh ( FolderAsset folder, int index, AssetLoader loader ) : System
folder Glare.Assets.FolderAsset
index int
loader Glare.Assets.AssetLoader
return System
        internal ModelMesh(FolderAsset folder, int index, AssetLoader loader)
            : base(folder, index, loader)
        {
            var reader = loader.Reader;

            Unknowns.ReadInt32s(reader, 1); // 1?
            MaterialIndex = reader.ReadInt32();
            reader.RequireZeroes(4 * 2);
            Unknowns.ReadInt32s(reader, 1); // 0 or 1, seems to be material-related but is not transparency; second seems bones-related
            int boneCount = reader.ReadInt32();
            reader.RequireZeroes(4 * 1);
            int boneIndicesOffset = reader.ReadInt32();
            PartCount = reader.ReadInt32();
            int partIndicesOffset = reader.ReadInt32();
            reader.Require(1);
            int indexOffset = reader.ReadInt32();

            long reset = reader.BaseStream.Position;

            reader.BaseStream.Position = boneIndicesOffset;
            var bones = new Codex<ModelBone>();
            Bones = bones;
            for (int i = 0; i < boneCount; i++)
                bones.Add(Model.Bones[reader.ReadInt32()]);

            // Read the part indices.
            reader.BaseStream.Position = partIndicesOffset;
            int partStart = PartStartIndex;
            for (int i = 0; i < PartCount; i++)
                reader.Require(i + partStart);

            reader.BaseStream.Position = indexOffset;
            reader.Require(Index);

            reader.BaseStream.Position = reset;
        }