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."); }
static EntitasHierarchyIcon() { EditorApplication.hierarchyWindowItemOnGUI += onHierarchyWindowItemOnGUI; var config = new VisualDebuggingConfig(EntitasPreferences.LoadConfig()); _systemWarningThreshold = int.Parse(config.systemWarningThreshold); }
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(); }
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); }
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); }
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); }
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); }
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) )); }
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 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(); }
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; })); }
public ComponentDataProvider(Type[] types) : this(types, new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).contexts[0]) { }
public ComponentDataProvider() : this(Assembly.LoadFrom(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).assemblyPath).GetTypes()) { }
public WriteToDiskPostProcessor() : this(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).targetDirectory) { }
public ContextDataProvider() : this(new CodeGeneratorConfig(EntitasPreferences.LoadConfig()).contexts) { }
void OnEnable() { var config = EntitasPreferences.LoadConfig(); _systemWarningThreshold = int.Parse(new VisualDebuggingConfig(config).systemWarningThreshold); }