Example #1
0
 public Coroutine StartCoroutine(object obj, IEnumerator coroutine, bool pool = Coroutine.PoolByDefault)
 {
     return(Coroutine.StartCoroutine(this, coroutine, pool));
 }
Example #2
0
 public Coroutine StartCoroutine(IEnumerator coroutine, CoroutineGroup group = CoroutineGroup.Tick, string tag = null, bool pool = Coroutine.PoolByDefault)
 {
     return(Coroutine.StartCoroutine(this, coroutine, group, tag, pool));
 }
        private static void GenerateCode(bool timeSliced, string[] args)
        {
            try
            {
                bool invalidArgs = false;

                if (args.Length > 0)
                {
                    if (args[0] == "cancel")
                    {
                        if (timeSlicedCodeGenerator != null && !timeSlicedCodeGenerator.Complete)
                        {
                            timeSlicedCodeGenerator.EndGenerateModules();
                        }
                        timeSlicedCodeGenerator = null;
                        return;
                    }

                    if (timeSlicedCodeGenerator != null)
                    {
                        FMessage.Log("Already generating code");
                        return;
                    }

                    CodeGenerator codeGenerator = null;

                    switch (args[0])
                    {
                    case "game":
                        AssetLoadMode loadMode        = AssetLoadMode.Game;
                        bool          clearAssetCache = false;
                        bool          skipLevels      = false;
                        if (args.Length > 1)
                        {
                            switch (args[1])
                            {
                            case "game":
                                loadMode = CodeGenerator.AssetLoadMode.Game;
                                break;

                            case "engine":
                                loadMode = CodeGenerator.AssetLoadMode.Engine;
                                break;

                            case "all":
                                loadMode = CodeGenerator.AssetLoadMode.All;
                                break;
                            }
                        }
                        if (args.Length > 2)
                        {
                            bool.TryParse(args[2], out clearAssetCache);
                        }
                        if (args.Length > 3)
                        {
                            bool.TryParse(args[3], out skipLevels);
                        }
                        codeGenerator = new CodeGenerator(timeSliced);
                        codeGenerator.GenerateCodeForGame(loadMode, clearAssetCache, skipLevels);
                        break;

                    case "gameplugins":
                        codeGenerator = new CodeGenerator(timeSliced);
                        codeGenerator.GenerateCodeForModules(new UnrealModuleType[] { UnrealModuleType.GamePlugin });
                        break;

                    case "modules":
                        codeGenerator = new CodeGenerator(timeSliced);
                        //codeGenerator.Settings.ExportMode = CodeGeneratorSettings.CodeExportMode.All;
                        //codeGenerator.Settings.ExportAllFunctions = true;
                        //codeGenerator.Settings.ExportAllProperties = true;
                        codeGenerator.GenerateCodeForAllModules();
                        break;

                    case "module":
                        if (args.Length > 1)
                        {
                            codeGenerator = new CodeGenerator(timeSliced);
                            // Tests / using these for types for use in this lib
                            //codeGenerator.Settings.CheckUObjectDestroyed = false;
                            //codeGenerator.Settings.GenerateIsValidSafeguards = false;
                            //codeGenerator.Settings.ExportMode = CodeGeneratorSettings.CodeExportMode.All;
                            //codeGenerator.Settings.ExportAllFunctions = true;
                            //codeGenerator.Settings.ExportAllProperties = true;
                            //codeGenerator.Settings.MergeEnumFiles = false;
                            codeGenerator.GenerateCodeForModule(args[1], true);
                        }
                        else
                        {
                            invalidArgs = true;
                        }
                        break;

                    case "compile":
                        CompileGeneratedCode();
                        break;

                    default:
                        invalidArgs = true;
                        break;
                    }

                    if (!invalidArgs && timeSliced && codeGenerator != null)
                    {
                        timeSlicedCodeGenerator = codeGenerator;
                        Coroutine.StartCoroutine(null, ProcessTimeSlice());
                    }
                }
                else
                {
                    invalidArgs = true;
                }

                if (invalidArgs)
                {
                    FMessage.Log(ELogVerbosity.Warning, "Invalid input. Provide one of the following: game, gameplugins, modules, module [ModuleName], compile");
                }
            }
            catch (Exception e)
            {
                FMessage.Log(ELogVerbosity.Error, "Generate code failed. Error: \n" + e);
            }
        }