Skip to content

Releases: nilpunch/massive-ecs

v19.0.1

05 Apr 17:41

Choose a tag to compare

Up fix version

v19.0.0

05 Apr 17:22

Choose a tag to compare

BREAKING CHANGE: Major renaming, groups removal.

Changed

  • Renamed Registry class to World.
  • Changed sets API:
    • Renamed Assign(id) to Add(id).
    • Renamed Unassign(id) to Remove(id).
    • Renamed IsAssigned(id) to Has(id).
    • Renamed Assign(id, data) shortcut to Set(id, data).
    • Add(id) and Remove(id) returns true if the component is added or removed
      and false if it is already present or not there.
  • Added assertions for negative arguments in some methods.

Added

  • Clone() and CopyTo(other) methods to SparseSet, DataSet<T> and World.

Removed

  • Groups.

v18.1.2

25 Feb 12:30

Choose a tag to compare

Fix compatibility with .NET 9

v18.1.1

25 Feb 12:01

Choose a tag to compare

Add .gitignore

v18.1.0

25 Feb 11:31

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

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

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

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

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

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.