Michele Caini/entt: Release v3.1.0
Name: entt
Owner: Michele Caini
Release: EnTT v3.1.0
Released: 2019-08-29
License: MIT
Release Assets:
Changelog:
- Added
radix_sortalgorithm. - Resource handles are now mutable.
- Small enhancement to the
actorclass. entt::nullno 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 thehashed_wstringclass and the_hwsliteral). - Entity identifiers are enum classes, user defined types are allowed (see
entt::entityandENTT_OPAQUE_TYPE). entt::registry::component_typehas been replaced by the opaque identifierentt::component.- Batch creation returns iterators and no longer raw pointers.
- Added two overloads of
registry::createto spawn (literally clone) entities from a prototype. - Added
registry::stompto clone/overwrite entities locally or between different registries. - Added
registry::ctx_or_setto get or create context variables at once (similar toregistry::get_or_assignfor components). - Easy set up for short circuits on the
registryclass and cross events between different registries. - The arguments of the signals emitted by the
registryclass are entity/registry/component and no longer registry/entity/component. registry::cloneaccepts also an exclusion list to opt-out from the cloning functionality.- Added
view::lessandgroup::less. They work likeeachbut 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_grouphelper, it supports also observed and excluded components. - Added
cache::eachto allow iteration of all resources in a cache. - A more flexible
delegateclass that accepts also functions with a list of parameters that is shorter than that of the delegate itself. delegateworks also with move only types and non-const references.delegate::operator==anddelegate::operator!=test the instance as a whole.- Removed collector from
sightype, turnedsig::collectin a function template. - Reviewed
sink::disconnect(and added another overload to remove all the listeners at once based on instances or payload). - Added
connectionandscoped_connection, the former is now the return value ofsink::connect. delegateandsinkaccept only references for instances and values, no longer naked pointers.- Curried functions return their values as references, no longer as naked pointers.
- Introduced the
observerclass to ease the definition of reactive systems. - Greatly improved the runtime reflection system and reduced to a minimum the number of copies when
meta_anyis involved. - Added support for
voidtometa_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_anycan finally be used to work also with unmanaged objects.- Return values for
meta_funcarevoid-friendly and convert to false only in case of errors. - Setters and getters for
meta_datareceive 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_sizeandtype_list_size_vto 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::sortwith components. Bazelas 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::stompmakes it easier to use a prototype-registry for the same purpose.dependency(and thereforeconnect,disconnect): new signatures for callbacks allow for short circuits.invokerand basic collectors (null and void ones): added an explicitcollectfunction tosigh.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.