public BCSV GenerateBCSV(List <Triangle> triangles) { var entries = GetCollisionEntries(); var col = RemoveDuplicateEntries(entries); KclLibrary.DebugLogger.WriteLine("Generating BCSV..."); var bcsv = new BCSV(); bcsv.IsBigEndian = false; bcsv.Fields.Add(new BCSV.Field("Sound_code", BCSV.FieldType.Int32, 0, 0x7F, 0)); bcsv.Fields.Add(new BCSV.Field("Floor_code", BCSV.FieldType.Int32, 0, 0x1F80, 7)); bcsv.Fields.Add(new BCSV.Field(51726534, BCSV.FieldType.Int32, 0, 0x7E000, 13)); bcsv.Fields.Add(new BCSV.Field("Wall_code", BCSV.FieldType.Int32, 0, 0x780000, 19)); bcsv.Fields.Add(new BCSV.Field("Camera_through", BCSV.FieldType.Int32, 0, 0x800000, 23)); foreach (var tri in triangles) { var entry = col[tri.Attribute]; var record = new BCSV.Record(new object[5] { (uint)CreateEntry(SoundCodes, entry.SoundCode), (uint)CreateEntry(FloorCodes, entry.FloorCode), (uint)entry.UnknownCode, (uint)CreateEntry(WallCodes, entry.WallCode), (uint)(entry.CameraThrough ? 1 : 0), }); tri.Attribute = (ushort)bcsv.Records.Count; bcsv.Records.Add(record); } return(bcsv); }
public BCSV GenerateBCSV(List <Triangle> triangles) { var entries = GetCollisionEntries(); var col = RemoveDuplicateEntries(entries); KclLibrary.DebugLogger.WriteLine("Generating BCSV..."); var bcsv = new BCSV(); bcsv.IsBigEndian = true; bcsv.Fields.Add(new BCSV.Field("camera_id", BCSV.FieldType.Int32, 0, 0x000000FF, 0)); bcsv.Fields.Add(new BCSV.Field("Sound_code", BCSV.FieldType.Int32, 0, 0x00007F00, 8)); bcsv.Fields.Add(new BCSV.Field("Floor_code", BCSV.FieldType.Int32, 0, 0x01F8000, 15)); bcsv.Fields.Add(new BCSV.Field("Wall_code", BCSV.FieldType.Int32, 0, 0x01E00000, 21)); bcsv.Fields.Add(new BCSV.Field("Camera_through", BCSV.FieldType.Int32, 0, 0x02000000, 25)); foreach (var tri in triangles) { var entry = col[tri.Attribute]; var record = new BCSV.Record(new object[5] { (uint)(entry.CameraIndex == -1 ? 255 : entry.CameraIndex), (uint)CreateEntry(SoundCodes, entry.SoundCode), (uint)CreateEntry(FloorCodes, entry.FloorCode), (uint)CreateEntry(WallCodes, entry.WallCode), (uint)(entry.CameraThrough ? 1 : 0), }); tri.Attribute = (ushort)bcsv.Records.Count; bcsv.Records.Add(record); } return(bcsv); }