- Renamed XyzEditor to XyzInspector
- Streamlined naming
- Simplified adding a component at runtime
- buildPackage.sh now creates Entitas-CSharp.zip and Entitas-Unity.zip
- Added support for adding components to multiple entities at once at runtime
Please follow the Entitas upgrade guide
- Throwing exception when attempting to generate while Unity is still compiling or assembly won't compile
- Added support for creating entities and adding components at runtime
Before updating, please follow the Entitas upgrade guide
- Gerneral
- Updated and applied policy
- Reimplemented new matcher AnyOf and NoneOf
Matcher.AllOf(Matcher.A, Matcher.B)
.AnyOf(Matcher.C, Matcher.D)
.NoneOf(Matcher.E, Matcher.F);
- Updated generators to work with new matchers
- PoolsGenerator generates Pools.allPools (#39)
- Code Generators convert local newline to unix newline
- Changed CodeGeneratorConfig.disabledCodeGenerators to CodeGeneratorConfig.enabledCodeGenerators
- Added reactiveSystem.Clear() and systems.ClearReactiveSystems()
- Added IClearReactiveSystem. When implemented, clears reactive system after execute finished
- Entitas
- GroupObserver retains entities only once
- PoolObserver now shows retained entities
- Destroying EntityBehaviour e.OnEntityReleased instead of e.OnComponentRemoved
- New logo
- Throwing an exception when releasing an entity that is not destroyed yet (#32)
- Added hierarchy icon
- Renamed DebugSystems related classes
- buildPackage.sh includes HierarchyIcon.png.meta
Please follow the Entitas upgrade guide
- Entitas
- Restored previous pool.DestroyEntity() behaviour
- IReactiveSystem and IMultiReactiveSystem changed and use
TriggerOnEvent
- Use the command line tool
MigrationAssistant.exe
to automatically migrate IReactiveSystem - Renamed IStartSystem.Start to IInitializeSystem.Initialize (#21)
- Entitas
- e.RemoveAllComponents() updates toString cache, even if entity has no components
- Added AERC (Automatic Entity Reference Counting) (#30, solves #25)
- Reduced gc allocations in e.RemoveAllComponents()
- Reduced gc allocations in pool.CreateEntity() and pool.DestroyEntity()
- pool.DestroyEntity() will clean suscribed event delegates of entities (#27)
- entity.ToString() will always use component type
- Streamlined and refactored tests and sources
- Improved SystemMonitorEditor graph performance (#14)
- Added M0220 (Migrates IReactiveSystem to combine trigger and eventTypes to TriggerOnEvent)
- Updated migration descriptions
- Removed project files
- Renamed updateDependencies.sh to updateProjects.sh
- buildPackage.sh includes EntitasUpgradeGuide.md in Entitas.zip
- Entitas.Migration
- Changed target framework to .NET 3.5 to fix build errors in VisualStudio (#22)
- Changed pool.DestroyEntity(entity) behaviour
- won't trigger group.OnEntityRemoved anymore
- triggers group.OnEntityWillBeDestroyed
- removes entity from all groupObserver.collectedEntities
- ReactiveSystem doesn't pass on destroyed entities anymore
- ReactiveSystem doesn't call Execute() when filtered entities.Count == 0
- Added project files (#18)
- Entitas
- Removed all matchers except AllOfMatcher
- Added
IEnsureComponents
to optionally ensure entities passed in via ReactiveSystem have certain components - Added
IExcludeComponents
to optionally exclude entities passed in via ReactiveSystem - Added support for multiple PoolAttributes on components
[PoolA, PoolB, PoolC]
public class SomeComponent : IComponent {}
- Added
disabledCodeGenerators
to CodeGeneratorConfig - Added code generator toggles to CodeGeneratorPreferencesDrawer
- Nicer stats
- GroupObserver supports observing multiple groups
- Added support for IMultiReactiveSystem
- Added internal entity._isEnabled to prevent modifying pooled entities
- Replaced internal object pool with Stack
- Fixed generated replace method, when replacing non existent component
- Drastically improved performance and memory usage by caching ToString() and reducing setting gameObject.name
Please follow the Entitas upgrade guide
-
Entitas
- Added new e.OnComponentReplaced and removed all *WillBeRemoved events
- Added component index and changed component to OnEntityAdded and OnEntityRemoved
- IReactiveSystem.Execute takes List instead of Entity[]
- Entitas now runs without producing garbage!
-
Entitas.CodeGenerator
- Removed support for properties in components
-
Entitas.Unity.VisualDebugging
- Replaced DebugPool with a more flexible PoolObserver
- Added group.OnEntityUpdated event with previous and new component
- ComponentExtensionsGenerator generates component object pool
- Converting newlines in generated files to Environment.NewLine (Pull request #11, thanks @movrajr)
- Added policy.mdpolicy
- Added ReactiveSystem.Activate() and .Deactivate()
- Displaying nested systems hierarchy for DebugSystems
- Unchecking a ReacitveSystem in VisualDebugging deactivates it
- Fixed #9
- ComponentExtensionsGenerator now supports properties
- Use the command line tool
MigrationAssistant.exe
to automatically migrate- Changed IReactiveSystem.GetTriggeringMatcher to IReactiveSystem.trigger
- Changed IReactiveSystem.GetEventType to IReactiveSystem.eventType
Please follow the Entitas upgrade guide
- Fixed code generation issues on Windows by converting and normalizing line endings
- Fixed EntitasCheckForUpdates.CheckForUpdates() by temporarily trusting all sources
- Added
systemCodeGenerators
to CodeGenerator.Generate()
CodeGenerator.Generate(Type[] types, string[] poolNames, string dir,
IComponentCodeGenerator[] componentCodeGenerators,
ISystemCodeGenerator[] systemCodeGenerators,
IPoolCodeGenerator[] poolCodeGenerators)
- Added PoolsGenerator which creates a getter for all pools
var pool = Pools.pool;
var metaPool = Pools.meta;
- Added SystemExtensionsGenerator
new Systems()
.Add(pool.CreateGameBoardSystem())
.Add(pool.CreateCreateGameBoardCacheSystem())
.Add(pool.CreateFallSystem())
.Add(pool.CreateFillSystem())
.Add(pool.CreateProcessInputSystem())
.Add(pool.CreateRemoveViewSystem())
.Add(pool.CreateAddViewSystem())
.Add(pool.CreateRenderPositionSystem())
.Add(pool.CreateDestroySystem())
.Add(pool.CreateScoreSystem());
- Added Components, Systems & Pools sub folders to generated folder
- Properties split with Environment.NewLine instead of '\n'
- Entitas preferences appends "/Generated/" to generated folder if necessary
- Using Queue for SystemsDebugEditor.systemMonitorData
- Moved system getters from Systems to DebugSystems
- Generated ComponentIds use array instead of dictionary for component name lookup
- Added "Step manually" to DebugSystems
- Added activate / deactivate systems at runtime
- Displaying Systems.totalSystemsCount in SystemsDebugEditor
- Added SystemsMonitor visual graph
- Removed override DebugSystems.DestroyAllEntities()
- Added entitas_version file
- Added CreateSystem(ISystem) to PoolExtensions
- Fixed typo GroupObserver.ClearCollectedEntities()
- Added "Check for updates..." menu item
- Added Stats menu item to log current components, systems and pools
- Upgraded all Unity projects to Unity 5
- Added Systems class
- Re-combined pool extensions for creating systems to pool.CreateSystem() and removed pool.CreateStartSystem() and pool.CreateExecuteSystem()
- Fixed: Pool won't destroy entities it doesn't contain
- Properties now support multiline values and placeholder replacement with ${key}
- Added fluent api to Entity
pool.CreateEntity()
.IsGameBoardElement(true)
.IsMovable(true)
.AddPosition(x, y)
.AddResource(Res.Piece0)
.IsInteractive(true);
- CodeGenerator takes arrays of IComponentCodeGenerator and IPoolCodeGenerator to generate files so you can easily provide your own custom code generators
- Added dialog for 'Migrate Matcher' menu item
- Added DebugSystems
- Added HashSetTypeDrawer
- Entitas 0.12.0 generates prefixed matchers based on the PoolAttribute and introduces some API changes. Please follow the Entitas upgrade guide
- Split into multiple modules and seperate projects. Entitas now consists of
- Entitas
- Entitas.CodeGenerator
- Entitas.Unity
- Entitas.Unity.CodeGenerator
- Entitas.Unity.VisualDebugging
- Added IEntitasPreferencesDrawer to be able to extend the Entitas preferences panel
- Entitas preferences internal keys changed. Please check your settings in projectRoot/Entitas.properties and update keys
- Entitas.CodeGenerator.GeneratedFolderPath -> Entitas.Unity.CodeGenerator.GeneratedFolderPath
- Entitas.CodeGenerator.Pools -> Entitas.Unity.CodeGenerator.Pools
- Added support to set fields to null
- Added support to create a new instance if the value of a field is null
- Added IDefaultInstanceCreator to create default objects for unsupported types
- Added IDefaultInstanceCreator implementations for array, dictionary and string
- Added support to insert and remove elements from lists, arrays and dictionaries
- Added name property to DebugPool
- Added VisualDebuggingConfig and VisualDebuggingPreferencesDrawer
- EntityDebugEditor can generate IDefaultInstanceCreator and ITypeDrawer implementations for unsupported types
- Fixed: handling null values
- Renamed ICustomTypeDrawer to ITypeDrawer
- Big refactoring to simplify drawing types
- buildPackage.sh keeps uncompressed source files in bin folder
- Added updateDependencies.sh which updates all dependencies of Entitas.Unity.CodeGenerator, Entitas.Unity.VisualDebugging and tests
- Renamed and moved files and folders to be more consistent with the new project structure
- Entitas 0.12.0 generates prefixed matchers based on the PoolAttribute and introduces some API changes. Please follow the Entitas upgrade guide
- Added IStartSystem and pool.CreateStartSystem() extension
- Renamed pool.CreateSystem() to pool.CreateExecuteSystem()
- Added pool.CreateStartSystem()
- Added EntitasUpdater to automatically update the introduced matcher API changes
- Fixed null exceptions
- Added support for multi dimensional and jagged arrays
- Removed Debug.Log
- Added Code Generator PreferenceItem
- set generated folder path
- define multiple pools
- Added PoolAttributeGenerator
- Generated Matcher is now prefixed based on PoolAttribute (e.g. UIMatcher)
- Generating ToString() for matchers to print component name instead of index
- IndicesLookupGenerator generates indices ordered alphabetically
- Added TypeGenerator to streamline string generation from types
- Added support for nested classes
- Added Properties and CodeGeneratorConfig to serialize Entitas preferences to file
- Removed warning in AbstractCompoundMatcher
- buildPackage.sh only builds when all tests are passing
- buildPackage.sh deletes meta files before creating zip archive
- Entitas 0.10.0 included lots of renaming. Please follow the Entitas upgrade guide if you are on < v0.10.0
- Added AllOfCompoundMatcher
- Added AnyOfMatcher
- Added AnyOfCompoundMatcher
- Added NoneOfMatcher
- Added NoneOfCompoundMatcher
- Updated Entitas to handle any implementation of IMatcher
- Fixed dispatching OnComponentAdded when replacing a non existing component with null
- Optimizations
- Added support for custom type drawers
ICustomTypeDrawer
- Added component folding and pooled entities count
- Added groups to PoolDebugEditor
- Added support for IList
- UI improvements
- Fixed typeShortcuts to use type.FullName to support UnityEngine.Object (conflicted with System.Object)
- Added EntitasCodeGeneratorMenuItem
- Moved and renamed some folders
- Added buildPackage.sh which creates a bin/Entitas.zip with all necessary source files
- Entitas 0.10.0 includes lots of renaming. Please follow the Entitas upgrade guide
- Added empty ISystem and IExecuteSystem for more flexibility
- Added public creationIndex to Entity
- Observer is now on group not on pool
- Removed WillBeRemovedSystem and observer
- Added CreateSystem to PoolExtension
- Added fast entities count call to Pool
- Added creationIndex to entity.ToString()
- pool.CreateEntity() and pool.DestroyEntity() are now virtual
- Added VisualDebugging
- Supports enums nested in components
- Added option to [DontGenerate] to ignore generating index, too