Skip to content

EnTT v3.3.0

Compare
Choose a tag to compare
@skypjack skypjack released this 22 Feb 14:49
· 5088 commits to master since this release

Changelog:

  • config
    • Using atomics is no longer the default (ENTT_NO_ATOMIC became ENTT_USE_ATOMIC).
    • ENTT_DISABLE_ASSERT no longer exists, ENTT_ASSERT can be redefined now.
  • hashed_string
    • Static to_value renamed to value.
    • The helper function is no longer recursive (long names are now accepted).
  • delegate:
    • Support for unbound members (data and functions).
  • sigh/sink:
    • Support for unbound members (data and functions).
  • sparse_set:
    • Renamed reset to clear.
  • storage:
    • Renamed reset to clear.
    • Added range-construct.
  • registry
    • registry::create doesn't accept anymore a list of default constructible types to assign.
    • Added any to know if an entity has any component from a set.
    • Added range-assign by copy and range-assign from ranges.
    • Added create with hint.
    • Added range-remove
    • Added multi-component remove.
    • Added clear as a replacement for reset<T>() and reset().
    • Added remove_if_exists as a replacement for reset<T>(entity).
    • Added data to get the internal representation of entities (serialization purposes).
    • Added an overload to assign to assign entities to an empty registry (serialization purposes).
    • Added a visit overload to return the runtime identifiers for the components managed by a registry.
    • Added a visit overload to return the runtime identifiers for the components owned by an entity.
    • Added a ctx overload to return the runtime identifiers for the context variables stored in a registry.
    • Added in-place replace member function, deprecated old replace-with-arguments.
    • Added single component prepare functionality (suitable for custom pools).
    • Removed misplaced assert from clone and stomp functionalities.
    • Removed reset member functions (use remove and clear instead).
    • Removed range-stomp.
    • Renamed stomp to stamp.
    • Removed spawning create.
    • Pool access is no always O(1) after the warm-up (it was O(N) before in case of named types).
    • Updated assign to make it stable in case listeners mess with components.
    • Callbacks no longer receive components, use the registry and the entity to get them.
    • Callbacks receive the registry as the first parameter, then the entity.
    • Deprecated stamp and clone (see updated doc for more details).
  • view
    • All iterators are at least bidirectional.
    • Much faster contains.
    • Added front and back to get the first and the last entities.
  • group
    • All iterators are at least bidirectional.
    • Much faster contains.
    • Added front and back to get the first and the last entities.
  • meta
    • Added support for properties to opaque meta types.
    • Added support for non-copyable types to meta_any.
    • Added alias member function to factory and deprecated type.
    • Added alias member function to all meta objects and deprecated identifier.
    • Added meta_type::id to get the underlying type id (see type_info<T>::id for more details).
  • dispatcher
    • Renamed discard in clear for consistency.
  • type_traits
    • Added member_class and member_class_t to get the class from a pointer-to-member type.
  • attribute (new)
    • ENTT_EXPORT, ENTT_IMPORT, ENTT_API, ...
  • type_info (new)
    • Full featured, SFINAE-friendly type_info class template used to provide consistent identifiers and allow custom generators (id static member function).
    • Non-standard compile-time solution and standard runtime fallback that work in 99% of cases.
  • EnTT across boundaries
    • Named types are no longer available nor required.
    • EnTT works across boundaries transparently in many cases now and supports per-type and per-feature generators if required.
  • Renamed to_integer in to_integral (see ENTT_OPAQUE_TYPE for custom identifiers).
  • entt::component doesn't exist anymore (use entt::type_info<T>::id() instead).
  • Full noexcept-ness review.
  • Updated forward-.hpp files.
  • Removed support for Bazel (no longer maintained by community).
  • Removed mod example (there are now better ways to write a plugin system).
  • Performance improvements here and there (eg sparse_set and meta).
  • Reduced compilation time (work in progress).
  • Updated build system (more modern cmake, less warnings with very strict checks).

Be aware that this release contains some non-backward compatible changes.
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.

I started a long term process to reduce the number of instantiations and therefore speed up the compilation.
This release already contains some changes in this regard. Still a work in progress though.