-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Default Code Generator Plugins
The default installation of Entitas comes with these plugins, sorted by assembly.
All listed plugins are executed in dry runs unless otherwise stated.
Priority: 0
Ensures that your project does not use Unity's .NET 3.5 equivalent profile, which is deprecated. If your project still needs to support it, disable this plugin.
This plugin is executed in dry runs, even though it modifies your project file where applicable.
Priority: -10
Ensures that the configured target directory exists, halting Jenny if not.
Priority: 0
Adds a comment to each generated source file similar to this:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by <name of ICodeGenerator plugin>.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
Not essential, but a useful reminder not to edit generated source code. This plugin only supports comment syntax for C# (and compatible languages like C++ or C); if you want to generate code in any other language (e.g. a link.xml
file), you will need to either disable this plugin or replace it with a custom one whose output changes depending on the file extension.
Priority: 0
Deletes every .cs
file (and only .cs
files) in the configured target directory to avoid conflicts with newly-generated code.
If you're generating non-C# files, you will need to provide a custom plugin similar to this one. When doing so, you can safely keep this plugin enabled.
Not executed in dry runs.
This plugin will not delete Unity-created .meta
files that correspond to generated code, but Unity itself will, invalidating any references to the corresponding source files in the process. If you need to preserve .meta
files (e.g. when creating MonoBehaviour
s), you should create a custom IPostProcessor
plugin that backs them up before this plugin is run, and restores them immediately after.
Priority: 200
Logs to stdout
a list of all files that were generated, and the plugins that generated them. If multiple files with the same name were merged, all relevant plugins will be listed.
Ai/Components/AiAgentComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Ai/Components/AiFindSafeCellComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Ai/Components/AiNextDirectionComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Ai/Components/AiPathFinderServiceComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Ai/Components/AiTargetCellComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Ai/Components/AiTargetCellPathComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Game/Components/GameBlockComboComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Game/Components/GameBlockComboFinishedComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Game/Components/GameBlockComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Game/Components/GameBlockFallingComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Game/Components/GameBlockGridAlmostOverflowingComponent.cs - Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator, Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator
Priority: 90
Merges generated files with the same filename into one, like so:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Entitas.CodeGeneration.Plugins.ComponentEntityApiGenerator.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
public partial class EngineInputEntity {
// Omitted for brevity
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Entitas.CodeGeneration.Plugins.ComponentMatcherApiGenerator.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
public sealed partial class EngineInputMatcher {
// Omitted for brevity
}
Do not disable this plugin without a suitable replacement, or else large swathes of generated code will be missing.
Priority: 95
Replaces the line endings in all generated files with your operating system's native representation, regardless of what the code generator actually outputs.
Priority: 96
Adds all generated code files to the configured project file, and removes from it all generated code files that no longer exist.
This plugin adds generated files to your .csproj
indiscriminately, even if they're not .cs
files. If you are generating files that are not C# code, you will need to disable this plugin and replace it with a custom variant that ignores non-C# files.
Not executed in dry runs.
Priority: 100
Writes all generated files to disk. Any changes to generated code made by IPostProcessor
s run after this one will not be saved.
Not executed in dry runs.
Priority: -5
Priority: 200
Priority: 0
Priority: 0
All plugins listed in this assembly are available in the free version of Entitas.
These plugins compile and load your project's assemblies, then use run-time reflection to extract data from them. This means that if any part of your project doesn't compile, these data providers (and all code generators that depend on them) will fail.
Priority: 0
Extracts data from any component class or struct that implements IComponent
, for use by almost every other code generator. Emits ComponentData
instances.
If you're using Entitas.Roslyn.CodeGeneration.Plugins.ComponentDataProvider
, you can safely disable this plugin. Otherwise, disabling this plugin will prevent almost every code generator from working.
Priority: 0
Extracts data from the configured list of contexts. Emits ContextData
instances. Do not disable this plugin without a suitable alternative.
Priority: 0
Priority: 0
Uses ComponentData
.
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Priority: 0
Note: This name of this plugin has a typo.
Priority: 0
Priority: 0
Priority: 0
Priority: 0
The plugins in this assembly are only available in the paid version of Entitas.
These plugins scan your project with Roslyn's code analysis APIs and extract information from it statically (i.e. without compilation). This means these plugins will work properly even if your code doesn't fully compile.
If you're using these plugins, you can safely disable the data providers listed in Entitas.CodeGeneration.Plugins
, as the ones in Entitas.Roslyn.CodeGeneration.Plugins
supersede them.
Priority: 0
Priority: 0
Uses ComponentData
.
Priority: 0
Priority: 0
Priority: 0
Guides: Introduction - Installation - Upgrading - FAQ - Cookbook - Contributing
Need Help? Ask a question on Discord or create an issue.
- The Basics
- Concepts
- Architecture / Patterns