Releases: skypjack/entt
EnTT v3.14.0
Changelog
-
config
:ENTT_NO_MIXIN
to disable the sigh mixin by default- Print assertion messages upon failure
-
core
:- Avoid uninitialized
length
in all (corner) cases - Export more types as forward declarations (see
fwd.hpp
) - Lambda support for
nth_argument
- Class level new/delete support for
any
- Class level new/delete support for
uninitialized_construct_using_allocator
- Make the
monostate
return*this
fromoperator=
- Enable
enable_borrowed_range
/enable_view
for a few types - Make
popcount
public (waiting for C++20) - Rename
is_power_of_two
tohas_single_bit
(waiting for C++20) - Introduce
bit.hpp
and move a few functions there (iehas_single_bit
) - Self assignment support for
basic_any<...>
- Avoid uninitialized
-
entity
:- Avoid unchecked refresh loops on single type views
- Refine empty registry check in the snapshot loader constructor
- Stop groups from swapping observed types in their pools
- Make sparse set
sort_as
function return an iterator past the last shared element - Update registry
destroy
function to use sparse setsort_as
internally - Add
operator bool
to runtime views - Assert when emplacing invalid entities through a registry
- Improved registry
valid
function - Decouple
size
and next identifier in the storage entity - Faster and memory-friendly storage entity
create
-with-hint function - Update the tombstone class to support zero-sized versions
- Update entity traits the fully support zero-sized versions
- Return the correct value from sparse set
push
functions - Drop sparse set scoped iterators (ie
begin(N)
/end(N)
) - Add
element_type
to the storage class as opposed tovalue_type
- Make registry
traits_type
type member private - Make sparse set
traits_type
type member private - Make storage
traits_type
type member private - Avoid using weak ranges twice in the
sigh_mixin
class - Support comparisons between
basic_handle<...>
andnull_t
- Reliable
valid
function for emptybasic_handle<...>
s - Add pointer stable types support to the snapshot loader class
- Branch-less sparse set
sort
andsort_as
functions - Branch-less centralized swap-only mode check for views
- Refine storage log messages to avoid ambiguity
- Introduce the new
basic_table
andtable
classes - In/Out edges support for
basic_organizer
- Single type view
::operator->
to get access to the underlying storage - All registry now assert on custom user defined entity storage
- Add
storage_policy
constexpr member to all storage classes - Enable
enable_borrowed_range
/enable_view
for a few types - Decouple all types except
basic_storage
fromcomponent_traits
- Drop the
Mask
parameter of thebasic_observer
class - View specialization and improvements for swap-only storage
- View specialization and improvements for swap-and-pop storage
- View specialization and improvements for in-place storage
- Avoid checking for filter validity when iterating views
- Allow resetting a storage in the registry via the
reset
function sigh_mixin
automatic signal registration support for components- Generic
bind
function in thebasic_sparse_set
class - Reactive mixin and storage (designed to replace the
observer
class) operator bool
andregistry
functions forsigh_mixin
sigh_mixin
transparent support to derived registries
-
graph
:- Add an
empty
method to theflow
class - Add an
empty
method to theadjacency_matrix
class
- Add an
-
meta
:- Add
is_pointer
meta traits - Updated meta type
is_pointer
function to make it faster and more reliable - User defined traits for meta objects
- Self assignment support for
meta_any
- User defined arbitrary data support for meta types, meta data and meta functions
- Guaranteed execution/iteration order on overlaoded meta functions
- Support for creating different meta types from different factories concurrently
- Support
noexcept
functions whenever a free or member function is allowed - Improve lookup time of member objects and reduce their compile-time cost
- Add
-
poly
:- Improve support for inherited concepts
-
resource
:- Add
reset
functions to resource class - Support
swap
-ping resources
- Add
-
signal
:- Support for free and member
noexcept
functions to thedelegate
class
- Support for free and member
Build system
- Avoid installing
include/BUILD.bazel
- Updated IWYU version
Any other business
- Removed all previously deprecated methods
- Shared types in the test suite to avoid duplication
- Full review to reduce
NOLINT
directives as much as possible - Refine linter configuration and address as many warnings as possible
- Updated IWYU
entt.imp
as needed - Drop support to Android NDK r17
- Drop support to MSVC toolset v141
Natvis support
All natvis files have been updated where necessary. New entries:
- Natvis view for
basic_handle
class - Natvis view for
meta_ctx
class - Natvis view for
meta_type_descriptor
class - Natvis view for
meta_custom_node
class
Breaking changes
- Sparse set scoped iterators are no longer a thing, check the deletion policy and use the free list value as needed instead
- Registry
traits_type
is private, useentt_traits
class andentity_type
type member instead - Sparse set
traits_type
is private, useentt_traits
class andentity_type
type member instead - Storage
traits_type
is private, usecomponent_traits
class andvalue_type
type member instead - The
basic_observer
class doesn't accept anymore aMask
template parameter - Renamed
is_power_of_two
tohas_single_bit
and moved it tobit.hpp
- Removed support to empty
each
callbacks for single non-empty type views - Deprecate meta properties, use the new
custom
data support for meta types, data and functions instead basic_sparse_set
doesn't require anymore to wrap objects withany
s when passing them tobind
- The
observer
class is now deprecated, use the reactive mixin and storage instead
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 some changes in this regard. Still a work in progress though.
EnTT v3.13.2
Changelog
- Fix an issue on the range-
insert
in thesigh_mixin
class - Add full support to empty types in the snapshot classes
- Suppress an annoying warning by clang in the snapshot classes
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
EnTT v3.13.1
Changelog
- Refine the check in the constructor of the snapshot loader class
- Avoid swapping observed types from groups
- Don't install
include/BUILD.bazel
anymore
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
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.
EnTT v3.12.2
Changelog
- Avoid warnings due to deprecated functions in the snapshot classes
- Make
basic_registry<...>::valid
fully backward compatible
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
EnTT v3.12.1
Changelog
- Reintroduce support to storage listeners for snapshot classes
- Add some tests to avoid future regressions on the snapshot classes
- Update the single include file to the last version as it ought to be
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
EnTT v3.12.0
Changelog
-
config
:ENTT_FAIL(msg)
as an alias ofENTT_ASSERT(false, msg)
-
core
:is_equality_comparable
also detects C-style arrays- Added
value_list_index[_v]
,value_list_unique[_t]
,value_list_contains[_v]
andvalue_list_diff[_t]
std::tuple
traits specialization forentt::type_list
andentt::value_list
-
entity
:- All group types are copyable and movable
- View filter storage classes are now available (see
::storage
) - Group filter storage classes are now available (see
::storage
) - Propagate the allocator to the registry context
sigh_helper
utility to simplify connecting multiple listeners to a registry- Public
basic_sparse_set<...>::traits_type
type member - Public
basic_storage<...>::traits_type
type member - Public
basic_registry<...>::traits_type
type member component_traits
treatvoid
properly as any other component type- Split
entt_traits
andbasic_entt_traits
to simplify specializing the former - Make
entity_mask
andversion_mask
available throughentt_traits
- Add
entt_traits::base_type
for the final user (not used internally) - Make
basic_registry
work properly withvoid
component type - Handles discard their entities on destruction
- Improved removing/erasing elements when a
sigh_mixin
is attached to a storage - Added internal, opaque
data
function to sparse set iterators - Additional internal virtual
clear_all
function available in thebasic_sparse_set<...>
class - Improved performance of sparse set
remove
,erase
andclear
functions - Improved performance of registry
remove
,erase
,clear
anddestroy
functions deletion_policy
is now publicly available viaentity/fwd.hpp
- Added
basic_sparse_set<...>::contiguous
function extended_storage_iterator::base
makes the underlying iterator availableextended_view_iterator::base
makes the underlying iterator availableextended_group_iterator::base
makes the underlying iterator available- Added a specialization of
basic_storage
when the value type is also the entity type (entity storage) - Entities have their own storage in a registry and it's accessible as
storage<entity_type>()
- Sigh mixin also supports entity storage types (to send signals on entity creation/destruction/update)
- Exclude-only like views are also supported because of the entity storage
added basic_entt_traits::next
returns the next valid version of an identifier- Refined transparent aggregate support for storage types
- Deprecated the following functions in the registry class:
basic_registry<...>::size()
(use.storage<E>().size()
instead)basic_registry<...>::alive()
(use.storage<E>().in_use()
instead)basic_registry<...>::reserve(cap)
(use.storage<E>().reserve(cap)
instead)basic_registry<...>::capacity()
(use.storage<E>().capacity()
instead)basic_registry<...>::empty()
(use.storage<E>().in_use()
instead)basic_registry<...>::data()
(use.storage<E>().data()
instead)basic_registry<...>::released()
(use.storage<E>().in_use()
and.storage<E>().size()
instead)basic_registry<...>::release(args...)
(use.storage<E>().erase(args)
and.storage<E>().bump(entt)
instead)basic_registry<...>::assign(args...)
(use.storage<Entity>().push(first, last)
and.storage<Entity>().in_use(len)
instead)basic_registry<...>::each(args...)
(use.storage<Entity>().each()
instead)
basic_sparse_set<...>::bump
returns the version in usebasic_storage<...>::insert
returns an iterator to the range of inserted elements- Storage based groups fully support multiple storage of the same type now
- Huge internal rework to reduce the dependencies between the registry and the group classes/handlers
- All group types have a
.handle()
function to return a reference to the leading storage basic_registry<...>::group
is no longer[[nodiscard]]
- Configurable mask type for
basic_observer
- Allocator support for
basic_observer
get_t
,owned_t
andexclude_t
are (constexpr constructible) types now rather than aliases oftype_list
basic_storage
usesallocator_traits::destroy
now rather thanstd::destroy_at
(to allow specializations if needed)- Make
basic_registry<...>::storage_for_type<...>
available to the final user basic_view<..>::operator bool
returns true only for fully initialized views- Uninitialized views behave correctly in all circumstances, returning the expected result on each call
- Views support swapping their storage or setting them lazily
- View packs fully support empty views finally
basic_registry<...>
doesn't instantiate temporary static storage on const function anymoreon_construct
/on_update
/on_destroy
ofbasic_registry<...>
also support named pools- Added a reverse each function (
reach
, worst name ever) to all storage classes basic_registry<...>::erase_if
to conditionally erase elements from their storage- Deprecated the following functions in the snapshot classes:
entities()
(useget<Entity>()
instead)component<...>(...)
(useget<T>(...)
instead)shrink
, no longer required
- General purpose
::get<T>(...)
function for snapshot classes that works with storage types - Runtime pools support for snapshot classes (see
::get<T>(...)
for further details) - Drop multi-type archive function requirement for snapshot classes
-
graph
:- Allocator type propagates to the graph type returned by
flow::graph()
calls
- Allocator type propagates to the graph type returned by
-
locator
:- Support for opaque structures
-
meta
:- It's now possible to update the value of a meta property at any time (non-const
meta_any
ref) - Full support to meta member functions for primitive types
operator==/!=
for meta_handleoperator==/!=
for meta_dataoperator==/!=
for meta_propoperator==/!=
for meta_func
- It's now possible to update the value of a meta property at any time (non-const
-
process
:- Introduced
basic_scheduler
with default delta type for common cases - Turn
scheduler
into an alias forbasic_scheduler<std::uint32_t>
- Introduced
-
signal
:- Added
delegate::target
to get a pointer to the stored callable function - Refined transparent aggregate support for the dispatcher class
delegate
also supports functions that skip first elements (on second attempt only)- Allow disconnecting listeners during iterations over the
sigh
class
- Added
Build system
- Bump IWYU version to 0.19
- Bump CMake version to 3.15.7
- Enable documentation diagnostic for Clang
- Increase CI warning level to
/W1
on Windows - Add GCC11 to the list of compilers directly checked by the CI
Any other business
- Suppress a few warnings due to unused variables in corner cases
- More
[[nodiscard]]
where it makes sense (i.e.any_cast
ormeta_type::from_void
) - Better allocator support with additional runtime checks for corner cases
Natvis support
All natvis files have been updated where necessary.
Breaking changes
-
entity
:ignore_as_empty_v
doesn't exist anymore, usecomponent_traits<...>::page_size
insteadentt_traits::reserved
is no longer available, combineentity_mask
andversion_mask
insteadbasic_sparse_set<...>::swap_at
is now a protected function, overrideswap_or_move
as needed insteadbasic_sparse_set<...>::move_element
doesn't exist anymore, useswap_or_move
instead (with checks onto
if needed)sigh_storage_mixin
was renamed intosigh_mixin
basic_sparse_set<...>::emplace
was renamed topush
basic_sparse_set<...>::insert
was renamed topush
basic_sparse_set<...>::get
was renamed tovalue
basic_sparse_set<...>::sort
was renamed tosort_as
basic_group<...>::sort
(no callback overload) was renamed tosort_as
basic_registry<...>::base_type
was renamed tocommon_type
basic_group<...>::base_type
was renamed tocommon_type
runtime_view<...>::base_type
was renamed tocommon_type
basic_view<...>::base_type
was renamed tocommon_type
- Nested groups are no longer supported (the pain is not worth the gain)
basic_view<...>::storage<...>()
returns a (possibly null) pointer rather than a referencebasic_view<...>::handle()
returns a (possibly null) pointer rather than a referencebasic_group<...>::storage<...>()
returns a (possibly null) pointer rather than a referencebasic_view<...>::refresh()
is a self-contained, non-const function that changes the view in-placebasic_view<...>::use<T>()
is a self-contained, non-const function that changes the view in-place
-
process
:scheduler
no longer requires a template parameter, usebasic_scheduler
ifstd::uint32_t
isn't a good enough delta type
-
signal
:disconnect
by reference is no longer available on thesink
class, use the overload that accepts a pointer insteadsink<...>::before
is no longer supported, no alternative provided
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.
EnTT v3.11.1
Changelog
- Suppress a bunch of warnings due to unused variables or the like in corner cases
- Avoid requiring to include
storage.hpp
when forward declaring a view
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.
EnTT v3.11.0
Changelog
-
config
:- Decouple
ENTT_NOEXCEPT
and exceptions handling - Added
ENTT_CONSTEXPR
(to get around some nasty issues with major compilers) - Added
ENTT_ASSERT_CONSTEXPR
(to help further with extreme customizations)
- Decouple
-
container
:- Dense map
max_size
,count
andequal_range
functions - Dense set
max_size
,count
andequal_range
functions
- Dense map
-
core
:- A new
forward_apply
utility type_list_index[_v]
utility for type liststype_list_transform[_t]
utility for type listsnth_argument
utility to easily extract the n-th argument of a functioniota_iterator
(waiting for C++20)- Added
operator*
toinput_iterator_poointer
- Turn
operator!=
forany
into an in-class function - Avoid using
std::aligned_storage_t
withany
(deprecated since C++23) - Utility
is_tuple[_v]
- A new
-
entity
- Correctly handle overflow of version and max number of entities
- Turned
get_t
andexclude_t
into plain aliases fortype_list
- Updated API for
basic_registry<...>::group/group_if_exists
basic_sparse_set<...>::get
is now[[nodiscard]]
ignore_as_empty_v<void>
is always true- Support
storage<void>
as a typeless storage only - Added allocator support to
sigh_storage_mixin
- Views support now both const and non-const excluded types
- Groups support now both const and non-const excluded types
- Tuple-based constructor for views
- Added utilities
storage_type_t
andstorage_for[_t]
- Runtime views support all types of sparse sets now (allocator oriented design)
- Observers support all types of registries now (allocator oriented design)
- Snapshots and loaders support all types of registries now (allocator oriented design)
as_group
andas_view
are transparent to the registry type (allocator oriented design)- Handles support all types of registries now (allocator oriented design)
invoke
andto_entity
helpers support all types of registries now (allocator oriented design)- Organizers support all types of registries now (allocator oriented design)
- Storage-based model for groups and views (👈 this is huge 🥳 )
- Replaced
basic_handle<...>::visit
with::storage
to return an iterable object rather than accepting lambdas - The
organizer
class uses the newflow
builder under the hood - Added const/non-const registry support to runtime views
- Runtime views are now allocator aware containers
- Observers derive directly from storage classes rather than using them internally
- Relaxed most of the entity validity checks in a registry
- Added registry context
get
function, deprecatedat
- Added registry context
emplace_as
function, deprecatedemplace_hint
- Added registry context
insert_or_assign
function - Merged virtual functions
swap_and_pop
andin_place_pop
, storage classes only have to implementpop
now - Full support to non-movable types, component types have no more constraints (👈 this is huge 🥳)
- Partial allocator support for the
basic_registry<...>
class (registry allocators also propagate to their pools) - Registry
swap
andget_allocator
functions - Guaranteed order of destruction of the parts of a registry (context variables, components, ...)
- Allocator support for
storage_type[_t]
andstorage_for[_t]
- Added
basic_view<...>::refresh
to reinitialize the leading pool of a view
-
graph
(👈 new module):adjacency_matrix
class with support for directed and undirected graphs- Runtime organizer class (
flow
) to create execution graphs from tasks and resource requirements - Basic
dot
functions to convert an execution graph (and a graph in general) to the dot format
-
locator
:- Support exporting and setting services across boundaries using opaque handles (see functions
handle
andreset
)
- Support exporting and setting services across boundaries using opaque handles (see functions
-
meta
:- Container traits don't really support plain arrays anymore (if they ever did)
- Fixed an issue with
insert
/erase
of meta sequence containers - Re-added
meta_type::remove_pointer
- Added
meta_type::is_integral
andmeta_type::is_signed
meta_associative_container::erase
returns the number of elements removedmeta_range
is now an alias template ofiterable_adaptor
void *
-to-meta_any
utility function formeta_type
s- Improve automatic detection of meta sequence containers
std::list
andstd::deque
are also supported as meta sequence containers- Turn
operator!=
formeta_any
into an in-class function - All meta node (i.e.
meta_data_node
,meta_func_node
and so on) are no longer static - It's now possible to attach multiple properties to a meta object at different times
meta_construct
also accepts lambdas- Support to const/non-const overloads for the same meta function
- Context support (👈 this is huge 🥳), see the official documentation for further details
- Favor top-level conversion functions over bases lookup
-
poly
:- Avoid using
std::aligned_storage_t
withpoly
(deprecated since C++23)
- Avoid using
-
process
:- Added an
fwd.hpp
file for the submodule
- Added an
-
resource
:- Added more comparison operators for resource handles
- Added type members
handle_type
andelement_type
- Added member function
handle
to access the underlying handle
-
signal
:- Full review of the
emitter
class dispatcher
uses now anstd::allocator<void>
by defaultsigh
uses now anstd::allocator<void>
by default- Added allocator support to
basic_emitter
- Full review of the
Any other business:
- A good amount of functions and types were reviewed to make them
constexpr
- A good amount of functions and types are now (conditionally)
noexcept
no matter what - Added some utilities test to make all them work also in release mode (see
ENTT_DEBUG_TEST
and the others) - Workflow
iwyu
(I'll keep an eye on it and refine things a bit at a time) - Removed the aob target from cmake
Natvis support
All natvis files have been updated where necessary.
There exists a new natvis file named graph.natvis
for the newly added submodule.
Breaking changes
-
config
:ENTT_NOEXCEPT[_IF]
no longer exists
-
core
:identifier
was renamed toident
ident::identifer_type
was renamed toident::value_type
family::family_type
was renamed tofamily::value_type
-
entity
:- Drop the
entity/utility.hpp
file, usefwd.hpp
instead - Updated API for
basic_registry<...>::group/group_if_exists
basic_registry<...>::storage<T>
doesn't accept const types anymorestorage_traits
was renamed tostorage_type
storage_type::storage_type
was renamed tostorage_type::type
- Entity and component type were flipped in the definition of the
basic_storage
class template - Entity and component type were flipped in the definition of the
storage_type
utility basic_handle<...>::visit
was removed, use::storage
instead (iterable model)basic_registry<...>::storage(id)
returns a (possibly null) pointer rather than an utterly annoying iterator
- Drop the
-
meta
:- Container traits don't really support plain arrays anymore (if they ever did)
- Removed
meta_type::base(id)
because pointless - Meta data and meta functions no longer return the associated id from the API
- Meta range iterators return now an id and meta object pair (i.e. for meta data or functions from a meta type)
- Only the single property API is now available for attaching properties to meta objects (no more
meta_factory<...>::props
) make_meta
is no longer available (it doesn't fit with context support), usemeta_any
constructors directly instead
-
resource
:- Removed
resource::use_count
, usehandle().use_count()
instead
- Removed
-
signal
:- Full review of the
emitter
class
- Full review of the
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.
EnTT v3.10.3
Changelog
entity
:- Fix an issue that makes storage cross range-erase break when using built-in iterators.
Any other business
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.