Ejemplo n.º 1
0
        public static void Generate()
        {
            checkCanGenerate();

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

            var codeGenerators     = GetCodeGenerators();
            var codeGeneratorNames = codeGenerators.Select(cg => cg.Name).ToArray();
            var config             = new CodeGeneratorConfig(EntitasPreferences.LoadConfig(), codeGeneratorNames);

            var enabledCodeGeneratorNames = config.enabledCodeGenerators;
            var enabledCodeGenerators     = codeGenerators
                                            .Where(type => enabledCodeGeneratorNames.Contains(type.Name))
                                            .Select(type => (ICodeGenerator)Activator.CreateInstance(type))
                                            .ToArray();

            var assembly       = Assembly.GetAssembly(typeof(Entity));
            var generatedFiles = TypeReflectionCodeGenerator.Generate(assembly, config.pools, config.generatedFolderPath, enabledCodeGenerators);

            AssetDatabase.Refresh();

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

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

            Debug.Log("Generated " + totalGeneratedFiles + " files.");
        }
Ejemplo n.º 2
0
        static EntitasHierarchyIcon()
        {
            EditorApplication.hierarchyWindowItemOnGUI += onHierarchyWindowItemOnGUI;
            var config = new VisualDebuggingConfig(EntitasPreferences.LoadConfig());

            _systemWarningThreshold = int.Parse(config.systemWarningThreshold);
        }
Ejemplo n.º 3
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 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();
        }
Ejemplo n.º 4
0
        static void generateITypeDrawer(string typeName)
        {
            var config   = new VisualDebuggingConfig(EntitasPreferences.LoadConfig());
            var folder   = config.typeDrawerFolderPath;
            var filePath = folder + "Type_TypeDrawer.cs";
            var template = string.Format(TYPE_DRAWER_TEMPLATE_FORMAT, typeName);

            generateTemplate(folder, filePath, template);
        }
Ejemplo n.º 5
0
        static void generateIDefaultInstanceCreator(string typeName)
        {
            var config   = new VisualDebuggingConfig(EntitasPreferences.LoadConfig());
            var folder   = config.defaultInstanceCreatorFolderPath;
            var filePath = folder + "Default_type_InstanceCreator.cs";
            var template = string.Format(DEFAULT_INSTANCE_CREATOR_TEMPLATE_FORMAT, typeName);

            generateTemplate(folder, filePath, template);
        }
Ejemplo n.º 6
0
        static void generateITypeDrawer(string typeName)
        {
            var config   = new VisualDebuggingConfig(EntitasPreferences.LoadConfig());
            var folder   = config.typeDrawerFolderPath;
            var filePath = folder + typeName.ShortTypeName() + "TypeDrawer.cs";
            var template = TYPE_DRAWER_TEMPLATE_FORMAT
                           .Replace("${Type}", typeName)
                           .Replace("${ShortType}", typeName.ShortTypeName());

            generateTemplate(folder, filePath, template);
        }
Ejemplo n.º 7
0
        static void generateIDefaultInstanceCreator(string typeName)
        {
            var config   = new VisualDebuggingConfig(EntitasPreferences.LoadConfig());
            var folder   = config.defaultInstanceCreatorFolderPath;
            var filePath = folder + "Default" + typeName.ShortTypeName() + "InstanceCreator.cs";
            var template = DEFAULT_INSTANCE_CREATOR_TEMPLATE_FORMAT
                           .Replace("${Type}", typeName)
                           .Replace("${ShortType}", typeName.ShortTypeName());

            generateTemplate(folder, filePath, template);
        }
Ejemplo n.º 8
0
        public static CodeGenerator CodeGeneratorFromConfig(string configPath)
        {
            EntitasPreferences.CONFIG_PATH = configPath;
            var config = new CodeGeneratorConfig(EntitasPreferences.LoadConfig());
            var codeGeneratorAssembly = Assembly.LoadFrom(config.codeGeneratorAssemblyPath);

            return(new CodeGenerator(
                       getEnabled <ICodeGeneratorDataProvider>(codeGeneratorAssembly, config.dataProviders),
                       getEnabled <ICodeGenerator>(codeGeneratorAssembly, config.codeGenerators),
                       getEnabled <ICodeGenFilePostProcessor>(codeGeneratorAssembly, config.postProcessors)
                       ));
        }
Ejemplo n.º 9
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();
        }
Ejemplo n.º 10
0
        public static void Generate()
        {
            assertCanGenerate();

            var types              = Assembly.GetAssembly(typeof(Entity)).GetTypes();
            var codeGenerators     = GetCodeGenerators();
            var codeGeneratorNames = codeGenerators.Select(cg => cg.Name).ToArray();
            var config             = new CodeGeneratorConfig(EntitasPreferences.LoadConfig(), codeGeneratorNames);

            var enabledCodeGeneratorNames = config.enabledCodeGenerators;
            var enabledCodeGenerators     = codeGenerators
                                            .Where(type => enabledCodeGeneratorNames.Contains(type.Name))
                                            .Select(type => (ICodeGenerator)Activator.CreateInstance(type))
                                            .ToArray();

            Entitas.CodeGenerator.CodeGenerator.Generate(types, config.pools, config.generatedFolderPath, enabledCodeGenerators);

            AssetDatabase.Refresh();
        }
Ejemplo n.º 11
0
        static Dictionary <string, int> getContexts(Type[] components)
        {
            var defaultContext = new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).contexts[0];

            return(components.Aggregate(new Dictionary <string, int>(), (contexts, type) => {
                var contextNames = ContextsComponentDataProvider.GetContextNames(type);
                if (contextNames.Length == 0)
                {
                    contextNames = new [] { defaultContext };
                }
                foreach (var contextName in contextNames)
                {
                    if (!contexts.ContainsKey(contextName))
                    {
                        contexts.Add(contextName, 0);
                    }

                    contexts[contextName] += 1;
                }
                return contexts;
            }));
        }
Ejemplo n.º 12
0
 public ComponentDataProvider(Type[] types)
     : this(types, new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).contexts[0])
 {
 }
 public ComponentDataProvider()
     : this(Assembly.LoadFrom(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).assemblyPath).GetTypes())
 {
 }
Ejemplo n.º 14
0
 public WriteToDiskPostProcessor() : this(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).targetDirectory)
 {
 }
Ejemplo n.º 15
0
 public ContextDataProvider() : this(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).contexts)
 {
 }
        void OnEnable()
        {
            var config = EntitasPreferences.LoadConfig();

            _systemWarningThreshold = int.Parse(new VisualDebuggingConfig(config).systemWarningThreshold);
        }