EnTT v3.1.0
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::wstring
s to hashed string (see thehashed_wstring
class and the_hws
literal). - Entity identifiers are enum classes, user defined types are allowed (see
entt::entity
andENTT_OPAQUE_TYPE
). entt::registry::component_type
has been replaced by the opaque identifierentt::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 toregistry::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
andgroup::less
. They work likeeach
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==
anddelegate::operator!=
test the instance as a whole.- Removed collector from
sigh
type, turnedsig::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
andscoped_connection
, the former is now the return value ofsink::connect
. delegate
andsink
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
tometa_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
arevoid
-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
andtype_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 thereforeconnect
,disconnect
): new signatures for callbacks allow for short circuits.invoker
and basic collectors (null and void ones): added an explicitcollect
function 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.