public void ReadFromFile(BinaryReader reader) { version = reader.ReadInt32(); if (version != 17) { throw new Exception("Unknown collision version"); } unk0 = reader.ReadInt32(); count1 = reader.ReadInt32(); placementData = new List <Placement>(count1); for (int i = 0; i != count1; i++) { placementData.Add(new Placement(reader)); } count2 = reader.ReadInt32(); nxsData = new Dictionary <ulong, NXSStruct>(); for (int i = 0; i != count2; i++) { NXSStruct data = new NXSStruct(reader); nxsData.Add(data.Hash, data); } }
public void WriteToFile(BinaryWriter writer) { writer.Write(version); writer.Write(unk0); writer.Write(placementData.Count); for (int i = 0; i != placementData.Count; i++) { placementData[i].WriteToFile(writer); } writer.Write(nxsData.Count); for (int i = 0; i != nxsData.Count; i++) { NXSStruct data = nxsData.ElementAt(i).Value; using (BinaryWriter meshWriter = new BinaryWriter(File.Open("mesh.bin", FileMode.Create))) data.Data.WriteToFile(meshWriter); string args = "-CookCollisions "; args += ("\"" + "mesh" + ".bin\" "); args += ("\"" + "cook" + ".bin\""); FBXHelper.CookTriangleCollision("mesh.bin", "cook.bin"); using (BinaryReader meshReader = new BinaryReader(File.Open("cook.bin", FileMode.Open))) nxsData.ElementAt(i).Value.Data.ReadFromFile(meshReader); nxsData.ElementAt(i).Value.WriteToFile(writer); } if (File.Exists("mesh.bin")) { File.Delete("mesh.bin"); } if (File.Exists("cook.bin")) { File.Delete("cook.bin"); } }