private static void AnimAnalyzeIndividual(BACData.BACAnim anim) { AELogger.bPrintAll = true; if (anim.bEmpty) { AELogger.Log("anim empty", false); return; } AELogger.Log("anim: " + anim.name, false); int ptr_chunk_list = (int)AEDataTools.UInt32FromData(anim.data.data, 20); // header size is usually 24 but we just gotta be safe String headerstring = ""; for (int i = 0; i < ptr_chunk_list; i++) { headerstring += anim.data.data[i].ToString("X2"); } AELogger.Log("header:", false); AELogger.Log(headerstring, false); int size_chunk_list = AEDataTools.UInt16FromData(anim.data.data, 18); AELogger.Log("ptr_chunk_list: " + ptr_chunk_list.ToString("X2"), false); AELogger.Log("size_chunk_list: " + size_chunk_list.ToString("X2"), false); int ptr_current = ptr_chunk_list; for (int i = 0; i < size_chunk_list; i++) { int cur_chunk = AEDataTools.UInt16FromData(anim.data.data, ptr_chunk_list + (i * 12)); int cur_chunk_size = AEDataTools.UInt16FromData(anim.data.data, ptr_chunk_list + (i * 12) + 2); int cur_chunk_start = (int)AEDataTools.UInt32FromData(anim.data.data, ptr_chunk_list + (i * 12) + 4) + ptr_chunk_list + (i * 12); int cur_chunk_end = (int)AEDataTools.UInt32FromData(anim.data.data, ptr_chunk_list + (i * 12) + 8) + ptr_chunk_list + (i * 12); AELogger.Log((BACData.BACChunkType)cur_chunk + " " + cur_chunk_size + " " + cur_chunk_start + " " + cur_chunk_end, false); for (int j = 0; j < cur_chunk_size; j++) { AELogger.Log("frames: " + AEDataTools.UInt16FromData(anim.data.data, cur_chunk_start + j * 4).ToString() + "-" + AEDataTools.UInt16FromData(anim.data.data, cur_chunk_start + j * 4 + 2).ToString(), false); } } headerstring = ""; for (int i = 0; i < anim.data.data.Count; i++) { headerstring += anim.data.data[i]; } AELogger.Log(headerstring, false); //AELogger.Log("num subanims: " + anim.data.data[ptrHeader + 2].ToString("X2"), false); }
private void exportButton_Click(object sender, EventArgs e) { BACData.BACAnim outAnim = currentBAC.GetAnimAt(animBox.SelectedIndex); if (outAnim.bEmpty) { return; } SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "DAT files (*.dat)|*.dat|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; saveFileDialog1.FileName = outAnim.name + ".dat"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { if (saveFileDialog1.FileNames.Length > 0) { currentBAC.ExportAnimAt(animBox.SelectedIndex, saveFileDialog1.FileNames[0]); } } }