breaking change:
removed World.MaxEntityCount, obsolete
removed World.SetMaximumComponentCount, obsolete
removed World.GetMaximumComponentCount, obsolete
removed World.GetAllComponents, obsolete
removed World.GetAllEntities, obsolete
removed World.EntityDisposed
removed EntitySet.EntityAdded
removed EntitySet.EntityRemoved
removed AEntityBufferedSystem.EntityAdded
removed AEntityBufferedSystem.EntityRemoved
removed AEntitySystem.EntityAdded
removed AEntitySystem.EntityRemoved
renamed EntitySetBuilder to EntityRuleBuilder
renamed EntitySetBuilderExtension to EntityRuleBuilderExtension
renamed ActionIn to MessageHandler
fixed BinarySerializer and TextSerializer serialization of multi generic types
fixed World multi Dispose
added World.Optimize to sort entities and their components so accessing them through EntitySet always move forward in memory
added World.SubscribeEntityCreated to be called back when an entity is created
added World.SubscribeEntityEnabled to be called back when an entity is enabled
added World.SubscribeEntityDisabled to be called back when an entity is disabled
added World.SubscribeEntityDisposed to be called back when an entity is disposed
added World.SubscribeComponentAdded to be called back when a component is added on an entity
added World.SubscribeComponentChanged to be called back when a component is changed on an entity
added World.SubscribeComponentRemoved to be called back when a component is removed from an entity
added World.SubscribeComponentEnabled to be called back when a component is enabled on an entity
added World.SubscribeComponentDisabled to be called back when a component is disabled on an entity
added EntityRuleBuilder.With with a Predicate parameter
added EntityRuleBuilder.AsPredicate to get a predicate to validate the composition of an entity
added EntityRuleBuilder.AsMap to get a mapping of entities by their component value
added EntityRuleBuilder.AsMultiMap to get a mapping of entities by their component value
added Entity.NotifyChanged to defer the notification that a component has changed
added EntityRecord.NotifyChanged to defer the notification that a component has changed
added AoTHelper to help the generic code generation for AoT compilation
added EntityMap to have a one for one mapping between a component value and an entity
added EntitiesMap to have a one to many mapping between a component value and entities
added WithPredicateAttribute attribute to decorate ComponentPredicate methods in AEntitySystem and AEntityBufferedSystem to automatically build the underlying EntitySet with the predicate
added minEntityCountByRunnerIndex parameter to AEntitySystem constructors
added minComponentCountByRunnerIndex parameter to AComponentSystem constructor
added AEntityBufferedSystem type to make structural modification on entities in a safe way
added World.MaxCapacity property, obsolete MaxEntityCount
added World.SetMaxCapacity method, obsolete SetMaximumComponentCount
added World.GetMaxCapacity method, obsolete GetMaximumComponentCount
added World.Get method, obsolete GetAllComponents
added World.GetEnumerator method, obsolete GetAllEntities
added EntitySet.World property
added Components type for fast access to entities component
added World.GetComponents method
changed BinarySerializer and TextSerializer to be assembly version independent
updated System.Reflection.Emit.Lightweight to 4.7.0
breaking change:
removed SystemRunner type, use DefaultEcs.Threading.DefaultParallelRunner instead
removed ASystem type
refactored EntitySetBuilder to a more fluent syntax, Build changed to AsSet, *Either<T1, T2>() replaced by *Either<T1>().Or<T2>()
added World.GetDisabledEntities method to create EntitySet for disabled entities
added DisabledAttribute to auto construct EntitySet of disabled entities for AEntitySystem
added EntitySet.Contains method to check for an Entity inclusion
added IParallelRunner to allow custom implementation to process AEntitySystem, AComponentSystem and ParallelSystem in parallel
added Entity.World property
fixed EntityCommandRecorder SetSameAs and Dispose command
fixed size of commands in EntityCommandRecorder
fixed size of Entity
fixed WithoutEitherAttribute filter generation
fixed serialization of struct as an object
fixed serialization of Type
fixed AResourceManager.Manage for existing entities
added netstandard2.1 target
added == and != operators on Entity
added internal version on Entity, Entity.IsAlive will return false if a stored disposed entity is reused
added a helper ManagedResource static class to create ManagedResource
breaking change:
renamed EntitySetBuilder.WithAny and WithAny attribute to WithEither
removed some methods from EntitySetBuilderExtension, Either methods stops at 3 components types but it is easy to add more if needed
added WithoutEither filter for EntitySet
added WhenAddedEither filter for EntitySet
added WhenChangedEither filter for EntitySet
added WhenRemovedEither filter for EntitySet
changed BinarySerializer Exception to EndOfStreamException
updated System.Memory reference
enhanced debugging experience on World, Entity and EntitySet
added MaxCapacity, Capacity and Size properties on EntityCommandRecorder
added EntityAdded and EntityRemoved events on EntitySet
added EntityAdded and EntityRemoved events on AEntitySystem
added EntityDisposed event on World
added WhenAdded, WhenChanged and WhenRemoved filter on EntitySetBuilder to create reactive EntitySet
added WhenAddedAttribute, WhenChangedAttribute and WhenRemovedAttribute for automatique AEntitySystem EntitySet creation from a World
added Complete method on EntitySet to clear its content if created with a reactive filter
made T of ISystem contravariant
breaking changes
removed IEntitySetObserver and implementation, use EntityAdded and EntityRemoved events on EntitySet instead
fixed multiple subscriptions on IPublisherExtension.Subscribe when a virtual method is decorated and overriden in a derived type
fixed double Dispose in AResourceManager
fixed reference count in AResourceManager when World is disposed
fixed Entity.CopyTo to correctly copy enabled/disabled state
fixed non unmanaged struct serialization in BinarySerializer
added IEntitySetObserver and basic implementation EntitySetObserverEvents to get add/remove operations on EntitySet
added EntityCommandRecorder to defer structural entity changes
breaking change: SubscribeAction renamed ActionIn
added IsAlive property on Entity
added With(Type[]) and Without(Type[]) on EntitySetBuilder
added managed resource helper class (probably not final)
added debug info for World
added a way to enable/disable an entity without removing it
handled empty struct as special flag case to not waste memory
added a way to enable/disable a component on an entity without removing it
updated System.Memory reference
added WithAny filter for EntitySetBuilder
Breaking change:
added IsEnabled property on ISystem
fixed to have metadata documentation for all target frameworks
changed With and Without attribute to accept multiple types
added SubscribeAttribute to automatically subscribe to decorated methods
changed World.SetMaximumComponentCount return type and added World.GetMaximumComponentCount
broke compatibility with BinarySerializer v0.7.0 produced data
added IPublisher abstraction on World
fixed IEnumerable serialization/deserialization
relaxed World size at creation to allow growth when needed
reduced cpu usage of multithreading SystemRunner when idling
made ISystem implements IDisposable
added WithAttribute and WithoutAttribute attributes to define EntitySet from World in AEntitySystem
added RemoveFromChildrenOf and RemoveFromParentsOf methods on Entity to remove hierarchy of dispose chain
BinarySerializer and TextSerializer now handle abstract types and types with no default constructor
some fixes on BinarySerializer and TextSerializer
added serialize feature to World and Entity
renamed AEntitySetSystem base class to AEntitySystem
renamed World.SetComponentTypeMaximumCount method to SetMaximumComponentCount
inner improvements
added base system class to update an EntitySet
added base system class to update a component type on a World
added system class to process custom Action as update
added system class to update sequentially multiple systems
added system class to update in parallel multiple systems
added a way to build entities hierarchy for dispose chain
Entity.Get is now unsafe: exception is more cryptic if it does not have a component but it's faster so eh
updated System.Memory reference
relaxed the need to create EntitySet before creating Entity
added default value to Entity.Set
fixed leak with EntitySetBuilder
fixed Entity.Remove for multiple entity with the same component
fixed refCount bug when disposing Entity