- All attributes can now be used for classes, interfaces and structs
- Improved component generation for classes and interfaces and added support for default pool [Pool]
- Added support to CustomComponentNameAttribute to generate multiple components with different names for one class or interface
// This will automatically generate PositionComponent and VelocityComponent for you
[Pool, CustomComponentName("Position", "Velocity")]
public struct IntVector2 {
public int x;
public int y;
}
- Added support for generating components for structs
- Not generating obsolete pool attributes for generated classes
- Removed obsolete code
- Generating components for attributed classes and interfaces
// will automatically generate SomeClassComponent for you
[Core]
public class SomeClass {
public string name;
public SomeClass(string name) {
this.name = name;
}
}
- Added support to add empty PoolAttribute to assign component to default pool
// using [Pool] will also add this component to Pools.pool
[Core, Pool]
public class SomeComponent : IComponent {
}
- Added IComponentDrawer which can draw the whole component
- Added EntitasEntityErrorHierarchyIcon to indicate retained entities in the hierarchy
- Added CharTypeDrawer
- Fixed components not updating in the inspector (#107)
- Improved SystemsMonitor and added average line
- Fixed finding all BinaryBlueprints even when not loaded
- Correctly saving Blueprints when setting all BinaryBlueprints
- Added BlueprintsNotFoundException
- BinaryBlueprintInspector creates new pools instead of using one of Pools.allPools
- Fixed pool not shown when entering play-mode while a blueprint was selected in the project view
- Not caching blueprints when UNITY_EDITOR to enable live edit
- Added support for whitespace, '-' and braces in blueprint names
- Blueprints.FindAllBlueprints orders all blueprints by name
- Fixed pool not shown in hierarchy
This release introduces Blueprints for Entitas (Beta). Update if you want to use and play with Blueprints. Read more...
- Only creating PoolObserver when Application.isPlaying
- Added BlueprintsGenerator
- Added more options for sorting systems in the inspector
- Removing event handlers from pool observer when leaving play-mode
- Added Blueprints (and more)
- Added BlueprintInspector (and more)
- Moved build scripts into a folder
- Fixed GameObjectDestroyExtension.DestroyGameObject() compile time error (#91)
- Improved SystemsMonitor.Draw() to use correct available width even with scrollbars
- Tweaked drawing systems list
- Added EntitasPoolErrorHierarchyIcon to visualize when there are erros
- Updated build_commands.sh to generate C# project from Unity
Please follow the Entitas upgrade guide
- Added IGroupObserverSystem which allows ReactiveSystems to observe multiple pools
- Added pools.CreateGroupObserver() to simplify creating a GroupObserver for multiple pools
- TypeReflectionProvider ignores abstract IComponents (#88)
- Renamed ComponentsGenerator to ComponentExtensionsGenerator
- Renamed PoolAttributeGenerator to PoolAttributesGenerator
- Moved Assets/Entitas.Unity to Assets/Entitas/Unity
- Simplified folder structure in Entitas-Unity.zip
- Ignoring obsolete code generators
- Generate button changes size depending on generators list height
- Added Feature class which inherits from Systems or DebugSystems for you, so you don't have to care anymore
- Fixed MissingReferenceException occurring occasionally when stopping game (#71)
- Added support for editing entities in EditorMode (non-playing mode)
- Fixed bug when components are added on entity creation (#87)
- Added clear buttons to search textfields
- Improved DateTimeTypeDrawer
- Added new hierarchy icons for pool and systems
- Added M0300
- Moving Entitas.Migration into Entitas/Migration/Editor when creating Entitas-Unity.zip
- Added missing support for components with properties
- Updated ComponentsGenerator to use entity.CreateComponent()
- Added missing support for components with properties
Marked old PoolMetaData constructor obsolete. If you encounter compile errors please apply Migration 0.26.0, open C# project and generate again.
- Unified Entitas sub projects into a single project
- Unified all Unity projects into a single project
- Documentation maintenance
- Removing all event handler for entity.OnEntityReleased after event got dispatched
- Printing entity in EntityIsNotDestroyedException
- Added TypeExtension.ImplementsInterface()
- Added component types to PoolMetaData
- Made all methods in Systems virtual
- Added auto generated header to generated files
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by Entitas.CodeGenerator.ComponentsGenerator.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
- Using pool specific componentIds lookup when generating matchers for components with multiple pools
- TypeReflectionProvider ignores interfaces
- Added Entitas.Serialization
- Added PublicMemberInfo
- Compile errors won't block code generation anymore
- Printing total generated file count when generating
- Destroying EntityBahviour when entity got released
- Using entity component pool and providing correct previous and new component
- Added unique color for each component in EntityInspector
- Added component search field in EntityInspector
- 'Destroy Entity' Buttons are now red
- Simplified EntityInspector and made methods static
- Unfolded components info is now shared between entities within same pool
- Added shortcuts to Entitas Preferences and Generate
- Improved TypeDrawers
- Stepper UI tweaks
- Renamed 'Script Call Optimization' to 'Optimizations'
- Added EntitasEditorLayout
- Added ReactiveSystem destructor to prevent memory leaks
- Added GroupObserver destructor to prevent memory leaks
- EntityInspector now supports dropping UnityEngine.Object into fields that are null
- UI tweaks
- Added "Script Call Optimization" to Entitas Preferences Window
- Added priority to IEntitasPreferencesDrawer
- Tweaked UI
- Added toggle to Entitas Preferences to enable or disable Visual Debugging
- Tweaked UI
Please follow the Entitas upgrade guide
- Added documentation (#55)
- Added an object pool for components (#58)
- Added pool.ClearComponentPool(index) and pool.ClearComponentPools()
- Added ENTITAS_FAST_AND_UNSAFE compiler flag. When set it will speed up e.Retain() and e.Release() (#59)
- Generated component extensions are now reusing components using a component object pool when destroying entities (#58)
- Added tests for testing the logic of generated files
- Decoupling code generation logic by adding Code Generator Intermediate Format (#62)
- Added TypeReflectionProvider
- Supporting components with namespace
- Simplified linq expressions
- Removed generated systems
- The Code Generator is not depending on Entitas anymore
- Added Entitas.CodeGenerator.TypeReflection project
- Added
keys
andvalues
getter to Properties
- Added system search field to DebugSystemsInspector
- UI tweaks and performance optimizations
- Fixed logging wrong system stats
- Added header image and current version label to Entitas Preferences Window
- Added Entitas.Unity.Migration which provides an easy way to migrate source files
- Added header image and current version label to Entitas Migration Window
- Removed redundant files and gitignored Entitas in all Unity projects (#63)
- Removed Unity projects from Entitas.sln
- Removed warnings
If you're using Entitas with Unity, please open the Entitas preferences and make sure that all your desired code generators are activated. Due to some code generator renamings the ComponentLookupGenerator and the ComponentsGenerator are inactive. Activate them (if desired) and generate.
- Added
pool.Reset()
which clears all groups, destroys all entities and resets creationIndex
- Renamed some code generators
- Added
CustomPrefixAttribute
to support custom prefixes for flag components
[CustomPrefix("flag")]
public class DestroyComponent : IComponent {
}
// default
entity.isDestroy = true;
// with CustomPrefixAttribute
entity.flagDestroy = true;
- Added "Feedback" menu item to report bugs, request features, join the chat, read the wiki and donate
- Removing invalid code generator names from Entitas.properties
- Lots of UI tweaks
- Added toggle to sort systems by execution duration
- Added toggle to hide empty systems
- ReactiveSystems are highlighted with a white font color
- Added Clear Groups Button
- Added Entity Release Button
- Splitted systems list into initialize and execute systems and visualizing them separately
- Improved stepper UI
- All migrations now contain information about on which folder they should be applied
0.26.0
- Deactivates code to prevent compile erros
- Use on folder, where generated files are located
- Added Commands.GenerateProjectFiles and using it in build.sh
- Updated build.sh and build_commands.sh to include latest MigrationAssistant.exe
Please follow the Entitas upgrade guide
- Updated projects to Unity 5.3
- Improved all error messages and added hints
- Changed and applied policy.mdpolicy to all sources
- Moved Entitas Preferences to its own Editor Window
- Added runTests.bat for running test on windows (#49)
- Updated license
- Improved AERC performance
- Added group.RemoveAllEventHandlers()
- Added pool.ClearGroups() to remove all groups and remove all their event handlers
- Added pool.ResetCreationIndex()
- Throwing exception when there are retained entities and pool.DestroyAllEntities() is called
- Renamed entity.refCount to entity.retainCount
- Fixed creating entities
- Showing warning when there are retained entities
- Added UnityTests project with Unity Test Tools to fix a Unity specific HashSet bug
- Changed entity.Retain() to accept an owner object
- Added VisualDebugging support for displaying owners of entities
- Fixed dispatching group events after all groups are updated
- Supporting ENTITAS_DISABLE_VISUAL_DEBUGGING compiler flag
- Added entity.componentNames. This field is set by Entitas.Unity.VisualDebugging to provide better error messages
- Added matcher.componentNames. This field is set by Entitas.Unity.CodeGenerator to provide better error messages
- entity.ToString() now removes ComponentSuffix
- Fixed typo
- ComponentExtensionsGenerator sets matcher.componentNames
- Removed generating unused using in ComponentExtensionsGenerator
- Added update_project_dependencies.sh
- Refactored build commands into build_commands.sh
- Added systems.ActivateReactiveSystems() and systems.DeactivateReactiveSystems which should be called when you don't use systems anymore
- Merged shell scripts
- 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