private void Open_File_B_Click(object sender, System.Windows.RoutedEventArgs e) { if (IsClosing) { return; } OpenFileDialog ofd = new OpenFileDialog() { Title = "サウンドファイルを選択してください。", Filter = "サウンドファイル(*.bnk;*.pck)|*.bnk;*.pck", Multiselect = false }; if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { string Ex = Path.GetExtension(ofd.FileName); Sound_List.Items.Clear(); Change_List.Items.Clear(); Change_Sound_Full_Name.Clear(); if (Wwise_Bnk != null) { Wwise_Bnk.Bank_Clear(); } if (Wwise_Pck != null) { Wwise_Pck.Pck_Clear(); } if (Ex == ".bnk") { Wwise_Bnk = new Wwise_File_Extract_V2(ofd.FileName); foreach (string Name_ID in Wwise_Bnk.Wwise_Get_Names()) { Sound_List.Items.Add((Sound_List.Items.Count + 1) + ":" + Name_ID); } IsPCKFile = false; } else if (Ex == ".pck") { Wwise_Pck = new Wwise_File_Extract_V1(ofd.FileName); foreach (string Name_ID in Wwise_Pck.Wwise_Get_Banks_ID()) { Sound_List.Items.Add((Sound_List.Items.Count + 1) + ":" + Name_ID); } IsPCKFile = true; } } catch (Exception e1) { Sub_Code.Error_Log_Write(e1.Message); Message_Feed_Out("エラー:ファイルを読み取れませんでした。"); } } }
private void Content_Load_B_Click(object sender, RoutedEventArgs e) { if (IsClosing) { return; } OpenFileDialog ofd = new OpenFileDialog() { Title = ".wbeファイルを選択してください。", Filter = ".wbeファイル(*.wbe)|*.wbe" }; if (ofd.ShowDialog() == DialogResult.OK) { try { StreamReader str = Sub_Code.File_Decrypt_To_Stream(ofd.FileName, "Bank_Editor_Change_Sound_Save"); string Open_File = str.ReadLine(); if (Path.GetExtension(Open_File) == ".bnk") { Sound_List.Items.Clear(); Wwise_Bnk = new Wwise_File_Extract_V2(Open_File); foreach (string Name_ID in Wwise_Bnk.Wwise_Get_Names()) { Sound_List.Items.Add((Sound_List.Items.Count + 1) + ":" + Name_ID); } IsPCKFile = false; } else if (Path.GetExtension(Open_File) == ".pck") { Sound_List.Items.Clear(); Wwise_Pck = new Wwise_File_Extract_V1(Open_File); foreach (string Name_ID in Wwise_Pck.Wwise_Get_Banks_ID()) { Sound_List.Items.Add((Sound_List.Items.Count + 1) + ":" + Name_ID); } IsPCKFile = true; } else { throw new Exception("ファイル形式が違います。対応しているファイル形式は.bnk、または.pckのみです。"); } Change_List.Items.Clear(); Change_Sound_Full_Name.Clear(); string line; while ((line = str.ReadLine()) != null) { int Index = int.Parse(line.Substring(0, line.IndexOf(':'))); string File_Name = line.Substring(line.IndexOf(':') + 1); Change_List.Items.Add(Sound_List.Items[Index]); Change_Sound_Full_Name.Add(File_Name); } str.Close(); } catch (Exception e1) { Sub_Code.Error_Log_Write(e1.Message); Message_Feed_Out("正常に読み込めませんでした。"); } } }
//音声ファイルの言語を変更 //例:/Data/WwiseSound/ja/voiceover_crew.bnk -> /Data/WwiseSound/en/voiceover_crew.bnk //bnk内のIDが異なるためそのままコピーすることはできません。 public static void Voice_Change_Language(string From_BNK_File, string To_BNK_File, string Set_Language) { if (!File.Exists(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json") || !File.Exists(From_BNK_File)) { return; } try { Wwise_Class.Wwise_File_Extract_V2 Wwise_Bnk = new Wwise_Class.Wwise_File_Extract_V2(From_BNK_File); if (Directory.Exists(Voice_Set.Special_Path + "/Voice_Temp")) { Directory.Delete(Voice_Set.Special_Path + "/Voice_Temp", true); } Wwise_Bnk.Wwise_Extract_To_WEM_Directory(Voice_Set.Special_Path + "/Voice_Temp", 1); string Get_Language_ID = Wwise_Bnk.Wwise_Get_Name(0); Wwise_Bnk.Bank_Clear(); StreamReader str = new StreamReader(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json"); string Read_Line = ""; int Number = 0; string Get_Language_Now = ""; while ((Read_Line = str.ReadLine()) != null) { if (Read_Line == " \"Id\": \"" + Get_Language_ID + "\"") { Get_Language_Now = File.ReadLines(Voice_Set.Special_Path + "/Wwise/SoundbanksInfo.json").Skip(Number + 1).First().Replace(" \"Language\": \"", "").Replace("\"", ""); } Number++; } str.Close(); if (Get_Language_Now != "") { List <string> Replace_Name_Voice = Get_Voices_ID(Get_Language_Now); foreach (string Replace_Name_Now in Replace_Name_Voice) { string Name_Only = Replace_Name_Now.Substring(0, Replace_Name_Now.IndexOf(':')); string ID_Only = Replace_Name_Now.Substring(Replace_Name_Now.IndexOf(':') + 1); File_Move(Voice_Set.Special_Path + "/Voice_Temp/" + ID_Only + ".wem", Voice_Set.Special_Path + "/Voice_Temp/" + Name_Only.Replace(".wav", ".wem"), true); } List <string> Get_Set_Language_ID = Get_Voices_ID(Set_Language); Wwise_Class.Wwise_File_Extract_V2 Wwise_Bnk_02 = new Wwise_Class.Wwise_File_Extract_V2(Voice_Set.Special_Path + "/Voice_Temp/voiceover_crew.bnk"); List <string> New_ID = Wwise_Bnk_02.Wwise_Get_Names(); for (int Number_01 = 0; Number_01 < New_ID.Count; Number_01++) { foreach (string ID in Get_Set_Language_ID) { string Name_Only = ID.Substring(0, ID.IndexOf(':')).Replace(".wav", ".wem"); string ID_Only = ID.Substring(ID.IndexOf(':') + 1); if (ID_Only == New_ID[Number_01]) { Wwise_Bnk_02.Bank_Edit_Sound(Number_01, Voice_Set.Special_Path + "/Voice_Temp/" + Name_Only, false); } } } Wwise_Bnk_02.Bank_Save(To_BNK_File); Wwise_Bnk_02.Bank_Clear(); } else { Error_Log_Write("指定された.bnkファイルは音声ファイルでない可能性があります。"); } } catch (Exception e) { Error_Log_Write(e.Message); } }