OpenLexocad
27.0
|
Observer. More...
#include <entt.hpp>
Public Types | |
using | entity_type = Entity |
Underlying entity identifier. More... | |
using | size_type = std::size_t |
Unsigned integer type. More... | |
using | iterator_type = typename sparse_set< Entity >::iterator_type |
Input iterator type. More... | |
Public Member Functions | |
basic_observer () ENTT_NOEXCEPT | |
Default constructor. More... | |
basic_observer (const basic_observer &)=delete | |
Default copy constructor, deleted on purpose. More... | |
basic_observer (basic_observer &&)=delete | |
Default move constructor, deleted on purpose. More... | |
template<typename... Matcher> | |
basic_observer (basic_registry< entity_type > ®, basic_collector< Matcher... >) ENTT_NOEXCEPT | |
Creates an observer and connects it to a given registry. More... | |
~basic_observer ()=default | |
Default destructor. More... | |
basic_observer & | operator= (const basic_observer &)=delete |
Default copy assignment operator, deleted on purpose. More... | |
basic_observer & | operator= (basic_observer &&)=delete |
Default move assignment operator, deleted on purpose. More... | |
template<typename... Matcher> | |
void | connect (basic_registry< entity_type > ®, basic_collector< Matcher... >) |
Connects an observer to a given registry. More... | |
void | disconnect () |
Disconnects an observer from the registry it keeps track of. More... | |
size_type | size () const ENTT_NOEXCEPT |
Returns the number of elements in an observer. More... | |
bool | empty () const ENTT_NOEXCEPT |
Checks whether an observer is empty. More... | |
const entity_type * | data () const ENTT_NOEXCEPT |
Direct access to the list of entities of the observer. More... | |
iterator_type | begin () const ENTT_NOEXCEPT |
Returns an iterator to the first entity of the observer. More... | |
iterator_type | end () const ENTT_NOEXCEPT |
Returns an iterator that is past the last entity of the observer. More... | |
void | clear () |
Resets the underlying container. More... | |
template<typename Func > | |
void | each (Func func) const |
Iterates entities and applies the given function object to them, then clears the observer. More... | |
template<typename Func > | |
void | each (Func func) |
Iterates entities and applies the given function object to them, then clears the observer. More... | |
Observer.
An observer returns all the entities and only the entities that fit the requirements of at least one matcher. Moreover, it's guaranteed that the entity list is tightly packed in memory for fast iterations.
In general, observers don't stay true to the order of any set of components.
Observers work mainly with two types of matchers, provided through a collector:
If an entity respects the requirements of multiple matchers, it will be returned once and only once by the observer in any case.
Matchers support also filtering by means of a where clause that accepts both a list of types and an exclusion list.
Whenever a matcher finds that an entity matches its requirements, the condition of the filter is verified before to register the entity itself. Moreover, a registered entity isn't returned by the observer if the condition set by the filter is broken in the meantime.
Important
Iterators aren't invalidated if:
In all the other cases, modifying the pools of the given components in any way invalidates all the iterators and using them results in undefined behavior.
Entity | A valid entity type (see entt_traits for more details). |
using entt::basic_observer< Entity >::entity_type = Entity |
Underlying entity identifier.
using entt::basic_observer< Entity >::iterator_type = typename sparse_set<Entity>::iterator_type |
Input iterator type.
using entt::basic_observer< Entity >::size_type = std::size_t |
Unsigned integer type.
|
inline |
Default constructor.
|
delete |
Default copy constructor, deleted on purpose.
|
delete |
Default move constructor, deleted on purpose.
|
inline |
Creates an observer and connects it to a given registry.
Matcher | Types of matchers to use to initialize the observer. |
reg | A valid reference to a registry. |
|
default |
Default destructor.
|
inline |
Returns an iterator to the first entity of the observer.
The returned iterator points to the first entity of the observer. If the container is empty, the returned iterator will be equal to end()
.
|
inline |
Resets the underlying container.
|
inline |
Connects an observer to a given registry.
Matcher | Types of matchers to use to initialize the observer. |
reg | A valid reference to a registry. |
|
inline |
Direct access to the list of entities of the observer.
The returned pointer is such that range [data(), data() + size()]
is always a valid range, even if the container is empty.
begin
and end
if you want to iterate the observer in the expected order.
|
inline |
Disconnects an observer from the registry it keeps track of.
|
inline |
Iterates entities and applies the given function object to them, then clears the observer.
The function object is invoked for each entity.
The signature of the function must be equivalent to the following form:
Func | Type of the function object to invoke. |
func | A valid function object. |
|
inline |
Iterates entities and applies the given function object to them, then clears the observer.
The function object is invoked for each entity.
The signature of the function must be equivalent to the following form:
Func | Type of the function object to invoke. |
func | A valid function object. |
|
inline |
Checks whether an observer is empty.
|
inline |
Returns an iterator that is past the last entity of the observer.
The returned iterator points to the entity following the last entity of the observer. Attempting to dereference the returned iterator results in undefined behavior.
|
delete |
Default copy assignment operator, deleted on purpose.
|
delete |
Default move assignment operator, deleted on purpose.
|
inline |
Returns the number of elements in an observer.