Skip to content

Releases: nilpunch/massive-ecs

v18.1.2

25 Feb 12:30
Compare
Choose a tag to compare
Fix compatibility with .NET 9

v18.1.1

25 Feb 12:01
Compare
Choose a tag to compare

Add .gitignore

v18.1.0

25 Feb 11:31
Compare
Choose a tag to compare

Added

  • Assertions for numerous execution paths.

Changed

  • Destroy, Assign, Unassign, Has and Clone methods now disallow passing dead entities or IDs.
  • Filter.Empty static property has been moved to FilterRegistry and is now non-static.

v18.0.0

22 Jan 18:44
Compare
Choose a tag to compare

Changed

  • Empty type optimization (tags) now only applies to value types, instead of any type without fields.
  • Renamed TrimmedFilter to ReducedFilted and tweak some internal method names.
  • Reworked TypeIdentifier and GenericLookup.
  • Optimize FilterView.ForEach() methods for cases where a minimal set is one of the selected data sets.
  • Moved serialization to a separate package to eliminate unsafe code from the core library.
  • PageSequence now use Page struct to iterate.
  • MassiveRegistry now saves first empty for MassiveEntities on creation.

Fixed

  • IL2CPP stripping for ICopyable<T>.
  • Entities.HasHoles worked incorrectly for Packing.WithPersistentHoles.

v18.0.0-alpha

07 Jan 13:16
Compare
Choose a tag to compare

Changed

  • Empty type optimization (tags) now only applies to value types, instead of any type without fields.
  • Renamed TrimmedFilter to ReducedFilted and tweak some internal method names.
  • Reworked TypeIdentifier and GenericLookup.
  • Optimize FilterView.ForEach() methods for cases where a minimal set is one of the selected data sets.
  • Moved serialization to a separate package to eliminate unsafe code from the core library.
  • PageSequence now use Page struct to iterate.
  • MassiveRegistry now saves first empty for MassiveEntities on creation.

Fixed

  • IL2CPP stripping for ICopyable<T>.

v17.0.0

08 Dec 21:17
Compare
Choose a tag to compare

Iteration stability, sets customization, groups rework, performance improvements and more.

  • Added: Copy, move, and swap customization for data sets.
  • Added: DynamicFilter for builder-like style when working with non-generic filtering.
  • Added: TrimmedFilter, which removes the leading set from included ones, optimizing iteration.
  • Added: New packing option WithPersistentHoles.
  • Changed: Renamed PackingMode to Packing.
  • Changed: Packing now dynamically changes for the iteration leader,
    ensuring each unique entity appears only once during iteration in most cases,
    or in all cases when using the new packing option.
  • Changed: Hide setters in data structures. Added full-state assignment API.
  • Changed: Renamed IdsSource to PackedSet.
  • Changed: Renamed IManaged<T> to ICopyable<T>. Now used also for entity components cloning.
  • Changed: Renamed NonOwningGroup to Group.
  • Removed: OwningGroup for SoA access. It may return in some form in the future.
  • Removed: GroupView. Groups are now used directly as is.
  • Removed: GroupPage, GroupPageSequence and IOwnSelector.
  • Removed: Runtime/Utils folder.
  • Removed: RegistryReflectionExtensions. Reflection methods remain directly accessible.
  • Fixed: Il2CppSetOption was not applied correctly.

v17.0.0-beta

12 Nov 10:37
Compare
Choose a tag to compare

Iteration stability improvements and groups rework.

  • Changed: PackingMode now dynamically changes for the iteration leader,
    ensuring each unique entity appears only once during iteration in most cases.
  • Changed: Hide setters in data structures. Added full-state assignment API.
  • Changed: Renamed NonOwningGroup to Group.
  • Removed: OwningGroup for SoA access. It may return in some form in the future.
  • Removed: GroupView. Groups are now used directly.
  • Removed: GroupPage, GroupPageSequence and IOwnSelector.
  • Removed: Utils folder.
  • Removed: RegistryReflectionExtensions. Reflection methods remain directly accessible.
  • Fixed: Il2CppSetOption was not applied.

v16.2.0

03 Nov 13:32
Compare
Choose a tag to compare

Some minor improvements.

  • Added: Clear method for Entities.
  • Added: Clear and Clear<T> extension methods for Registry.
  • Added: Enumerator for Group.
  • Changed: Renamed Include and Exclude properties to Included and Excluded.
    This change affects filters, groups, and some variables.
  • Removed: AsIds extension method for groups. Use the new enumerator instead.

v16.1.0

02 Nov 14:28
Compare
Choose a tag to compare

Non-generic API for a better IL2CPP experience.

  • Added: Non-generic version of the Get method for GroupRegistry, making it the primary version.
  • Added: GroupPageSequence and GroupPage types to support working with owning groups in a non-generic manner.
  • Added: PageSize property to Registry.
  • Changed: Entities.AfterCreated now returns an int instead of an Entity.
  • Changed: Renamed RegistryConfig.DataPageSize to PageSize.
  • Changed: Group serialization adjusted to align with the new non-generic primary storage.
  • Fixed: Non-owning groups were not functioning when no included sets were present.
    Now they default to observing Entities.

v16.0.0

30 Oct 10:03
Compare
Choose a tag to compare

Major devirtualization and other optimizations.

  • Added: Fourth generic parameter for all Views.
  • Added: Group class, replacing the IGroup interface.
  • Added: IdsSource class, replacing the IIdsSource interface.
  • Changed: Replaced IFilter and other filters with Filter.
  • Changed: Replaced IGroup and IOwningGroup with Group and OwningGroup classes.
  • Changed: Increased default page size from 1024 to 16384 (except MassiveRegistry, which remains 1024).
  • Removed: IGroup, IFilter, and IIdsSource interfaces.
  • Removed: SetCapacity parameter; now defaults to 0 across the board.