public static void Generate()
        {
            checkCanGenerate();

            Debug.Log("Generating...");

            var config = new CodeGeneratorConfig(EntitasPreferences.LoadConfig());

            var codeGenerator = new Entitas.CodeGenerator.CodeGenerator(
                getEnabled <ICodeGeneratorDataProvider>(config.dataProviders),
                getEnabled <ICodeGenerator>(config.codeGenerators),
                getEnabled <ICodeGenFilePostProcessor>(config.postProcessors)
                );

            var dryFiles = codeGenerator.DryRun();
            var sloc     = dryFiles
                           .Select(file => file.fileContent.ToUnixLineEndings())
                           .Sum(content => content.Split(new [] { '\n' }, StringSplitOptions.RemoveEmptyEntries).Length);

            var files = codeGenerator.Generate();
            var totalGeneratedFiles = files.Select(file => file.fileName).Distinct().Count();
            var loc = files
                      .Select(file => file.fileContent.ToUnixLineEndings())
                      .Sum(content => content.Split(new [] { '\n' }).Length);

            foreach (var file in files)
            {
                Debug.Log(file.generatorName + ": " + file.fileName);
            }

            Debug.Log("Generated " + totalGeneratedFiles + " files (" + sloc + " sloc, " + loc + " loc)");

            AssetDatabase.Refresh();
        }
示例#2
0
        public static void Generate()
        {
            checkCanGenerate();

            Debug.Log("Generating...");

            var config = new CodeGeneratorConfig(EntitasPreferences.LoadConfig());

            var codeGenerator = new Entitas.CodeGenerator.CodeGenerator(
                getEnabled <ICodeGeneratorDataProvider>(config.dataProviders),
                getEnabled <ICodeGenerator>(config.codeGenerators),
                getEnabled <ICodeGenFilePostProcessor>(config.postProcessors)
                );

            var progressOffset = 0f;

            codeGenerator.OnProgress += (title, info, progress) => {
                var cancel = EditorUtility.DisplayCancelableProgressBar(title, info, progressOffset + progress / 2);
                if (cancel)
                {
                    codeGenerator.Cancel();
                }
            };

            var dryFiles = codeGenerator.DryRun();

            progressOffset = 0.5f;
            var files = codeGenerator.Generate();

            EditorUtility.ClearProgressBar();

            var totalGeneratedFiles = files.Select(file => file.fileName).Distinct().Count();

            var sloc = dryFiles
                       .Select(file => file.fileContent.ToUnixLineEndings())
                       .Sum(content => content.Split(new [] { '\n' }, StringSplitOptions.RemoveEmptyEntries).Length);

            var loc = files
                      .Select(file => file.fileContent.ToUnixLineEndings())
                      .Sum(content => content.Split(new [] { '\n' }).Length);

            Debug.Log("Generated " + totalGeneratedFiles + " files (" + sloc + " sloc, " + loc + " loc)");

            AssetDatabase.Refresh();
        }
        public static CodeGenFile[] Generate(Assembly assembly, string[] poolNames, string[] blueprintNames, string directory, ICodeGenerator[] codeGenerators)
        {
            var provider = new TypeReflectionProvider(assembly.GetTypes(), poolNames, blueprintNames);

            return(CodeGenerator.Generate(provider, directory, codeGenerators));
        }