コード例 #1
0
        Type CompileGraph(CodeGenMode mode, out CompilationResult results)
        {
            results = default;
            RoslynEcsTranslator translator = (RoslynEcsTranslator)GraphModel.CreateTranslator();

            translator.AllowNoJobsFallback = false;

            // because of the hack in the translator constructor, override right after
            ((EcsStencil)Stencil).UseJobSystem = mode == CodeGenMode.Jobs || mode == CodeGenMode.JobsTracing;

            var compilationOptions = CompilationOptions.LiveEditing;

            if (mode == CodeGenMode.JobsTracing || mode == CodeGenMode.NoJobsTracing)
            {
                compilationOptions |= CompilationOptions.Tracing;
            }
            results = GraphModel.Compile(AssemblyType.Memory, translator,
                                         compilationOptions);

            var results2 = results;

            Assert.That(results?.status, Is.EqualTo(CompilationStatus.Succeeded),
                        () => $"Compilation failed, errors: {String.Join("\n", results2?.errors)}\r\n{FormatCode(results2)}");
            return(EcsStencil.LiveCompileGraph(GraphModel, results, includeVscriptingAssemblies: true));
        }
コード例 #2
0
        public void InstrumentCooldownNodeModelDoesNotThrow()
        {
            var start    = GraphModel.CreateEventFunction(typeof(TestStencil.TestArchetype).GetMethod("Start"), Vector2.zero);
            var cooldown = GraphModel.CreateLoopStack <ForEachHeaderModel>(Vector2.down);
            var loopNode = cooldown.CreateLoopNode(start, -1);

            GraphModel.CreateEdge(cooldown.InputPort, loopNode.OutputPort);
            var result = GraphModel.CreateTranslator().TranslateAndCompile(GraphModel, AssemblyType.None, CompilationOptions.Tracing);

            Assert.That(result.status, Is.EqualTo(CompilationStatus.Succeeded));
            LogAssert.NoUnexpectedReceived();
        }
コード例 #3
0
        protected GraphDefinition CompileGraph(out CompilationResult results)
        {
            results = default;
            DotsTranslator translator = (DotsTranslator)GraphModel.CreateTranslator();

            var compilationOptions = CompilationOptions.LiveEditing;

            results = GraphModel.Compile(AssemblyType.Memory, translator, compilationOptions);

            var results2 = results;

            Assert.That(results?.status, Is.EqualTo(CompilationStatus.Succeeded),
                        () => $"Compilation failed, errors: {String.Join("\n", results2?.errors)}");
            return(((DotsTranslator.DotsCompilationResult)results).GraphDefinition);
        }
コード例 #4
0
        Type CompileGraph(CodeGenMode mode)
        {
            RoslynEcsTranslator translator = (RoslynEcsTranslator)GraphModel.CreateTranslator();

            translator.AllowNoJobsFallback = false;

            // because of the hack in the translator constructor, override right after
            ((EcsStencil)Stencil).UseJobSystem = mode == CodeGenMode.Jobs;

            CompilationResult results = GraphModel.Compile(AssemblyType.Memory, translator,
                                                           CompilationOptions.LiveEditing);

            if (results?.sourceCode != null && results.sourceCode.Length != 0)
            {
                LogAssert.Expect(LogType.Log, new Regex("using.*"));
                Debug.Log(results.sourceCode[(int)SourceCodePhases.Initial]);
            }

            Assert.That(results?.status, Is.EqualTo(CompilationStatus.Succeeded),
                        () => $"Compilation failed, errors: {String.Join("\n", results?.errors)}");

            return(EcsStencil.LiveCompileGraph(GraphModel, results, includeVscriptingAssemblies: true));
        }
コード例 #5
0
        void TestExtractMacro(IEnumerable <IGraphElementModel> toExtract, IO inputs, IO outputs)
        {
            MacroRefNodeModel macroRef = GraphModel.ExtractNodesAsMacro(m_MacroGraphModel, Vector2.zero, toExtract);

            Assert.That(macroRef.GraphAssetModel.GraphModel, Is.EqualTo(m_MacroGraphModel));

            inputs.Check(m_MacroGraphModel, macroRef.InputVariablePorts.ToList(), ModifierFlags.ReadOnly);
            outputs.Check(m_MacroGraphModel, macroRef.OutputVariablePorts.ToList(), ModifierFlags.WriteOnly);

            CompilationResult compilationResult = GraphModel.Compile(AssemblyType.None, GraphModel.CreateTranslator(), CompilationOptions.Default);

            Assert.That(
                compilationResult.status,
                Is.EqualTo(CompilationStatus.Succeeded));
            Debug.Log(compilationResult.sourceCode[0]);
        }