void IResData.Save(ResFileSaver saver) { if (saver.IsSwitch) { var bufferSize = new BufferSize(); bufferSize.Size = (uint)Data.Length; ((Switch.Core.ResFileSwitchSaver)saver).SaveRelocateEntryToSection(saver.Position, 1, 1, 0, Switch.Core.ResFileSwitchSaver.Section1, "Mesh"); PosSubMeshesOffset = saver.SaveOffset(); if (MemoryPool != null) { ((Switch.Core.ResFileSwitchSaver)saver).SaveRelocateEntryToSection(saver.Position, 1, 1, 0, Switch.Core.ResFileSwitchSaver.Section4, "Mesh Memory pool"); } ((Switch.Core.ResFileSwitchSaver)saver).SaveMemoryPoolPointer(); ((Switch.Core.ResFileSwitchSaver)saver).SaveRelocateEntryToSection(saver.Position, 2, 1, 0, Switch.Core.ResFileSwitchSaver.Section1, "Mesh buffer info"); PosBufferUnkOffset = saver.SaveOffset(); PosBufferSizeOffset = saver.SaveOffset(); saver.Write(SetFaceBufferOffset(saver)); //face buffer saver.Write(PrimitiveTypeList.FirstOrDefault(x => x.Value == PrimitiveType).Key, true); saver.Write(IndexList.FirstOrDefault(x => x.Value == IndexFormat).Key, true); saver.Write(IndexCount); saver.Write(FirstVertex); saver.Write((ushort)SubMeshes.Count); saver.Seek(2); } else { saver.Write(PrimitiveType, true); saver.Write(IndexFormat, true); saver.Write(IndexCount); saver.Write((ushort)SubMeshes.Count); saver.Seek(2); saver.SaveList(SubMeshes); saver.Save(IndexBuffer); saver.Write(FirstVertex); } }