EnTT v3.3.0
Changelog:
config
- Using atomics is no longer the default (
ENTT_NO_ATOMIC
becameENTT_USE_ATOMIC
). ENTT_DISABLE_ASSERT
no longer exists,ENTT_ASSERT
can be redefined now.
- Using atomics is no longer the default (
hashed_string
- Static
to_value
renamed tovalue
. - The helper function is no longer recursive (long names are now accepted).
- Static
delegate
:- Support for unbound members (data and functions).
sigh
/sink
:- Support for unbound members (data and functions).
sparse_set
:- Renamed
reset
toclear
.
- Renamed
storage
:- Renamed
reset
toclear
. - Added range-
construct
.
- Renamed
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 forreset<T>()
andreset()
. - Added
remove_if_exists
as a replacement forreset<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 oldreplace
-with-arguments. - Added single component
prepare
functionality (suitable for custom pools). - Removed misplaced assert from
clone
andstomp
functionalities. - Removed
reset
member functions (useremove
andclear
instead). - Removed range-
stomp
. - Renamed
stomp
tostamp
. - 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
andclone
(see updated doc for more details).
view
- All iterators are at least bidirectional.
- Much faster
contains
. - Added
front
andback
to get the first and the last entities.
group
- All iterators are at least bidirectional.
- Much faster
contains
. - Added
front
andback
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 tofactory
and deprecatedtype
. - Added
alias
member function to all meta objects and deprecatedidentifier
. - Added
meta_type::id
to get the underlying type id (seetype_info<T>::id
for more details).
dispatcher
- Renamed
discard
inclear
for consistency.
- Renamed
type_traits
- Added
member_class
andmember_class_t
to get the class from a pointer-to-member type.
- Added
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.
- Full featured, SFINAE-friendly
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
into_integral
(seeENTT_OPAQUE_TYPE
for custom identifiers). entt::component
doesn't exist anymore (useentt::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
andmeta
). - 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.