EnTT 3.14.0
|
Observer. More...
#include <observer.hpp>
Public Types | |
using | allocator_type = Allocator |
Allocator type. | |
using | registry_type = Registry |
using | entity_type = typename registry_type::entity_type |
Underlying entity identifier. | |
using | size_type = std::size_t |
Unsigned integer type. | |
using | iterator = typename registry_type::common_type::iterator |
Random access iterator type. | |
Public Member Functions | |
basic_observer () | |
Default constructor. | |
basic_observer (const allocator_type &allocator) | |
Constructs an empty storage with a given allocator. | |
basic_observer (const basic_observer &)=delete | |
Default copy constructor, deleted on purpose. | |
basic_observer (basic_observer &&)=delete | |
Default move constructor, deleted on purpose. | |
template<typename... Matcher> | |
basic_observer (registry_type ®, basic_collector< Matcher... >, const allocator_type &allocator=allocator_type{}) | |
Creates an observer and connects it to a given registry. | |
~basic_observer ()=default | |
Default destructor. | |
basic_observer & | operator= (const basic_observer &)=delete |
Default copy assignment operator, deleted on purpose. | |
basic_observer & | operator= (basic_observer &&)=delete |
Default move assignment operator, deleted on purpose. | |
template<typename... Matcher> | |
void | connect (registry_type ®, basic_collector< Matcher... >) |
Connects an observer to a given registry. | |
void | disconnect () |
Disconnects an observer from the registry it keeps track of. | |
size_type | size () const noexcept |
Returns the number of elements in an observer. | |
bool | empty () const noexcept |
Checks whether an observer is empty. | |
const entity_type * | data () const noexcept |
Direct access to the list of entities of the observer. | |
iterator | begin () const noexcept |
Returns an iterator to the first entity of the observer. | |
iterator | end () const noexcept |
Returns an iterator that is past the last entity of the observer. | |
void | clear () noexcept |
Clears the underlying container. | |
template<typename Func > | |
void | each (Func func) const |
Iterates entities and applies the given function object to them. | |
template<typename Func > | |
void | each (Func func) |
Iterates entities and applies the given function object to them, then clears the observer. | |
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 elements.
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 elements in any way invalidates all the iterators.
Registry | Basic registry type. |
Allocator | Type of allocator used to manage memory and elements. |
Definition at line 160 of file observer.hpp.
using entt::basic_observer< Registry, Allocator >::allocator_type = Allocator |
Allocator type.
Definition at line 257 of file observer.hpp.
using entt::basic_observer< Registry, Allocator >::entity_type = typename registry_type::entity_type |
Underlying entity identifier.
Definition at line 261 of file observer.hpp.
using entt::basic_observer< Registry, Allocator >::iterator = typename registry_type::common_type::iterator |
Random access iterator type.
Definition at line 265 of file observer.hpp.
using entt::basic_observer< Registry, Allocator >::registry_type = Registry |
Basic registry type.
Definition at line 259 of file observer.hpp.
using entt::basic_observer< Registry, Allocator >::size_type = std::size_t |
Unsigned integer type.
Definition at line 263 of file observer.hpp.
|
inline |
Default constructor.
Definition at line 268 of file observer.hpp.
|
inlineexplicit |
Constructs an empty storage with a given allocator.
allocator | The allocator to use. |
Definition at line 275 of file observer.hpp.
|
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. |
allocator | The allocator to use. |
Definition at line 293 of file observer.hpp.
|
inlinenoexcept |
Returns an iterator to the first entity of the observer.
If the observer is empty, the returned iterator will be equal to end()
.
Definition at line 377 of file observer.hpp.
|
inlinenoexcept |
Clears the underlying container.
Definition at line 391 of file observer.hpp.
|
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. |
Definition at line 321 of file observer.hpp.
|
inlinenoexcept |
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
/end
iterators.Definition at line 366 of file observer.hpp.
|
inline |
Disconnects an observer from the registry it keeps track of.
Definition at line 331 of file observer.hpp.
|
inline |
Iterates entities and applies the given function object to them, then clears the observer.
Func | Type of the function object to invoke. |
func | A valid function object. |
Definition at line 425 of file observer.hpp.
|
inline |
Iterates entities and applies the given function object to them.
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. |
Definition at line 409 of file observer.hpp.
|
inlinenoexcept |
Checks whether an observer is empty.
Definition at line 350 of file observer.hpp.
|
inlinenoexcept |
Returns an iterator that is past the last entity of the observer.
Definition at line 386 of file observer.hpp.
|
delete |
Default move assignment operator, deleted on purpose.
|
delete |
Default copy assignment operator, deleted on purpose.
|
inlinenoexcept |
Returns the number of elements in an observer.
Definition at line 342 of file observer.hpp.