internal bool Build(EditorCompilation editorCompilation) { if (editorCompilation.IsCompilationTaskCompiling() || editorCompilation.IsAnyAssemblyBuilderCompiling()) { return(false); } if (status != AssemblyBuilderStatus.NotStarted) { throw new Exception(string.Format("Cannot start AssemblyBuilder with status {0}. Expected {1}", status, AssemblyBuilderStatus.NotStarted)); } var assembly = editorCompilation.CreateScriptAssembly(this); var assemblies = assembly.AllRecursiveScripAssemblyReferencesIncludingSelf().ToArray(); // Start clean everytime const string beeAssemblyBuilderDirectory = "Library/BeeAssemblyBuilder"; string beeAssemblyBuilderDirectoryInProjectDirectory = string.IsNullOrEmpty(editorCompilation.projectDirectory) ? beeAssemblyBuilderDirectory : Path.Combine(editorCompilation.projectDirectory, beeAssemblyBuilderDirectory); if (Directory.Exists(beeAssemblyBuilderDirectoryInProjectDirectory)) { Directory.Delete(beeAssemblyBuilderDirectoryInProjectDirectory, true); } var debug = compilerOptions.CodeOptimization == CodeOptimization.Debug; var buildRequest = UnityBeeDriver.BuildRequestFor(EditorCompilation.ScriptCompilationBuildProgram, editorCompilation, $"{(int)assembly.BuildTarget}{"AB"}", beeAssemblyBuilderDirectory); buildRequest.DataForBuildProgram.Add(() => BeeScriptCompilation.ScriptCompilationDataFor(editorCompilation, assemblies, debug, assembly.OutputDirectory, assembly.BuildTarget, true)); buildRequest.Target = Constants.ScriptAssembliesTarget; activeBeeBuild = new BeeScriptCompilationState { assemblies = new[] { assembly }, ActiveBuild = BeeDriver.BuildAsync(buildRequest), editorCompilation = editorCompilation, }; editorCompilation.AddAssemblyBuilder(this); InvokeBuildStarted(); return(true); }
private void InvokeBuildFinished(BeeDriverResult result) { activeBeeBuild.editorCompilation.ProcessCompilationResult(activeBeeBuild.assemblies, result, false, this); try { buildFinished?.Invoke(assemblyPath, EditorCompilation.ConvertCompilerMessages(BeeScriptCompilation .ParseAllResultsIntoCompilerMessages(result.BeeDriverMessages, result.NodeResults, EditorCompilationInterface.Instance) .SelectMany(a => a).ToArray())); } catch (Exception e) { UnityEngine.Debug.LogException(e); } }