public static void EditSubactionData(ref byte[] data, EditSubaction edit, SubactionGroup group) { for (int i = 0; i < data.Length;) { var sa = SubactionManager.GetSubaction(data[i], group); if (data[i] == 0) { break; } // get parameters var p = sa.GetParameters(data, i); // make changes edit(sa, ref p); // recompile var test = sa.Compile(p); for (int j = 0; j < test.Length; j++) { data[i + j] = test[j]; } // advance to next action i += sa.ByteSize; } }
/// <summary> /// /// </summary> /// <param name="ftdat"></param> /// <param name="ajdat"></param> /// <param name="editAnim"></param> public static void EditFighterActions(string ftdat, EditSubaction editAction) { HSDRawFile ftfile = new HSDRawFile(ftdat); if (ftfile.Roots[0].Data is SBM_FighterData data) { var sa = data.FighterActionTable.Commands; foreach (var action in sa) { editAction(action); } data.FighterActionTable.Commands = sa; ftfile.TrimData(); ftfile.Save(ftdat); } }