Releases: nilpunch/massive-ecs
Releases · nilpunch/massive-ecs
v20.0.0
Stabilization of the new architecture.
Added
- Built-in
Systemswith customizable method running. - Polyfills for NativeAOT support.
IAutoFree<T>component interface to automatically free allocator pointers when the component is removed from an entity.Peekback(frames)method toMassiveWorldto access previousWorldstates. Can be used to impelemnt interpolation.
Changed
Allocatoris now unamanged and unified.
Fixed
- Read-only operations and queries no longer cause internal component IDs to be assigned.
Component IDs for masks are now assigned on set modification rather than when requesting a set. - Thread-safety of
QueryCachepool.
v20.0.0-alpha.5
Improved caching and iteration, query refactoring.
v20.0.0-alpha.4
Storage breaking changes.
Changed
- Sparse sets are replaces with hierarchical bitsets.
- Iteration reworked to use bit scans and boolean operations on the entities in each pool of interest.
- And much more.
v20.0.0-alpha.3
Changed
- Renamed
Entityidentifier toEntifier. - Renamed
EntitiestoEntifiers. - Renamed
SetRegistrytoSets. - Renamed
FilterRegistrytoFilters. - Renamed
AllocatorRegistrytoAllocators. Destroy()no longer throws when called with a dead entity.- Replaced
MassiveAssertwith individual exceptions. World.Set()now throws if the component has no associated data.- Renamed
World.Filter()toWorld.GetFilter(). - Made
Worldact as aViewto reduce boilerplate.
Added
- New rich
Entitystruct with a clean syntax:entity.IsAliveentity.Add<Enemy>()entity.Destroy()- etc.
- Iteration over rich entities:
- using
world.ForEach((Entity entity, ref Player player, ...) => ...)queries. - using
foreach (var entity in world.Include<Player>().Entities())enumerators.
- using
StoreNegativeattribute for storing a complementary set of entities to optimize exclusion filtering:
world.Exclude<Dead>.ForEach(...);- Negation in all contexts that use component types:
world.Include<Not<Dead>>.ForEach(...); // Acts like Exclude<Dead>entity.Add<Not<Dead>>(); // Removes Dead component
v20.0.0-alpha.2
Added
Allocator, enabling fast rollbacks and serialization for collections inside components,
and allowing external tools to plug directly into the data pipeline of theWorld.
Changed
- Renamed data sets based on their usage:
- Renamed
ResettingDataSettoUnmanagedDataSet. - Renamed
SwappingDataSettoManagedDataSet.
- Renamed
- Renamed
AsserttoMassiveAssert. - Reworked
default(Entity)behaviour:- Entity ID is now stored without offset.
- Alive entities start with version 1.
- Entities with version 0 are now considered dead.
v20.0.0-alpha.1
Fixed
ViewandFilterViewsometimes choose and use not optimal minimal set.
v20.0.0-alpha
Added
DefaultValueattribute to customize the reset value for unmanaged components.
Changed
- Renamed
ForEachExtratoForEach, making it just another overload. - Renamed
MaxIdtoUsedIdsinEntitiesfor consistency withSparseSet.