internal static void ProcessQueue(List <QueueItem> Queue) { ChaControl chaCtrl = MakerAPI.GetCharacterControl(); object MEpluginCtrl = MaterialEditor.GetController(chaCtrl); object HACpluginCtrl = HairAccessoryCustomizer.GetController(chaCtrl); object ASSpluginCtrl = AccStateSync.GetController(chaCtrl); object MRpluginCtrl = MaterialRouter.GetController(chaCtrl); object DBEpluginCtrl = DynamicBoneEditor.GetController(chaCtrl); object APKpluginCtrl = AAAPK.GetController(chaCtrl); HairAccessoryCustomizer.HairAccessoryInfos = new Dictionary <int, HairAccessoryCustomizer.HairAccessoryInfo>(); int Coordinate = chaCtrl.fileStatus.coordinateType; foreach (QueueItem item in Queue) { Logger.LogDebug($"{item.srcSlot} -> {item.dstSlot}"); HairAccessoryCustomizer.StoreSetting(chaCtrl, HACpluginCtrl, item.srcSlot); // need to do this before move PartsInfo MoreAccessories.ModifyPartsInfo(chaCtrl, Coordinate, item.srcSlot, item.dstSlot); MaterialEditor.ModifySetting(MEpluginCtrl, Coordinate, item.srcSlot, item.dstSlot); AccStateSync.ModifySetting(ASSpluginCtrl, Coordinate, item.srcSlot, item.dstSlot); MaterialRouter.ModifySetting(MRpluginCtrl, Coordinate, item.srcSlot, item.dstSlot); DynamicBoneEditor.ModifySetting(DBEpluginCtrl, Coordinate, item.srcSlot, item.dstSlot); AAAPK.ModifySetting(APKpluginCtrl, Coordinate, item.srcSlot, item.dstSlot); } ChaCustom.CustomBase.Instance.chaCtrl.ChangeCoordinateTypeAndReload(false); ChaCustom.CustomBase.Instance.updateCustomUI = true; foreach (QueueItem item in Queue) { HairAccessoryCustomizer.ModifySetting(HACpluginCtrl, item.srcSlot, item.dstSlot); // need to do this after updateCustomUI } }