public static SourceDisplay[] MapGUILines(BTSource[] btlSources, BTProgram program, PandaScriptException[] pandaExceptions) { if (btlSources == null || program == null) { return(null); } var sourceDisplays = new SourceDisplay[btlSources.Length]; for (int i = 0; i < btlSources.Length; i++) { if (btlSources[i] == null) { continue; } SourceDisplay sourceDisplay = null; var tokens = BTLAssetManager.GetBTLTokens(btlSources, btlSources[i]); sourceDisplay = BTLGUILine.Analyse(tokens, i); sourceDisplays[i] = sourceDisplay; CodeMap codemap = null; if (program.codemaps != null && i < program.codemaps.Length) { codemap = program.codemaps[i]; } if (codemap != null) { BTLGUILine.MapNodes(sourceDisplay.lines, codemap); var lines = sourceDisplay.flattenLines; foreach (var line in lines) { foreach (var n in line.btnodes) { var task = n as BTTask; if (task != null && task.boundState != BoundState.Bound) { line.hasErrors = true; } } } } if (sourceDisplay != null) { var lines = sourceDisplay.flattenLines; foreach (var line in lines) { foreach (var pandaException in pandaExceptions) { if (pandaException != null) { if (pandaException.filePath == btlSources[i].url && line.lineNumber == pandaException.lineNumber) { line.hasErrors = true; } } } } } } return(sourceDisplays); }