Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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");
            }
        }