public static void AutoLinkCSVLine(Fungus.FlowchartExtend sourceObject) { if (sourceObject == null) { return; } List <AdvCSVLine> csvLineData = sourceObject.csvLines; List <AdvCSVLine> csvLineBlocks = new List <AdvCSVLine>(); //Get base CSV info foreach (var item in csvLineData) { if (item.Command.StartsWith("*")) { csvLineBlocks.Add(item); } } //Start auto link List <Fungus.Command> comps = new List <Fungus.Command>(sourceObject.GetComponents <Fungus.Command>()); for (int i = 0; i < csvLineData.Count; i++) { for (int j = comps.Count - 1; j >= 0; j--) { ICommand icmd = comps[j] as ICommand; if (icmd != null && csvLineData[i].keys == icmd.CSVCommandKey) { //if(csvLineData[i].generatedCommand == null) Debug.Log($"Find unlink CSVLine ,will be linked :{csvLineData[i].keys}"); csvLineData[i].generatedCommand = comps[j]; comps.RemoveAt(j); break; } } } foreach (var item in csvLineBlocks) { if (item.generateBlock == null) { Fungus.Block _block = sourceObject.FindBlock(item.Command); if (_block != null) { item.generateBlock = _block; } } } }
public static void RebuildCSVLine(Fungus.FlowchartExtend sourceObject) { List <AdvCSVLine> lines = new List <AdvCSVLine>(); //Commands List <Fungus.Command> comps = new List <Fungus.Command>(sourceObject.GetComponents <Fungus.Command>()); for (int i = comps.Count - 1; i >= 0; i--) { ICommand icmd = comps[i] as ICommand; if (icmd != null && !string.IsNullOrEmpty(icmd.CSVCommandKey)) { AdvCSVLine newLine = new AdvCSVLine() { keys = icmd.CSVCommandKey, Command = ParseClassToCSVCMD(comps[i]) }; lines.Add(newLine); } } sourceObject.csvLines.RemoveAll((x) => !x.Command.StartsWith("*")); sourceObject.csvLines.AddRange(lines); }