Releases: sschmid/Entitas
Entitas 0.46.0
As always, the Unity Asset Store version might take a few days to be processed and accepted by Unity. Please check for updates in 2 - 4 days.
This release is a maintenance release as announced here:
As the project got more mature the Entitas repository not only contained the ECS core but also a few other modules like Logging, Serialization, Networking, Code Generator, Common Utils and more. The goal of this refactoring was to extract reusable modules and increase the focus of the Entitas repository on ECS. Reusable modules have been successfully extracted to their own standalone projects. Overall, with the increased focus that is achieved by having standalone projects I expect the quality to raise, too. This is generally the case when you have reusable code that is battle tested in multiple different scenarios.
As mentioned in #508 those projects all have the DesperateDevs
namespace. You maybe already know about Desperate Devs because of the new YouTube channel where I will upload more and more Video on ECS, best practices and Software Architecture. Subscribe if you don't want to miss future videos.
https://www.youtube.com/channel/UC2q7q7tcrwWHu5GSGyt_JEQ
As a result of this refactoring I was able to remove a lot of noise from the Entitas repository and I could easily fix platform depended bugs without any distraction.
Entitas will benefit from having the Desperate Devs dependencies as it enforces modularity and reusability. Additionally, it will be possible to use awesome tools like TCPezy (DesperateDev.Networking) and Jenny (DesperateDevs.CodeGeneration) independently.
Breaking changes
Please follow the Entitas upgrade guide
Obsolete notice
- Removed methods marked obsolete in 0.42.0 from April 2017
- Blueprints are now completely removed from the zip files (sources still available)
Preferences
- Showing properties name in Edit Button
Jenny (aka Code Generator)
- CodeGeneratorPreferencesDrawer will keep unavailable plugins #496
- Added Display Dialog for auto import
- Added a secret and hidden cli command, can you find it? ❤️
TCPezy (aka entitas server)
- Fixed Unhandled Exception (appeared on Windows only) #489
Other
- Changed language level of all projects to C# 4.0
- Deleted CodeGenerator Unity Test project
Entitas 0.45.1
Entitas 0.45.0
Thanks for the feedback on the new code generator so far. This update contains a lot of great improvments.
As always, the Unity Asset Store version might take a few days to be processed and accepted by Unity.
Please check for updates in 2 - 4 days.
Breaking changes
Please follow the Entitas upgrade guide
Entitas
- Fixed flag components increasing the componentPool stack #445
- Logging all retained entities in ContextStillHasRetainedEntitiesException #448
- Added support for multiple indexed members per component #464
public sealed class MyComponent : IComponent {
// Multiple fields are now supported
[EntityIndex]
public int value;
[EntityIndex]
public int otherValue;
}
// will generate
context.GetEntitiesWithMyValue(...);
context.GetEntitiesWithMyOtherValue(...);
CodeGenerator
- Displaying more prominent popup in Unity when trying to generate with compile errors #463
- AssemblyResolver won't append dll to exe extension
- Changed code generator keys and removed default values
- Changed code generator cli keys and removed default values
- Added auto-import command. Use
entitas auto-import
to automatically populate Entitas.properties entitas status
command will detect potential collisions, e.g. duplicate providers from the default plugins and the roslyn pluginsentitas fix
can resolve plugin collisionsentitas fix
command will tell you to press any key- Removed
-a
keepAlive in favour ofentitas server
andentitas client
- Fixed client only sending first command to server #482
- Default Plugins are now in folder called Entitas
- Refactored all commands and simplified many utils methods
Entitas.exe
now with capital E
Roslyn
- Added custom support for multi-dimensional arrays types like
int[,,]
#481
Let me know if more types need custom support.
Migration
- Added migration for 0.45.0
Entitas 0.44.0
As always, the Unity Asset Store version might take a few days to be processed and accepted by Unity.
Please check for updates in 2 - 4 days.
Unity CodeGenerator
- Added new menu item which connects to an external code generator server instance
CodeGenerator CLI
- Added server command
- Added client command
- Added startCodeGenerator files for macOS and Windows
Example
Start the code generator server by double clicking startCodeGenerator
on macOS or startCodeGenerator.bat
on Windows, or use the terminal
$ mono CodeGenerator/entitas.exe server
You can now either use the new Unity menu item Tools/Entitas/Generate with external Code Generator
which connects to a running server and sends the gen
command or connect yourself like this
$ mono CodeGenerator/entitas.exe client gen
This will connect to a running server and send the gen
command. This is useful if you want to add your own custom commands in your IDE like Visual Studio or Rider (or others).
Using the code generator server and client is optional but can greatly improve your workflow and
can drastically reduce the overhead of generating new files.
Entitas 0.43.0
As always, the Unity Asset Store version might take a few days to be processed and accepted by Unity. Please check for updates in 2 - 4 days.
Breaking changes
The new code generator is part of Entitas.Roslyn
. The Roslyn Plugins are now called Entitas.Roslyn.CodeGeneration.Plugins
. If you already tested the new code generator beta, please update Entitas.properties
Entitas.Roslyn.CodeGeneration.Plugins
Entitas.Roslyn.CodeGeneration.Plugins.ComponentDataProvider
Entitas.Roslyn.CodeGeneration.Plugins.EntityIndexDataProvider
New mandatory keys have been added to Entitas.properties. You can automatically add them by running entitas fix
CodeGenerator
- Added
ICodeGeneratorCachable
to cache and share objects between multiple plugins to avoid redundant calculations - Using the objectCache to share the AssemblyResolver between all plugins
- Added CodeGenerator to default searchPaths
- Added Unity menu item to generate with CLI
CodeGenerator CLI
- Updated New command to use preferences
- Added CLIConfig with new key
Entitas.CodeGeneration.CodeGenerator.CLI.Ignore.UnusedKeys
to add keys that should be ignored when runningentitas status
orentitas doctor
. You can automatically ignore keys by pressingi
- Added support for custom properties files. Each command optionally accepts a path to a properties file. This way you can have multiple different configs how to run the code generator, e.g. one with the reflection-based code generator and one with the roslyn code generator.
entitas gen My.properties
- Pretty CLI
Unity
- Added Edit Button to Entitas Preferences
Asset Store Version
- Changed project structure. The Plugins are now called
Entitas.Roslyn.CodeGeneration.Plugins
- Using the objectCache to share the ProjectParser between all plugins which speeds up the code generation process
- Updated all packages to latest version and downgraded all projects from .NET 4.6.1 to .NET 4.6
- Added more dependencies to remove warnings when running
entitas doctor
orentitas gen
Entitas 0.42.5
UPDATE: The new code generator works on Windows 10 now!
This version will submitted to the Unity Asset Store today. The Unity Asset Store version will additionally include the new Code Generator which has been successfully tested to work with macOS. I have setup a machine now to test it on Windows 10 too. I have gotten some feedback that there are issues on Windows 10 with the new code generator. Entitas and the current code generator work the same ways as in previous versions, so it is safe to upgrade also for Windows users. I will try to release a working version of the new code generator for Windows 10 as soon as possible.
General
- Refactored Preferences to fully embrace Entitas.properties and User.properties
CodeGenerator CLI
- Added format command
- keepAlive argument which will keep the process alive. This is very useful when using the new roslyn code generator to avoid reloading the whole parsing infrastructure. Using this argument ith roslyn results in super fast generation time
$ entitas gen -a
Entitas 0.42.4
Notes
Entitas development is back on track again and the wait is over. This is probably one of the last updates before Entitas reaches 1.0.0. This verion has been tested successfully in combination with the new code generator that will work even when the code is not compiling.
General
- Added support for User.properties. You can now either overwrite values sepcified in Entitas.properties or use placeholders
Create a new file called User.properties and specify the keys and values that should be overwritten. You can also specify placeholers like this ${myPlaceholder}
and specify the key either in Entitas.properties or User.properties.
see: Match One - Entitas.properties
see: Match One - User.properties
Entitas
- Groups are now enumerable to iterate over groups circumventing the internal caching and potentially reducing memory allocations #408
foreach (var e in group) {
// Look closely: no group.GetEntities()
}
CodeGenerator CLI
- Added commands add, set, remove, dump
VisualDebugging
- Fixed Entitas Stats not ignoring built-in MultiReactiveSystem in systems count
- VisualDebugging only lets you add components that the entity doesn't already have
- GUI fixes
Other
- Properties are now formatted by default for better readability
- Ensuring dependencies in build scripts
Entitas 0.42.3
Hotfix release for
- Fix Code Generation NullReferenceException in Unity 2017 #414
Entitas 0.42.2
See and discuss changes in Milestone 0.42.2
CodeGenerator
- Fix Code Generation NullReferenceException in Unity 2017 #414
- EntityIndexGenerator is sorting entity indices
- CodeGenerator fix command runs recursively #409
- Code Generator CLI maintenance
VisualDebugging
Entitas 0.42.1
Top new features:
Added missing support for flag components in ComponentEntityInterfaceGenerator
General
- CodeGenerator CLI + Plugins are now included in zips and not deployed as separate zips
CodeGenerator
- Added support for flag components in ComponentEntityInterfaceGenerator
- Removed GameState from default contexts. Defaults are now Game and Input