Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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]);
                }
            }
        }