Skip to content

EnTT v3.1.0

Compare
Choose a tag to compare
@skypjack skypjack released this 29 Aug 14:45
· 5095 commits to master since this release

Changelog:

  • Added radix_sort algorithm.
  • Resource handles are now mutable.
  • Small enhancement to the actor class.
  • entt::null no longer takes the version into account.
  • Updated the codebase so as to remove direct dependencies on hashed strings (eg runtime reflection system).
  • Added support for std::wstrings to hashed string (see the hashed_wstring class and the _hws literal).
  • Entity identifiers are enum classes, user defined types are allowed (see entt::entity and ENTT_OPAQUE_TYPE).
  • entt::registry::component_type has been replaced by the opaque identifier entt::component.
  • Batch creation returns iterators and no longer raw pointers.
  • Added two overloads of registry::create to spawn (literally clone) entities from a prototype.
  • Added registry::stomp to clone/overwrite entities locally or between different registries.
  • Added registry::ctx_or_set to get or create context variables at once (similar to registry::get_or_assign for components).
  • Easy set up for short circuits on the registry class and cross events between different registries.
  • The arguments of the signals emitted by the registry class are entity/registry/component and no longer registry/entity/component.
  • registry::clone accepts also an exclusion list to opt-out from the cloning functionality.
  • Added view::less and group::less. They work like each but they don't return empty types.
  • Added the possibility to sort free instances for owned types (see registry::sort).
  • It's now possible to sort non-owning groups using a custom comparison function.
  • Added excluded components to the list of template parameters of a group.
  • Full featured as_group helper, it supports also observed and excluded components.
  • Added cache::each to allow iteration of all resources in a cache.
  • A more flexible delegate class that accepts also functions with a list of parameters that is shorter than that of the delegate itself.
  • delegate works also with move only types and non-const references.
  • delegate::operator== and delegate::operator!= test the instance as a whole.
  • Removed collector from sigh type, turned sig::collect in a function template.
  • Reviewed sink::disconnect (and added another overload to remove all the listeners at once based on instances or payload).
  • Added connection and scoped_connection, the former is now the return value of sink::connect.
  • delegate and sink accept only references for instances and values, no longer naked pointers.
  • Curried functions return their values as references, no longer as naked pointers.
  • Introduced the observer class to ease the definition of reactive systems.
  • Greatly improved the runtime reflection system and reduced to a minimum the number of copies when meta_any is involved.
  • Added support for void to meta_any, it's treated as a normal type but it contains no values.
  • Added meta_any::try_cast (extended-if-friendly function), assignment operators, in-place constructors and so on.
  • meta_any can finally be used to work also with unmanaged objects.
  • Return values for meta_func are void-friendly and convert to false only in case of errors.
  • Setters and getters for meta_data receive instances as references, no longer as pointers.
  • Added the possibility to set free/member functions as conversion functions on meta_conv.
  • Introduced policies (as_is, as_void, as_alias) in the runtime reflection system.
  • Defined type_list_size and type_list_size_v to get the size of a type list.
  • Fixed a major bug in the clone functionality of the registry class.
  • Fixed a major bug in the range destroy of the registry class.
  • Fixed group::sort with components.
  • Bazel as an alternative build system.
  • Added Conan support in editable mode.
  • Added support for VS2019 through appveyor (CI).
  • Performance improvements here and there (eg construction/destruction of components).

Classes and features that are no longer available starting from this version:

  • prototype: registry::stomp makes it easier to use a prototype-registry for the same purpose.
  • dependency (and therefore connect, disconnect): new signatures for callbacks allow for short circuits.
  • invoker and basic collectors (null and void ones): added an explicit collect function to sigh.
  • maybe_atomic_t: no longer required.

The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
I've also updated the FAQs and the section EnTT in Action with more and more examples.