EnTT v3.13.0
Changelog
-
config
:- Provide coverage for user defined
ENTT_ID_TYPE
in the std namespace
- Provide coverage for user defined
-
container
:- Added reverse iterators to
dense_set
- Added
iterator_concept
to dense map iterators
- Added reverse iterators to
-
core
:- Introduce
any_policy
- Add
basic_any<...>::policy()
member function - Improved
is_equality_comparable[_v]
to fully support optional types - Type-based
nth_argument
- Reduce compilation cost of
type_list_unique
- Introduce
-
entity
:- Reintroduced support for storage listeners in snapshot
- Make
basic_registry<...>::valid
fully backward compatible - Specialization for single type views with exclusion lists
- Introduced
deletion_policy::swap_only
mode directly managed at sparse set level - Added
basic_sparse_set<...>::free_list
to set/get the head of the free list if allowed - Introduced
basic_sparse_set<...>::swap_only
pop protected function - Updated entity storage to make it use swap-only deletion policy directly
- Drop view specialization for single type with exclusion list
- Returns scoped iterators from
basic_sparse_set<...>
(only useful with swap-only deletion policy) - Entity storage use scoped iterators with its iterable objects
- View
each
function use scoped iterators from sparse sets - View iterators (
begin
/end
) are scoped if needed (ie entity storage view or the like) basic_storage<void>::get_allocator()
works fine too- Storage based
to_entity
function to get entities from components - Iterator-based
sort_as
for sparse sets - Iterator-based
sort_as
for groups basic_registry<...>::try_get
doesn't create storage anymorevalue_type
for storage entity isvoid
sigh_mixin
support to custom registry types- Added
iterator_concept
to view iterators - Added
iterator_concept
to groups iterators - Added
iterator_concept
to registry iterators - Added
iterator_concept
to handle iterators - Added
iterator_concept
to storage iterators - Full support to reserved bits on entity identifiers (ie for disabling components)
- Shared implementation for all types of views
- Explicit
iterable
andconst_iterable
types exposed by the registry class - Index based view iterators (internal change)
- Removed
basic_view::operator[]
for size types to avoid forcing non-integral entity types
-
graph
:- Added
iterator_concept
to adjacency matrix iterators
- Added
-
meta
:- Introduce
meta_any_policy
- Add
meta_any::policy()
member function - Meta container support to
::reserve
- Make basic meta container traits publicly available (with revised aPI)
- Add
meta_type::can_cast
member function - Add
meta_type::can_convert
member function - Meta container
::rebind
accepts a value rather than anany
object - Meta container iterator support to
::rebind
meta_sequence_container::resize
support to non default constructible typesbasic_meta_sequence_container_traits::fixed_size
available to final users- Correctly initialize all members of meta container wrappers
- Added
iterator_concept
to meta iterators - Improved meta containers performance
- Introduce
-
process
:basic_scheduler<...>
was fully redesigned for the better- In-line
.then
support forbasic_scheduler<...>
- Allocator-aware
basic_scheduler<...>
-
resource
:- Added
iterator_concept
to cache iterators
- Added
Build system
- Make the debug build suitable for
SizeBench
- Enable more warnings on the CI
bzlmod
support with tests
Any other business
- Removed all previously deprecated methods
- Updated IWYU
entt.imp
file - Make the library more C++20-friendly
- Added a test/example on how to use reserved bits on entity identifiers
- Clang tidy config (and cleanup, still a work-in-progress though)
Natvis support
All natvis files have been updated where necessary.
Breaking changes
-
core
:nth_argument
accepts a type rather than a function, usedecltype
as needed
-
entity
:basic_sparse_set<...>::swap_at
is now privatebasic_storage<...>::in_use
is deprecated, usebasic_sparse_set<...>::free_list
instead- Entity storage no longer has a
type_traits
type member - Sorting functions of
basic_sparse_set<...>
don't invokecompact
automatically anymore - Registry based
to_entity
function is deprecated, use the storage based version instead basic_sparse_set<...>::sort_as
is deprecated, use iterator-based overload of the same function insteadbasic_group<...>::sort_as
is deprecated, use iterator-based overload of the same function instead- Storage entity
::pack
function is deprecated, use iterator-basedsort_as
instead basic_view::operator[]
no longer available for size types to avoid forcing non-integral entity typesbasic_sparse_set<...>::at
is deprecated as ambiguous, useoperator[]
instead
-
meta
:- Meta container
::rebind
accepts a value rather than anany
object - Meta container iterators no longer accept underlying iterators on construction, use
rebind
instead basic_meta_sequence_container_traits::fixed_size
required for explicit specializations
- Meta container
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
I started a long term process to reduce the number of instantiations and also speed up the compilation.
This release contains MANY changes and great improvements in this regard. Still a work in progress though.