// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); if (loader.IsSwitch) { if (loader.ResFile.VersionMajor2 == 9) { _flags = loader.ReadUInt32(); } else { ((Switch.Core.ResFileSwitchLoader)loader).LoadHeaderBlock(); } long BoneDictOffset = loader.ReadOffset(); long BoneArrayOffset = loader.ReadOffset(); Bones = loader.LoadDictValues <Bone>(BoneDictOffset, BoneArrayOffset); uint MatrixToBoneListOffset = loader.ReadOffset(); uint InverseModelMatricesOffset = loader.ReadOffset(); if (loader.ResFile.VersionMajor2 == 8) { loader.Seek(16); } if (loader.ResFile.VersionMajor2 == 9) { loader.Seek(8); } long userPointer = loader.ReadInt64(); if (loader.ResFile.VersionMajor2 != 9) { _flags = loader.ReadUInt32(); } ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(6); MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix)), MatrixToBoneListOffset); InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix), InverseModelMatricesOffset)?.ToList(); } else { _flags = loader.ReadUInt32(); ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(2); Bones = loader.LoadDict <Bone>(); uint ofsBoneList = loader.ReadOffset(); // Only load dict. MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix))); if (loader.ResFile.Version >= 0x03040000) { InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix))?.ToList(); } uint userPointer = loader.ReadUInt32(); } }
// ---- METHODS ------------------------------------------------------------------------------------------------ void IResData.Load(ResFileLoader loader) { loader.CheckSignature(_signature); _flags = loader.ReadUInt32(); ushort numBone = loader.ReadUInt16(); ushort numSmoothMatrix = loader.ReadUInt16(); ushort numRigidMatrix = loader.ReadUInt16(); loader.Seek(2); Bones = loader.LoadDict <Bone>(); uint ofsBoneList = loader.ReadOffset(); // Only load dict. MatrixToBoneList = loader.LoadCustom(() => loader.ReadUInt16s((numSmoothMatrix + numRigidMatrix))); InverseModelMatrices = loader.LoadCustom(() => loader.ReadMatrix3x4s(numSmoothMatrix)); uint userPointer = loader.ReadUInt32(); }