From 74f3ad98f0a257058304472221f614de7c1d8b35 Mon Sep 17 00:00:00 2001
From: Michele Caini This is the complete list of members for entt::Bus< Sig, Event, Other... >, including all inherited members. Event bus specialization for multiple types.
- More... Event bus specialization for multiple types. The event bus is designed to allow an easy registration of specific member functions to a bunch of signal handlers (either manager or unmanaged). Classes must publicly expose the required member functions to allow the bus to detect them for the purpose of registering and unregistering instances. Publishes an event. All the listeners are notified. Order isn't guaranteed. Registers all the member functions of an instance. A bus is used to convey a certain set of events. This method detects and registers to the bus all the matching member functions of an instance. Unregisters all the member functions of an instance. A bus is used to convey a certain set of events. This method detects and unregisters from the bus all the matching member functions of an instance. Event bus specialization for a single type.
- More... Event bus specialization for a single type. The event bus is designed to allow an easy registration of a specific member function to a signal handler (either manager or unmanaged). Classes must publicly expose the required member function to allow the bus to detect it for the purpose of registering and unregistering instances. Tries to register an instance. This method tries to detect and register to the bus matching member functions of instances. Unregisters member functions of instances. This method tries to detect and unregister from the bus matching member functions of instances. This is the complete list of members for entt::ContinuousLoader< Entity >, including all inherited members. Definition at line 364 of file snapshot.hpp. Definition at line 430 of file snapshot.hpp. Definition at line 494 of file snapshot.hpp. Definition at line 529 of file snapshot.hpp. Restores components and assigns them to the right entities. The template parameter list must be exactly the same used during serialization. In the event that the entity to which the component is assigned doesn't exist yet, the loader will take care to create a local counterpart for it. Definition at line 554 of file snapshot.hpp. Definition at line 580 of file snapshot.hpp. Definition at line 595 of file snapshot.hpp. Definition at line 535 of file snapshot.hpp. Definition at line 570 of file snapshot.hpp. Definition at line 519 of file snapshot.hpp. Definition at line 554 of file snapshot.hpp. Definition at line 683 of file snapshot.hpp. Definition at line 690 of file snapshot.hpp. Definition at line 699 of file snapshot.hpp. Definition at line 706 of file snapshot.hpp. Default copy assignment operator. Copying a snapshot loader isn't allowed.
@@ -63,7 +63,7 @@ $(function() {
Generated by
diff --git a/actor_8hpp_source.html b/actor_8hpp_source.html
index d906dc150..65db07ab4 100644
--- a/actor_8hpp_source.html
+++ b/actor_8hpp_source.html
@@ -22,7 +22,7 @@
@@ -67,21 +67,23 @@ $(function() {
diff --git a/algorithm_8hpp_source.html b/algorithm_8hpp_source.html
new file mode 100644
index 000000000..11785e758
--- /dev/null
+++ b/algorithm_8hpp_source.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generated by
+
+ 1.8.13
+
+
+
diff --git a/annotated.html b/annotated.html
index 805e9626b..08be96a7a 100644
--- a/annotated.html
+++ b/annotated.html
@@ -22,7 +22,7 @@
@@ -67,42 +67,46 @@ $(function() {
▼Nentt EnTT default namespace
- CActor Dedicated to those who aren't confident with entity-component systems
- CBus Minimal event bus
- CBus< Sig, Event > Event bus specialization for a single type
- CBus< Sig, Event, Other... > Event bus specialization for multiple types
- CContinuousLoader Utility class for continuous loading
- CDelegate Basic delegate implementation
- CDelegate< Ret(Args...)> Utility class to send around functions and member functions
- CDispatcher Basic dispatcher implementation
- ▼CEmitter General purpose event emitter
- CConnection Generic connection type for events
- Centt_traits Entity traits
- Centt_traits< std::uint16_t > Entity traits for a 16 bits entity identifier
- Centt_traits< std::uint32_t > Entity traits for a 32 bits entity identifier
- Centt_traits< std::uint64_t > Entity traits for a 64 bits entity identifier
- CFamily Dynamic identifier generator
+ CHashedString Zero overhead resource identifier
+ Cbreak_t Break type used to disambiguate overloads
+ CContinuousLoader Utility class for continuous loading
+ CDelegate Basic delegate implementation
+ CDelegate< Ret(Args...)> Utility class to send around functions and member functions
+ CDispatcher Basic dispatcher implementation
+ ▼CEmitter General purpose event emitter
+ CConnection Generic connection type for events
+ Centt_traits Entity traits
+ Centt_traits< std::uint16_t > Entity traits for a 16 bits entity identifier
+ Centt_traits< std::uint32_t > Entity traits for a 32 bits entity identifier
+ Centt_traits< std::uint64_t > Entity traits for a 64 bits entity identifier
+ CFamily Dynamic identifier generator
+ CHashedString Zero overhead resource identifier
+ CInsertionSort Function object for performing insertion sort Cpersistent_t Persistent view type used to disambiguate overloads CPersistentView Persistent view CProcess Base class for processes
- CProcessAdaptor Adaptor for lambdas and functors to turn them into processes
- CRawView Raw view
- CRegistry Fast and reliable entity-component system
- CResourceCache Simple cache for resources of a given type
- CResourceHandle Shared resource handle
- CResourceLoader Base class for resource loaders
- CScheduler Cooperative scheduler for processes
- CServiceLocator Service locator, nothing more
- CSigH Unmanaged signal handler declaration
- CSigH< Ret(Args...), Collector > Unmanaged signal handler definition
- CSignal Managed signal handler declaration
- CSignal< void(Args...)> Managed signal handler definition
- CSnapshot Utility class to create snapshots from a registry
- CSnapshotLoader Utility class to restore a snapshot as a whole
- CSparseSet Sparse set
- CSparseSet< Entity > Basic sparse set implementation
- CSparseSet< Entity, Type > Extended sparse set implementation
- CView Multi component view
+ CView< Entity, Component > Single component view specialization
+ CPrototype Prototype container for concepts
+ Craw_t Raw view type used to disambiguate overloads
+ CRawView Raw view
+ CRegistry Fast and reliable entity-component system
+ CResourceCache Simple cache for resources of a given type
+ CResourceHandle Shared resource handle
+ CResourceLoader Base class for resource loaders
+ CScheduler Cooperative scheduler for processes
+ CServiceLocator Service locator, nothing more
+ CSigH Unmanaged signal handler declaration
+ CSigH< Ret(Args...), Collector > Unmanaged signal handler definition
+ CSink Sink implementation
+ CSink< Ret(Args...)> Sink implementation
+ CSnapshot Utility class to create snapshots from a registry
+ CSnapshotLoader Utility class to restore a snapshot as a whole
+ CSparseSet Sparse set
+ CSparseSet< Entity > Basic sparse set implementation
+ CSparseSet< Entity, Type > Extended sparse set implementation
+ CStdSort Function object to wrap std::sort in a class type
+ Ctag_t Tag class type used to disambiguate overloads
+ CView Multi component view CView< Entity, Component > Single component view specialization
-
-
-
-
-
-
-
-
-Generated by
-
- 1.8.13
-
-
-
diff --git a/cache_8hpp_source.html b/cache_8hpp_source.html
index 14debb8c3..492a8a8e0 100644
--- a/cache_8hpp_source.html
+++ b/cache_8hpp_source.html
@@ -22,7 +22,7 @@
@@ -67,22 +67,22 @@ $(function() {
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4-members.html b/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4-members.html
deleted file mode 100644
index 3f5db4287..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4-members.html
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- connect() entt::Bus< Sig, Event, Other... > inline
- disconnect() entt::Bus< Sig, Event, Other... > inline
- empty() const noexcept entt::Bus< Sig, Event, Other... > inline
- publish(Args &&... args) entt::Bus< Sig, Event, Other... > inline
- reg(Instance instance) entt::Bus< Sig, Event, Other... > inline
- entt::Bus< Sig, Event >::reg(instance_type< Class > instance) entt::Bus< Sig, Event > inlineprivate
- size() const noexcept entt::Bus< Sig, Event, Other... > inline
- size_type typedef entt::Bus< Sig, Event, Other... >
- unreg(Instance instance) entt::Bus< Sig, Event, Other... > inline
-entt::Bus< Sig, Event >::unreg(instance_type< Class > instance) entt::Bus< Sig, Event > inlineprivate
-Generated by
-
- 1.8.13
-
-
-
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4.html b/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4.html
deleted file mode 100644
index b24f0ceea..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4.html
+++ /dev/null
@@ -1,450 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #include <bus.hpp>

-
-
-Public Types
-
-using size_type = std::size_t
- Unsigned integer type.
-
-
-
-
-Public Member Functions
-template<typename Instance >
-void unreg (Instance instance)
- Unregisters all the member functions of an instance. More...
-
-template<typename Instance >
-void reg (Instance instance)
- Registers all the member functions of an instance. More...
-
-size_type size () const noexcept
- Number of listeners connected to the bus. More...
-
-bool empty () const noexcept
- Returns false if at least a listener is connected to the bus. More...
-
-template<typename Type , void(*)(const Type &) Function>
-void connect ()
- Connects a free function to the bus. More...
-
-template<typename Type , void(*)(const Type &) Function>
-void disconnect ()
- Disconnects a free function from the bus. More...
-
-template<typename Type , typename... Args>
-void publish (Args &&... args)
- Publishes an event. More...
- Detailed Description
-template<template< typename... > class Sig, typename Event, typename... Other>
-
-
-class entt::Bus< Sig, Event, Other... >
- In particular, for each event type E, a matching member function has the following signature: void receive(const E &). Events will be properly redirected to all the listeners by calling the right member functions, if any.
-
-
-
-
-
- Sig Type of signal handler to use.
- Event The list of events managed by the bus. Member Function Documentation
-
-◆ connect()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event, Other... >::connect
- (
- )
-
-
-inline
- ◆ disconnect()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event, Other... >::disconnect
- (
- )
-
-
-inline
- ◆ empty()
-
-
-
-
-
-
-
-
-
-
-
- bool entt::Bus< Sig, Event, Other... >::empty
- (
- )
- const
-
-inlinenoexcept
- ◆ publish()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event, Other... >::publish
- (
- Args &&...
- args )
-
-
-inline
-
-
-
-
- Type Type of event to publish.
- Args Types of arguments to use to construct the event.
-
-
-
-
-
-
- args Arguments to use to construct the event. ◆ reg()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event, Other... >::reg
- (
- Instance
- instance )
-
-
-inline
-
- For each event type E, a matching member function has the following signature: void receive(const E &).
-
-
-
- Instance Type of instance to register.
-
-
-
-
-
-
- instance A valid instance of the right type. ◆ size()
-
-◆ unreg()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event, Other... >::unreg
- (
- Instance
- instance )
-
-
-inline
-
- For each event type E, a matching member function has the following signature: void receive(const E &).
-
-
-
- Instance Type of instance to unregister.
-
-
-
-
-
-
- instance A valid instance of the right type.
The documentation for this class was generated from the following file:
-
-
-Generated by
-
- 1.8.13
-
-
-
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.map b/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.map
deleted file mode 100644
index 47d468410..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.map
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.md5 b/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.md5
deleted file mode 100644
index b128f8f11..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-1a48fa2a64a80bf1b604b2ec4ccf6ac6
\ No newline at end of file
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.png b/classentt_1_1Bus_3_01Sig_00_01Event_00_01Other_8_8_8_01_4__coll__graph.png
deleted file mode 100644
index 8d4e525efb5ab4397350568c863e0ffc0d9d6462..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 7996
zcma)hbyU<*xb4s_Fdz)wf}(_U2m(X5NJ=B!5`uIN14v5?0umz9Al)S)A>AM%GITfh
zaMye5y>;*X5!
z^Tvf+l==q~6UWd1M(l9PtiM-rF|64fOU~~`1V
5!
z^Tvf+l==q~6UWd1M(l9PtiM-rF|64fOU~~`1V
-
-
-
-
-
-
-
- #include <bus.hpp>
-
-
-Public Types
-
-using size_type = typename signal_type::size_type
- Unsigned integer type.
-
-
-
-
-Public Member Functions
-template<typename Class >
-void unreg (instance_type< Class > instance)
- Unregisters member functions of instances. More...
-
-template<typename Class >
-void reg (instance_type< Class > instance)
- Tries to register an instance. More...
-
-size_type size () const noexcept
- Number of listeners connected to the bus. More...
-
-bool empty () const noexcept
- Returns false if at least a listener is connected to the bus. More...
-
-template<void(*)(const Event &) Function>
-void connect ()
- Connects a free function to the bus. More...
-
-template<void(*)(const Event &) Function>
-void disconnect ()
- Disconnects a free function from the bus. More...
-
-template<typename... Args>
-void publish (Args &&... args)
- Publishes an event. More...
- Detailed Description
-template<template< typename... > class Sig, typename Event>
-
-
-class entt::Bus< Sig, Event >
- In particular, a matching member function has the following signature: void receive(const Event &). Events of the given type will be properly redirected to all the listeners by calling the right member function, if any.
-
-
-
-
-
- Sig Type of signal handler to use.
- Event Type of event managed by the bus. Member Function Documentation
-
-◆ connect()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event >::connect
- (
- )
-
-
-inline
- ◆ disconnect()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event >::disconnect
- (
- )
-
-
-inline
- ◆ empty()
-
-
-
-
-
-
-
-
-
-
-
- bool entt::Bus< Sig, Event >::empty
- (
- )
- const
-
-inlinenoexcept
- ◆ publish()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event >::publish
- (
- Args &&...
- args )
-
-
-inline
- ◆ reg()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event >::reg
- (
- instance_type< Class >
- instance )
-
-
-inline
-
- A matching member function has the following signature: void receive(const Event &).
-
-
-
- Class Type of instance to register.
-
-
-
-
-
-
- instance A valid instance of the right type. ◆ size()
-
-◆ unreg()
-
-
-
-
-
-
-
-
-
-
-
- void entt::Bus< Sig, Event >::unreg
- (
- instance_type< Class >
- instance )
-
-
-inline
-
- A matching member function has the following signature: void receive(const Event &).
-
-
-
- Class Type of instance to unregister.
-
-
-
-
-
-
- instance A valid instance of the right type.
The documentation for this class was generated from the following file:
-
-
-Generated by
-
- 1.8.13
-
-
-
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.map b/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.map
deleted file mode 100644
index ef729ea80..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.md5 b/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.md5
deleted file mode 100644
index 96369f8fd..000000000
--- a/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-015e8f239749a52a3698605734c6d9b7
\ No newline at end of file
diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.png b/classentt_1_1Bus_3_01Sig_00_01Event_01_4__inherit__graph.png
deleted file mode 100644
index 70d4e5194ebd1eadb09abd903f5dcdafbeea0ccf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5281
zcmd5=g;!M3w;nnKVGv1a1Vms2>6A`ILO_s~?vNS~BnN2`K?NyEhm;=Lp%DS;Zei$d
zc!#&%`mOi=gEzBg?zwl}d-l2e?EUTU+mX+oDU%Y@5knvlQdJcNZE*Yneu0Ge;6Gkj
zfEgU{E!342AlEnFjE1~K2!v8kRY6wQCv`IouB-dvyrbzcVW%QZ3;!ddcf?`T?1H}y
zw@Y-<w`7N?%*cT3?(X_ro&JNPAK+*6T3K0j_VtYz
z=CX|F$;rvp^)TVfbN=f~lee|a9}%dsu_DCh&tcn4WjG>^f&zxz;+SxD$E
z#LUVntSyRqf5ddXW?0Ajzb7<7PfSfkcXq1urb$pgw&_EU6d7ec=YmwcD%aN5E`8la
zQNP#yaI66?0x=sew}J$Td92u0V$E$$qqvhL-x#e2p)H(m_0Q~5!%WawicyaO&OCkK
za5gcq(|1liuLT4J1#NkMR#YfxYg5?U+t*0y>+9bWb$#M6D|2~phl=kNBH8pUEtCHa
z*5Kga1jE-xf3SlmN0TmMU>RmBy`N8(lT9HzKTR-_w$3NP)Mf2$ZJDK|
@@ -70,22 +70,20 @@ $(function() {
diff --git a/classentt_1_1ContinuousLoader.html b/classentt_1_1ContinuousLoader.html
index 8e858f67d..fdf50ae1f 100644
--- a/classentt_1_1ContinuousLoader.html
+++ b/classentt_1_1ContinuousLoader.html
@@ -22,7 +22,7 @@
@@ -86,20 +86,20 @@ using
-
Public Member Functions
- ContinuousLoader (Registry< entity_type > ®istry) noexcept
- Constructs a loader that is bound to a given registry. More...
-
-
- ContinuousLoader (const ContinuousLoader &)=default
- Default copy constructor.
+
+ ContinuousLoader (Registry< entity_type > ®istry) ENTT_NOEXCEPT
+ Constructs a loader that is bound to a given registry. More...
+
+
+ ContinuousLoader (const ContinuousLoader &)=delete
+ Copying a snapshot loader isn't allowed.
ContinuousLoader (ContinuousLoader &&)=default Default move constructor.
-
-ContinuousLoader & operator= (const ContinuousLoader &)=default
- Default copy assignment operator. More...
+
+ContinuousLoader & operator= (const ContinuousLoader &)=delete
+ Copying a snapshot loader isn't allowed. More... ContinuousLoader & operator= (ContinuousLoader &&)=default Default move assignment operator. More...
@@ -111,22 +111,14 @@ Public Member Functions ContinuousLoader & destroyed (Archive &archive) Restores entities that were destroyed during serialization. More...
-
-template<typename... Component, typename Archive >
-ContinuousLoader & component (Archive &archive)
- Restores components and assigns them to the right entities. More...
-
-template<typename Component , typename Archive , typename... Type>
-ContinuousLoader & component (Archive &archive, Type Component::*... member)
- Restores components and assigns them to the right entities. More...
-
-template<typename... Tag, typename Archive >
-ContinuousLoader & tag (Archive &archive)
- Restores tags and assigns them to the right entities. More...
-
-template<typename Tag , typename Archive , typename... Type>
-ContinuousLoader & tag (Archive &archive, Type Tag::*... member)
- Restores tags and assigns them to the right entities. More...
+
+template<typename... Component, typename Archive , typename... Type, typename... Member>
+ContinuousLoader & component (Archive &archive, Member Type::*... member)
+ Restores components and assigns them to the right entities. More...
+
+template<typename... Tag, typename Archive , typename... Type, typename... Member>
+ContinuousLoader & tag (Archive &archive, Member Type::*... member)
+ Restores tags and assigns them to the right entities. More... ContinuousLoader & shrink () Helps to purge entities that no longer have a conterpart. More...
@@ -155,10 +147,10 @@ class entt::ContinuousLoader< Entity >
- Constructor & Destructor Documentation
-
-◆ ContinuousLoader()
+
+◆ ContinuousLoader()
-inlinenoexcept
+inline
Member Function Documentation
-
-◆ component() [1/2]
+
+◆ component()
-
-
-
-
-
-
-
-
-
- ContinuousLoader& entt::ContinuousLoader< Entity >::component
- (
- Archive &
- archive )
-
-
-inline
-
-
-
-
- Component Types of components to restore.
- Archive Type of input archive.
-
-
-
- archive A valid reference to an input archive.
-
-◆ component() [2/2]
-
-
@@ -267,7 +210,7 @@ template<typename Component , typename Archive , typename... Type>
- Type Component::*...
+ Member Type::*...
member
@@ -290,7 +233,8 @@ template<typename Component , typename Archive , typename... Type>
@@ -303,7 +247,7 @@ template<typename Component , typename Archive , typename... Type>
Component Type of component to restore.
- Archive Type of input archive.
+ Type Types of members to update with their local counterparts.
+ Type Types of components to update with local counterparts. Member Types of members to update with their local counterparts.
-
-
-
-entity is managed by the loader, false otherwise.
-entity refers in the target registry. ◆ operator=() [1/2]
+
+◆ operator=() [1/2]
-default
+delete
Definition at line 670 of file snapshot.hpp.
+Definition at line 677 of file snapshot.hpp.
@@ -608,68 +552,19 @@ template<typename Entity >Users should invoke this member function after restoring each snapshot, unless they know exactly what they are doing.
Definition at line 638 of file snapshot.hpp.
+Definition at line 645 of file snapshot.hpp.
- -
-
|
- -inline | -
Restores tags and assigns them to the right entities.
-The template parameter list must be exactly the same used during serialization. In the event that the entity to which the tag is assigned doesn't exist yet, the loader will take care to create a local counterpart for it.
-| Tag | Types of tags to restore. |
| Archive | Type of input archive. |
| archive | A valid reference to an input archive. |
Definition at line 599 of file snapshot.hpp.
- -| @@ -683,7 +578,7 @@ template<typename Tag , typename Archive , typename... Type> | |||||||||
| - | Type Tag::*... | +Member Type::*... | member | ||||||
| Tag | Type of tag to restore. |
| Archive | Type of input archive. |
| Type | Types of members to update with their local counterparts. |
| Type | Types of components to update with local counterparts. |
| Member | Types of members to update with their local counterparts. |
Definition at line 625 of file snapshot.hpp.
+Definition at line 626 of file snapshot.hpp.
diff --git a/classentt_1_1Delegate.html b/classentt_1_1Delegate.html index dcae77683..39bcc1ab5 100644 --- a/classentt_1_1Delegate.html +++ b/classentt_1_1Delegate.html @@ -22,7 +22,7 @@Basic delegate implementation.
Primary template isn't defined on purpose. All the specializations give a compile-time error unless the template parameter is a function type.
-Definition at line 18 of file delegate.hpp.
+Definition at line 19 of file delegate.hpp.
This is the complete list of members for entt::Delegate< Ret(Args...)>, including all inherited members.
| connect() noexcept | entt::Delegate< Ret(Args...)> | inline |
| connect(Class *instance) noexcept | entt::Delegate< Ret(Args...)> | inline |
| Delegate() noexcept | entt::Delegate< Ret(Args...)> | inline |
| connect() ENTT_NOEXCEPT | entt::Delegate< Ret(Args...)> | inline |
| connect(Class *instance) ENTT_NOEXCEPT | entt::Delegate< Ret(Args...)> | inline |
| Delegate() ENTT_NOEXCEPT | entt::Delegate< Ret(Args...)> | inline |
| operator()(Args... args) | entt::Delegate< Ret(Args...)> | inline |
| operator==(const Delegate< Ret(Args...)> &other) const noexcept | entt::Delegate< Ret(Args...)> | inline |
| reset() noexcept | entt::Delegate< Ret(Args...)> | inline |
| operator==(const Delegate< Ret(Args...)> &other) const ENTT_NOEXCEPT | entt::Delegate< Ret(Args...)> | inline |
| reset() ENTT_NOEXCEPT | entt::Delegate< Ret(Args...)> | inline |
Public Member Functions | |
| - | Delegate () noexcept |
| Default constructor. | |
| template<Ret(*)(Args...) Function> | |
| void | connect () noexcept |
| Binds a free function to a delegate. More... | |
| template<typename Class , Ret(Class::*)(Args...) Member> | |
| void | connect (Class *instance) noexcept |
| Connects a member function for a given instance to a delegate. More... | |
| void | reset () noexcept |
| Resets a delegate. More... | |
| + | Delegate () ENTT_NOEXCEPT |
| Default constructor. | |
| template<Ret(*)(Args...) Function> | |
| void | connect () ENTT_NOEXCEPT |
| Binds a free function to a delegate. More... | |
| template<typename Class , Ret(Class::*)(Args...) Member> | |
| void | connect (Class *instance) ENTT_NOEXCEPT |
| Connects a member function for a given instance to a delegate. More... | |
| void | reset () ENTT_NOEXCEPT |
| Resets a delegate. More... | |
| Ret | operator() (Args... args) |
| Triggers a delegate. More... | |
| bool | operator== (const Delegate< Ret(Args...)> &other) const noexcept |
| Checks if the contents of the two delegates are different. More... | |
| bool | operator== (const Delegate< Ret(Args...)> &other) const ENTT_NOEXCEPT |
| Checks if the contents of the two delegates are different. More... | |
Definition at line 35 of file delegate.hpp.
+Definition at line 36 of file delegate.hpp.
Definition at line 62 of file delegate.hpp.
+Definition at line 63 of file delegate.hpp.
- -Definition at line 78 of file delegate.hpp.
+Definition at line 79 of file delegate.hpp.
@@ -239,12 +239,12 @@ template<typename Ret , typename... Args>Definition at line 96 of file delegate.hpp.
+Definition at line 97 of file delegate.hpp.
- -Definition at line 108 of file delegate.hpp.
+Definition at line 109 of file delegate.hpp.
- -Resets a delegate.
After a reset, a delegate can be safely invoked with no effect.
-Definition at line 87 of file delegate.hpp.
+Definition at line 88 of file delegate.hpp.
diff --git a/classentt_1_1Dispatcher-members.html b/classentt_1_1Dispatcher-members.html index f3b0e4f56..2d2035fd0 100644 --- a/classentt_1_1Dispatcher-members.html +++ b/classentt_1_1Dispatcher-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::Dispatcher< Sig >, including all inherited members.
+This is the complete list of members for entt::Dispatcher, including all inherited members.
| connect(instance_type< Class, Event > instance) noexcept | entt::Dispatcher< Sig > | inline |
| disconnect(instance_type< Class, Event > instance) noexcept | entt::Dispatcher< Sig > | inline |
| Dispatcher() noexcept | entt::Dispatcher< Sig > | inline |
| enqueue(Args &&... args) | entt::Dispatcher< Sig > | inline |
| trigger(Args &&... args) | entt::Dispatcher< Sig > | inline |
| update() | entt::Dispatcher< Sig > | inline |
| enqueue(Args &&... args) | entt::Dispatcher | inline |
| sink() ENTT_NOEXCEPT | entt::Dispatcher | inline |
| sink_type typedef | entt::Dispatcher | |
| trigger(Args &&... args) | entt::Dispatcher | inline |
| update() | entt::Dispatcher | inline |
| update() | entt::Dispatcher | inline |
#include <dispatcher.hpp>
+Public Types | |
| +template<typename Event > | |
| using | sink_type = typename SignalWrapper< Event >::sink_type |
| Type of sink for the given event. | |
Public Member Functions | |
| - | Dispatcher () noexcept |
| Default constructor. | |
| template<typename Event , typename Class , void(Class::*)(const Event &) Member = &Class::receive> | |
| void | connect (instance_type< Class, Event > instance) noexcept |
| Registers a listener given in the form of a member function. More... | |
| template<typename Event , typename Class , void(Class::*)(const Event &) Member = &Class::receive> | |
| void | disconnect (instance_type< Class, Event > instance) noexcept |
| Unregisters a listener given in the form of a member function. More... | |
| template<typename Event , typename... Args> | |
| void | trigger (Args &&... args) |
| Triggers an immediate event of the given type. More... | |
| template<typename Event , typename... Args> | |
| void | enqueue (Args &&... args) |
| Enqueues an event of the given type. More... | |
| void | update () |
| Delivers all the pending events. More... | |
| template<typename Event > | |
| sink_type< Event > | sink () ENTT_NOEXCEPT |
| Returns a sink object for the given event. More... | |
| template<typename Event , typename... Args> | |
| void | trigger (Args &&... args) |
| Triggers an immediate event of the given type. More... | |
| template<typename Event , typename... Args> | |
| void | enqueue (Args &&... args) |
| Enqueues an event of the given type. More... | |
| template<typename Event > | |
| void | update () |
| Delivers all the pending events of the given type. More... | |
| void | update () |
| Delivers all the pending events. More... | |
Basic dispatcher implementation.
+Basic dispatcher implementation.
A dispatcher can be used either to trigger an immediate event or to enqueue events to be published all together once per tick.
- Listeners are provided in the form of member functions. For each event of type Event, listeners must have the following signature: void(const Event &). Member functions named receive are automatically detected and registered or unregistered by the dispatcher.
| Sig | Type of the signal handler to use. |
Event, listeners must have the following function type: Member functions named receive are automatically detected and registered or unregistered by the dispatcher. The type of the instances is Class * (a naked pointer). It means that users must guarantee that the lifetimes of the instances overcome the one of the dispatcher itself to avoid crashes.
Definition at line 30 of file dispatcher.hpp.
+Definition at line 35 of file dispatcher.hpp.
-
|
- -inlinenoexcept | -
Registers a listener given in the form of a member function.
-A matching member function has the following signature: void receive(const Event &). Member functions named receive are automatically detected and registered if available.
| Event | Type of event to which to connect the function. |
| Class | Type of class to which the member function belongs. |
| Member | Member function to connect to the signal. |
| instance | A valid instance of the right type. |
Definition at line 118 of file dispatcher.hpp.
- -
-
|
- -inlinenoexcept | -
Unregisters a listener given in the form of a member function.
-A matching member function has the following signature: void receive(const Event &). Member functions named receive are automatically detected and unregistered if available.
| Event | Type of event from which to disconnect the function. |
| Class | Type of class to which the member function belongs. |
| Member | Member function to connect to the signal. |
| instance | A valid instance of the right type. |
Definition at line 140 of file dispatcher.hpp.
- -
+
+
+
+
+Returns a sink object for the given event. +A sink is an opaque object used to connect listeners to events. +The function type for a listener is: void(const Event &) The order of invocation of the listeners isn't guaranteed. +
Definition at line 115 of file dispatcher.hpp. + +◆ trigger()+ +
+
-
-
template<typename Event , typename... Args>
@@ -232,12 +232,12 @@ template<typename Derived >
Disconnects all the listeners. All the connections previously returned are invalidated. Using them results in undefined behavior. -Definition at line 305 of file emitter.hpp. +Definition at line 306 of file emitter.hpp. ◆ empty() [1/2]+ +◆ empty() [1/2]
@@ -258,7 +258,7 @@ template<typename Event >
|
-inlinenoexcept | +inline||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Definition at line 316 of file emitter.hpp.
+Definition at line 317 of file emitter.hpp.
Checks if there are listeners registered with the event emitter.
Definition at line 328 of file emitter.hpp.
+Definition at line 329 of file emitter.hpp.
Definition at line 282 of file emitter.hpp.
+Definition at line 283 of file emitter.hpp.
@@ -402,7 +402,7 @@ template<typename Event >Definition at line 243 of file emitter.hpp.
+Definition at line 244 of file emitter.hpp.
@@ -453,7 +453,7 @@ template<typename Event >Definition at line 268 of file emitter.hpp.
+Definition at line 269 of file emitter.hpp.
@@ -514,7 +514,7 @@ template<typename Derived >Default move assignament operator.
+Default move assignment operator.
Definition at line 218 of file emitter.hpp.
+Definition at line 219 of file emitter.hpp.
diff --git a/classentt_1_1Family-members.html b/classentt_1_1Family-members.html index 52111cefa..cae56ccc3 100644 --- a/classentt_1_1Family-members.html +++ b/classentt_1_1Family-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::Family<... >, including all inherited members.
| family_type typedef | entt::Family<... > | |
| type() noexcept | entt::Family<... > | inlinestatic |
| type() ENTT_NOEXCEPT | entt::Family<... > | inlinestatic |
Dynamic identifier generator.
Utility class template that can be used to assign unique identifiers to types at runtime. Use different specializations to create separate sets of identifiers.
-Definition at line 21 of file family.hpp.
+Definition at line 22 of file family.hpp.
Returns an unique identifier for the given type.
Definition at line 39 of file family.hpp.
+Definition at line 40 of file family.hpp.
diff --git a/classentt_1_1HashedString-members.html b/classentt_1_1HashedString-members.html index f51653f90..0841f5d50 100644 --- a/classentt_1_1HashedString-members.html +++ b/classentt_1_1HashedString-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::HashedString, including all inherited members.
| hash_type typedef | entt::HashedString | |
| HashedString(const char(&str)[N]) noexcept | entt::HashedString | inline |
| HashedString(ConstCharWrapper wrapper) noexcept | entt::HashedString | inlineexplicit |
| operator const char *() const noexcept | entt::HashedString | inline |
| operator hash_type() const noexcept | entt::HashedString | inline |
| operator==(const HashedString &other) const noexcept | entt::HashedString | inline |
| HashedString(const char(&str)[N]) ENTT_NOEXCEPT | entt::HashedString | inline |
| HashedString(ConstCharWrapper wrapper) ENTT_NOEXCEPT | entt::HashedString | inlineexplicit |
| operator const char *() const ENTT_NOEXCEPT | entt::HashedString | inline |
| operator hash_type() const ENTT_NOEXCEPT | entt::HashedString | inline |
| operator==(const HashedString &other) const ENTT_NOEXCEPT | entt::HashedString | inline |
const char *. More...const char *. More...Zero overhead resource identifier.
A hashed string is a compile-time tool that allows users to use human-readable identifers in the codebase while using their numeric counterparts at runtime.
Because of that, a hashed string can also be used in constant expressions if required.
Definition at line 21 of file hashed_string.hpp.
+Definition at line 22 of file hashed_string.hpp.
Constructs a hashed string from an array of const chars.
Forcing template resolution avoids implicit conversions. An human-readable identifier can be anything but a plain, old bunch of characters.
- Example of use:
| N | Number of characters of the identifier. |
Definition at line 55 of file hashed_string.hpp.
+Definition at line 56 of file hashed_string.hpp.
- -Definition at line 65 of file hashed_string.hpp.
+Definition at line 66 of file hashed_string.hpp.
Returns the human-readable representation of a hashed string.
Definition at line 73 of file hashed_string.hpp.
+Definition at line 74 of file hashed_string.hpp.
- -Returns the numeric representation of a hashed string.
Definition at line 79 of file hashed_string.hpp.
+Definition at line 80 of file hashed_string.hpp.
- -Definition at line 86 of file hashed_string.hpp.
+Definition at line 87 of file hashed_string.hpp.
diff --git a/classentt_1_1PersistentView-members.html b/classentt_1_1PersistentView-members.html index 2dc654816..bee4f48a8 100644 --- a/classentt_1_1PersistentView-members.html +++ b/classentt_1_1PersistentView-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::PersistentView< Entity, Component >, including all inherited members.
Definition at line 67 of file view.hpp.
+Definition at line 68 of file view.hpp.
+
|
+ +inline | +
Returns an iterator to the first entity that has the given components.
+The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to end().
Returns an iterator to the first entity that has the given components.
-The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to end().
The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to end().
+
|
+ +inline | +
Returns an iterator to the first entity that has the given components.
+The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to end().
+
|
+ +inline | +
Returns an iterator that is past the last entity that has the given components.
+The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.
+Definition at line 157 of file view.hpp.
+Definition at line 242 of file view.hpp.
- -Direct access to the list of entities.
-The returned pointer is such that range [data(), data() + size()] is always a valid range, even if the container is empty.
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 view in the expected order.Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a set of const references to all the components of the view.
The signature of the function should be equivalent to the following:
| Func | Type of the function object to invoke. |
Definition at line 271 of file view.hpp.
+Definition at line 356 of file view.hpp.
@@ -364,7 +485,7 @@ template<typename Func >Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a set of references to all the components of the view.
The signature of the function should be equivalent to the following:
| Func | Type of the function object to invoke. |
Definition at line 294 of file view.hpp.
+Definition at line 379 of file view.hpp.
- -
+
|
+ +inline | +
+
|
+ +inline | +
Returns an iterator that is past the last entity that has the given components.
+The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.
+Definition at line 148 of file view.hpp.
+Definition at line 233 of file view.hpp.
- -Returns the component assigned to the given entity.
-Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Definition at line 179 of file view.hpp.
+Definition at line 264 of file view.hpp.
- -Returns the component assigned to the given entity.
-Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Definition at line 202 of file view.hpp.
+Definition at line 287 of file view.hpp.
- -Returns the components assigned to the given entity.
-Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Definition at line 225 of file view.hpp.
+Definition at line 310 of file view.hpp.
- -Returns the components assigned to the given entity.
-Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Prefer this function instead of Registry::get during iterations. It has far better performance than its companion function.
Definition at line 249 of file view.hpp.
+Definition at line 334 of file view.hpp.
- -Returns the number of entities that have the given components.
Definition at line 95 of file view.hpp.
+Definition at line 98 of file view.hpp.
@@ -684,7 +871,7 @@ template<typename Comp > -Definition at line 317 of file view.hpp.
+Definition at line 402 of file view.hpp.
diff --git a/classentt_1_1Process-members.html b/classentt_1_1Process-members.html index 03925f91d..19d5e369e 100644 --- a/classentt_1_1Process-members.html +++ b/classentt_1_1Process-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::Process< Derived, Delta >, including all inherited members.
Protected Member Functions | |
| void | succeed () noexcept |
| Terminates a process with success if it's still alive. More... | |
| void | fail () noexcept |
| Terminates a process with errors if it's still alive. More... | |
| void | pause () noexcept |
| Stops a process if it's in a running state. More... | |
| void | unpause () noexcept |
| Restarts a process if it's paused. More... | |
| void | succeed () ENTT_NOEXCEPT |
| Terminates a process with success if it's still alive. More... | |
| void | fail () ENTT_NOEXCEPT |
| Terminates a process with errors if it's still alive. More... | |
| void | pause () ENTT_NOEXCEPT |
| Stops a process if it's in a running state. More... | |
| void | unpause () ENTT_NOEXCEPT |
| Restarts a process if it's paused. More... | |
Definition at line 72 of file process.hpp.
+Definition at line 73 of file process.hpp.
falseDefinition at line 185 of file process.hpp.
+Definition at line 186 of file process.hpp.
- -Returns true if a process is either running or paused.
Definition at line 199 of file process.hpp.
+Definition at line 200 of file process.hpp.
- -Returns true if a process is already terminated.
Definition at line 207 of file process.hpp.
+Definition at line 208 of file process.hpp.
- -Terminates a process with errors if it's still alive.
The function is idempotent and it does nothing if the process isn't alive.
-Definition at line 138 of file process.hpp.
+Definition at line 139 of file process.hpp.
- -Stops a process if it's in a running state.
The function is idempotent and it does nothing if the process isn't running.
-Definition at line 150 of file process.hpp.
+Definition at line 151 of file process.hpp.
- -Returns true if a process is currently paused.
Definition at line 215 of file process.hpp.
+Definition at line 216 of file process.hpp.
- -Returns true if a process terminated with errors.
Definition at line 223 of file process.hpp.
+Definition at line 224 of file process.hpp.
- -Terminates a process with success if it's still alive.
The function is idempotent and it does nothing if the process isn't alive.
-Definition at line 126 of file process.hpp.
+Definition at line 127 of file process.hpp.
- -Definition at line 232 of file process.hpp.
+Definition at line 233 of file process.hpp.
- -Restarts a process if it's paused.
The function is idempotent and it does nothing if the process isn't paused.
-Definition at line 162 of file process.hpp.
+Definition at line 163 of file process.hpp.
diff --git a/classentt_1_1Prototype-members.html b/classentt_1_1Prototype-members.html new file mode 100644 index 000000000..4b14bc681 --- /dev/null +++ b/classentt_1_1Prototype-members.html @@ -0,0 +1,96 @@ + + + + + + + +|
+ entt
+ 2.6.0
+
+ |
+
This is the complete list of members for entt::Prototype< Entity >, including all inherited members.
+| accommodate(registry_type ®istry, const entity_type entity) | entt::Prototype< Entity > | inline |
| assign(registry_type ®istry, const entity_type entity) | entt::Prototype< Entity > | inline |
| create(registry_type ®istry) | entt::Prototype< Entity > | inline |
| entity_type typedef | entt::Prototype< Entity > | |
| get() const ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| get() ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| get() const ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| get() ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| has() const ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| operator()(registry_type ®istry, const entity_type entity) ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| operator()(registry_type ®istry) ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
| registry_type typedef | entt::Prototype< Entity > | |
| set(Args &&... args) | entt::Prototype< Entity > | inline |
| size_type typedef | entt::Prototype< Entity > | |
| unset() ENTT_NOEXCEPT | entt::Prototype< Entity > | inline |
+ 1.8.13
+
+
+
diff --git a/classentt_1_1Prototype.html b/classentt_1_1Prototype.html
new file mode 100644
index 000000000..42d8a881f
--- /dev/null
+++ b/classentt_1_1Prototype.html
@@ -0,0 +1,707 @@
+
+
+
+
+
+
+
+|
+ entt
+ 2.6.0
+
+ |
+
Prototype container for concepts. + More...
+ +#include <prototype.hpp>
+Public Types | |
| +using | registry_type = Registry< Entity > |
| Registry type. | |
| +using | entity_type = Entity |
| Underlying entity identifier. | |
| +using | size_type = std::size_t |
| Unsigned integer type. | |
+Public Member Functions | |
| template<typename Component , typename... Args> | |
| Component & | set (Args &&... args) |
| Assigns to or replaces the given component of a prototype. More... | |
| template<typename Component > | |
| void | unset () ENTT_NOEXCEPT |
| Removes the given component from a prototype. More... | |
| template<typename... Component> | |
| bool | has () const ENTT_NOEXCEPT |
| Checks if a prototype owns all the given components. More... | |
| template<typename Component > | |
| const Component & | get () const ENTT_NOEXCEPT |
| Returns a reference to the given component. More... | |
| template<typename Component > | |
| Component & | get () ENTT_NOEXCEPT |
| Returns a reference to the given component. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< const Component &... > > | get () const ENTT_NOEXCEPT |
| Returns a reference to the given components. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< Component &... > > | get () ENTT_NOEXCEPT |
| Returns a reference to the given components. More... | |
| entity_type | create (registry_type ®istry) |
| Creates a new entity using a given prototype. More... | |
| void | assign (registry_type ®istry, const entity_type entity) |
| Assigns the components of a prototype to a given entity. More... | |
| void | accommodate (registry_type ®istry, const entity_type entity) |
| Assigns or replaces the components of a prototype for an entity. More... | |
| void | operator() (registry_type ®istry, const entity_type entity) ENTT_NOEXCEPT |
| Assigns the components of a prototype to an entity. More... | |
| entity_type | operator() (registry_type ®istry) ENTT_NOEXCEPT |
| Creates a new entity using a given prototype. More... | |
Prototype container for concepts.
+A prototype is used to define a concept in terms of components.
+ Prototypes act as templates for those specific types of an application which users would otherwise define through a series of component assignments to entities. In other words, prototypes can be used to assign components to entities of a registry at once.
| Entity | A valid entity type (see entt_traits for more details). |
Definition at line 32 of file prototype.hpp.
+
+
|
+ +inline | +
Assigns or replaces the components of a prototype for an entity.
+Existing components are overwritten, if any. All the other components will be copied over to the target entity.
+| registry | A valid reference to a registry. |
| entity | A valid entity identifier. |
Definition at line 268 of file prototype.hpp.
+ +
+
|
+ +inline | +
Assigns the components of a prototype to a given entity.
+Assigning a prototype to an entity won't overwrite existing components under any circumstances.
+ In other words, only those components that the entity doesn't own yet are copied over. All the other components remain unchanged.
| registry | A valid reference to a registry. |
| entity | A valid entity identifier. |
Definition at line 248 of file prototype.hpp.
+ +
+
|
+ +inline | +
Creates a new entity using a given prototype.
+Utility shortcut, equivalent to the following snippet:
+| registry | A valid reference to a registry. |
Definition at line 226 of file prototype.hpp.
+ +
+
|
+ +inline | +
Returns a reference to the given component.
+| Component | Type of component to get. |
Definition at line 145 of file prototype.hpp.
+ +
+
|
+ +inline | +
Returns a reference to the given component.
+| Component | Type of component to get. |
Definition at line 168 of file prototype.hpp.
+ +
+
|
+ +inline | +
Returns a reference to the given components.
+| Component | Type of components to get. |
Definition at line 186 of file prototype.hpp.
+ +
+
|
+ +inline | +
Returns a reference to the given components.
+| Component | Type of components to get. |
Definition at line 204 of file prototype.hpp.
+ +
+
|
+ +inline | +
Checks if a prototype owns all the given components.
+| Component | Components for which to perform the check. |
Definition at line 118 of file prototype.hpp.
+ +
+
|
+ +inline | +
Assigns the components of a prototype to an entity.
+Assigning a prototype to an entity won't overwrite existing components under any circumstances.
+ In other words, only the components that the entity doesn't own yet are copied over. All the other components remain unchanged.
| registry | A valid reference to a registry. |
| entity | A valid entity identifier. |
Definition at line 290 of file prototype.hpp.
+ +
+
|
+ +inline | +
Creates a new entity using a given prototype.
+Utility shortcut, equivalent to the following snippet:
+| registry | A valid reference to a registry. |
Definition at line 312 of file prototype.hpp.
+ +
+
|
+ +inline | +
Assigns to or replaces the given component of a prototype.
+| Component | Type of component to assign or replace. |
| Args | Types of arguments to use to construct the component. |
| args | Parameters to use to initialize the component. |
Definition at line 82 of file prototype.hpp.
+ +
+
|
+ +inline | +
Removes the given component from a prototype.
+| Component | Type of component to remove. |
Definition at line 106 of file prototype.hpp.
+ +
+ 1.8.13
+
+
+
diff --git a/classentt_1_1RawView-members.html b/classentt_1_1RawView-members.html
index 6cfea9db2..72fa3fbd0 100644
--- a/classentt_1_1RawView-members.html
+++ b/classentt_1_1RawView-members.html
@@ -22,7 +22,7 @@
This is the complete list of members for entt::RawView< Entity, Component >, including all inherited members.
Friends | ||||||
+
|
+ +inline | +
Returns an iterator to the first instance of the given type.
+The returned iterator points to the first instance of the given type. If the view is empty, the returned iterator will be equal to end().
Returns an iterator to the first instance of the given type.
-The returned iterator points to the first instance of the given type. If the view is empty, the returned iterator will be equal to end().
The returned iterator points to the first instance of the given type. If the view is empty, the returned iterator will be equal to end().
+
|
+ +inline | +
Returns an iterator to the first instance of the given type.
+The returned iterator points to the first instance of the given type. If the view is empty, the returned iterator will be equal to end().
+
|
+ +inline | +
Returns an iterator that is past the last instance of the given type.
+The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.
+Direct access to the list of entities.
-The returned pointer is such that range [data(), data() + size()] is always a valid range, even if the container is empty.
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 view in the expected order.
+
|
+ +inline | +
Iterates components and applies the given function object to them.
+The function object is provided with a const reference to each component of the view.
+ The signature of the function should be equivalent to the following:
| Func | Type of the function object to invoke. |
| func | A valid function object. |
+
|
+ +inline | +
Iterates components and applies the given function object to them.
+The function object is provided with a const reference to each component of the view.
+ The signature of the function should be equivalent to the following:
| Func | Type of the function object to invoke. |
| func | A valid function object. |
+
|
+ +inline | +
+
|
+ +inline | +
Returns an iterator that is past the last instance of the given type.
+The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.
+Definition at line 1116 of file view.hpp.
+Definition at line 1463 of file view.hpp.
- -
-
|
- -inlinenoexcept | -
Direct access to the list of components.
-The returned pointer is such that range [raw(), raw() + size()] is always a valid range, even if the container is empty.
begin and end if you want to iterate the view in the expected order.Direct access to the list of components.
-The returned pointer is such that range [raw(), raw() + size()] is always a valid range, even if the container is empty.
The returned pointer is such that range [raw(), raw() + size()] is always a valid range, even if the container is empty.
begin and end if you want to iterate the view in the expected order.
+
|
+ +inline | +
Direct access to the list of components.
+The returned pointer is such that range [raw(), raw() + size()] is always a valid range, even if the container is empty.
begin and end if you want to iterate the view in the expected order.Returns the number of instances of the given type.
Definition at line 1033 of file view.hpp.
+Definition at line 1302 of file view.hpp.
diff --git a/classentt_1_1Registry-members.html b/classentt_1_1Registry-members.html index 44882d6d0..eb974528e 100644 --- a/classentt_1_1Registry-members.html +++ b/classentt_1_1Registry-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::Registry< Entity >, including all inherited members.
Public Member Functions | |
| Registry & | operator= (Registry &&)=default |
| Default move assignment operator. More... | |
| template<typename Tag > | |
| tag_type | tag () const noexcept |
| Returns the numeric identifier of a type of tag at runtime. More... | |
| template<typename Component > | |
| component_type | component () const noexcept |
| Returns the numeric identifier of a type of component at runtime. More... | |
| template<typename Component > | |
| size_type | size () const noexcept |
| Returns the number of existing components of the given type. More... | |
| size_type | size () const noexcept |
| Returns the number of entities still in use. More... | |
| template<typename Component > | |
| void | reserve (size_type cap) |
| Increases the capacity of the pool for a given component. More... | |
| void | reserve (size_type cap) |
| Increases the capacity of a registry in terms of entities. More... | |
| size_type | capacity () const noexcept |
| Returns the number of entities ever created. More... | |
| template<typename Component > | |
| bool | empty () const noexcept |
| Checks whether the pool for the given component is empty. More... | |
| bool | empty () const noexcept |
| Checks if there exists at least an entity still in use. More... | |
| bool | valid (entity_type entity) const noexcept |
| Checks if an entity identifier refers to a valid entity. More... | |
| bool | fast (entity_type entity) const noexcept |
| Checks if an entity identifier refers to a valid entity. More... | |
| version_type | version (entity_type entity) const noexcept |
| Returns the version stored along with an entity identifier. More... | |
| version_type | current (entity_type entity) const noexcept |
| Returns the actual version for an entity identifier. More... | |
| template<typename... Component> | |
| entity_type | create (Component &&... components) noexcept |
| Returns a new entity initialized with the given components. More... | |
| template<typename... Component> | |
| entity_type | create () noexcept |
| Returns a new entity to which the given components are assigned. More... | |
| entity_type | create () noexcept |
| Creates a new entity and returns it. More... | |
| void | destroy (entity_type entity) |
| Destroys an entity and lets the registry recycle the identifier. More... | |
| template<typename Tag , typename... Args> | |
| Tag & | attach (entity_type entity, Args &&... args) |
| Attaches the given tag to an entity. More... | |
| template<typename Component > | |
| size_type | size () const ENTT_NOEXCEPT |
| Returns the number of existing components of the given type. More... | |
| size_type | size () const ENTT_NOEXCEPT |
| Returns the number of entities still in use. More... | |
| template<typename Component > | |
| void | reserve (const size_type cap) |
| Increases the capacity of the pool for a given component. More... | |
| void | reserve (const size_type cap) |
| Increases the capacity of a registry in terms of entities. More... | |
| size_type | capacity () const ENTT_NOEXCEPT |
| Returns the number of entities ever created. More... | |
| template<typename Component > | |
| bool | empty () const ENTT_NOEXCEPT |
| Checks whether the pool for the given component is empty. More... | |
| bool | empty () const ENTT_NOEXCEPT |
| Checks if there exists at least an entity still in use. More... | |
| template<typename Component > | |
| const Component * | raw () const ENTT_NOEXCEPT |
| Direct access to the list of components of a given pool. More... | |
| template<typename Component > | |
| Component * | raw () ENTT_NOEXCEPT |
| Direct access to the list of components of a given pool. More... | |
| template<typename Component > | |
| const entity_type * | data () const ENTT_NOEXCEPT |
| Direct access to the list of entities of a given pool. More... | |
| bool | valid (const entity_type entity) const ENTT_NOEXCEPT |
| Checks if an entity identifier refers to a valid entity. More... | |
| bool | fast (const entity_type entity) const ENTT_NOEXCEPT |
| Checks if an entity identifier refers to a valid entity. More... | |
| version_type | version (const entity_type entity) const ENTT_NOEXCEPT |
| Returns the version stored along with an entity identifier. More... | |
| version_type | current (const entity_type entity) const ENTT_NOEXCEPT |
| Returns the actual version for an entity identifier. More... | |
| entity_type | create () ENTT_NOEXCEPT |
| Creates a new entity and returns it. More... | |
| entity_type | clone (const entity_type entity) ENTT_NOEXCEPT |
| Clones an entity and returns the newly created one. More... | |
| void | destroy (const entity_type entity) |
| Destroys an entity and lets the registry recycle the identifier. More... | |
| template<typename Tag , typename... Args> | |
| Tag & | assign (tag_t, const entity_type entity, Args &&... args) |
| Attaches the given tag to an entity. More... | |
| template<typename Component , typename... Args> | |
| Component & | assign (const entity_type entity, Args &&... args) |
| Assigns the given component to an entity. More... | |
| template<typename Tag > | |
| void | remove () |
| Removes the given tag from its owner, if any. More... | |
| template<typename Tag > | |
| bool | has () const noexcept |
| Checks if the given tag has an owner. More... | |
| template<typename Tag > | |
| const Tag & | get () const noexcept |
| Returns a reference to the given tag. More... | |
| template<typename Tag > | |
| Tag & | get () noexcept |
| Returns a reference to the given tag. More... | |
| template<typename Tag , typename... Args> | |
| Tag & | set (Args &&... args) |
| Replaces the given tag. More... | |
| template<typename Tag > | |
| entity_type | move (entity_type entity) |
| Changes the owner of the given tag. More... | |
| template<typename Tag > | |
| entity_type | attachee () const noexcept |
| Gets the owner of the given tag, if any. More... | |
| template<typename Component , typename... Args> | |
| Component & | assign (entity_type entity, Args &&... args) |
| Assigns the given component to an entity. More... | |
| template<typename Component > | |
| void | remove (entity_type entity) |
| Removes the given component from an entity. More... | |
| template<typename... Component> | |
| bool | has (entity_type entity) const noexcept |
| Checks if an entity has all the given components. More... | |
| template<typename Component > | |
| const Component & | get (entity_type entity) const noexcept |
| Returns a reference to the given component for an entity. More... | |
| template<typename Component > | |
| Component & | get (entity_type entity) noexcept |
| Returns a reference to the given component for an entity. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< const Component &... > > | get (entity_type entity) const noexcept |
| Returns a reference to the given components for an entity. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< Component &... > > | get (entity_type entity) noexcept |
| Returns a reference to the given components for an entity. More... | |
| template<typename Component , typename... Args> | |
| Component & | replace (entity_type entity, Args &&... args) |
| Replaces the given component for an entity. More... | |
| template<typename Component , typename... Args> | |
| Component & | accommodate (entity_type entity, Args &&... args) |
| Assigns or replaces the given component for an entity. More... | |
| template<typename Component , typename Compare > | |
| void | sort (Compare compare) |
| Sorts the pool of entities for the given component. More... | |
| template<typename Component > | |
| void | remove (const entity_type entity) |
| Removes the given component from an entity. More... | |
| template<typename Tag > | |
| bool | has () const ENTT_NOEXCEPT |
| Checks if the given tag has an owner. More... | |
| template<typename Tag > | |
| bool | has (tag_t, const entity_type entity) const ENTT_NOEXCEPT |
| Checks if an entity owns the given tag. More... | |
| template<typename... Component> | |
| bool | has (const entity_type entity) const ENTT_NOEXCEPT |
| Checks if an entity has all the given components. More... | |
| template<typename Tag > | |
| const Tag & | get () const ENTT_NOEXCEPT |
| Returns a reference to the given tag. More... | |
| template<typename Tag > | |
| Tag & | get () ENTT_NOEXCEPT |
| Returns a reference to the given tag. More... | |
| template<typename Component > | |
| const Component & | get (const entity_type entity) const ENTT_NOEXCEPT |
| Returns a reference to the given component for an entity. More... | |
| template<typename Component > | |
| Component & | get (const entity_type entity) ENTT_NOEXCEPT |
| Returns a reference to the given component for an entity. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< const Component &... > > | get (const entity_type entity) const ENTT_NOEXCEPT |
| Returns a reference to the given components for an entity. More... | |
| template<typename... Component> | |
| std::enable_if_t<(sizeof...(Component) > 1), std::tuple< Component &... > > | get (const entity_type entity) ENTT_NOEXCEPT |
| Returns a reference to the given components for an entity. More... | |
| template<typename Tag , typename... Args> | |
| Tag & | replace (tag_t, Args &&... args) |
| Replaces the given tag. More... | |
| template<typename Component , typename... Args> | |
| Component & | replace (const entity_type entity, Args &&... args) |
| Replaces the given component for an entity. More... | |
| template<typename Tag > | |
| entity_type | move (const entity_type entity) |
| Changes the owner of the given tag. More... | |
| template<typename Tag > | |
| entity_type | attachee () const ENTT_NOEXCEPT |
| Gets the owner of the given tag, if any. More... | |
| template<typename Component , typename... Args> | |
| Component & | accommodate (const entity_type entity, Args &&... args) |
| Assigns or replaces the given component for an entity. More... | |
| template<typename Tag > | |
| sink_type | construction (tag_t) ENTT_NOEXCEPT |
| Returns a sink object for the given tag. More... | |
| template<typename Component > | |
| sink_type | construction () ENTT_NOEXCEPT |
| Returns a sink object for the given component. More... | |
| template<typename Tag > | |
| sink_type | destruction (tag_t) ENTT_NOEXCEPT |
| Returns a sink object for the given tag. More... | |
| template<typename Component > | |
| sink_type | destruction () ENTT_NOEXCEPT |
| Returns a sink object for the given component. More... | |
| template<typename Component , typename Compare , typename Sort = StdSort> | |
| void | sort (Compare compare, Sort sort=Sort{}) |
| Sorts the pool of entities for the given component. More... | |
| template<typename To , typename From > | |
| void | sort () |
| Sorts two pools of components in the same way. More... | |
| template<typename Component > | |
| void | reset (entity_type entity) |
| Resets the given component for an entity. More... | |
| template<typename Component > | |
| void | reset (const entity_type entity) |
| Resets the given component for an entity. More... | |
| template<typename Component > | |
| void | reset () |
| Resets the pool of the given component. More... | |
| void | each (Func func) const |
| Iterates all the entities that are still in use. More... | |
| bool | orphan (entity_type entity) const |
| Checks if an entity is an orphan. More... | |
| bool | orphan (const entity_type entity) const |
| Checks if an entity is an orphan. More... | |
| template<typename Func > | |
| void | orphans (Func func) const |
| Iterates orphans and applies them the given function object. More... | |
| void | discard () |
| Discards all the data structures used for a given persitent view. More... | |
| template<typename... Component> | |
| bool | contains () const noexcept |
| Checks if a persistent view has already been prepared. More... | |
| template<typename... Component> | |
| PersistentView< Entity, Component... > | persistent () |
| Returns a persistent view for the given components. More... | |
| template<typename Component > | |
| RawView< Entity, Component > | raw () |
| Returns a raw view for the given component. More... | |
| template<typename... Component> | |
| bool | contains () const ENTT_NOEXCEPT |
| Checks if a persistent view has already been prepared. More... | |
| template<typename... Component> | |
| PersistentView< Entity, Component... > | view (persistent_t) |
| Returns a persistent view for the given components. More... | |
| template<typename Component > | |
| RawView< Entity, Component > | view (raw_t) |
| Returns a raw view for the given component. More... | |
| Snapshot< Entity > | snapshot () const |
| Returns a temporary object to use to create snapshots. More... | |
| SnapshotLoader< Entity > | restore () |
| Returns a temporary object to use to load snapshots. More... | |
+Static Public Member Functions | |
| template<typename Tag > | |
| static tag_type | type (tag_t) ENTT_NOEXCEPT |
| Returns the numeric identifier of a type of tag at runtime. More... | |
| template<typename Component > | |
| static component_type | type () ENTT_NOEXCEPT |
| Returns the numeric identifier of a type of component at runtime. More... | |
Definition at line 35 of file registry.hpp.
+Definition at line 39 of file registry.hpp.
Definition at line 842 of file registry.hpp.
+Definition at line 903 of file registry.hpp.
- -
-
|
- -inline | -
Assigns the given component to an entity.
-A new instance of the given component is created and initialized with the arguments provided (the component must have a proper constructor or be of aggregate type). Then the component is assigned to the given entity.
-| Component | Type of component to create. |
| Args | Types of arguments to use to construct the component. |
| entity | A valid entity identifier. |
| args | Parameters to use to initialize the component. |
Definition at line 664 of file registry.hpp.
- -| Tag& entt::Registry< Entity >::attach | +Tag& entt::Registry< Entity >::assign | ( | -entity_type | +tag_t | +, | +||||||||||||||||
| + | + | const entity_type | entity, | ||||||||||||||||||
+
|
+ +inline | +
Assigns the given component to an entity.
+A new instance of the given component is created and initialized with the arguments provided (the component must have a proper constructor or be of aggregate type). Then the component is assigned to the given entity.
+| Component | Type of component to create. |
| Args | Types of arguments to use to construct the component. |
| entity | A valid entity identifier. |
| args | Parameters to use to initialize the component. |
Definition at line 566 of file registry.hpp.
+ +Definition at line 638 of file registry.hpp.
+Definition at line 871 of file registry.hpp.
- -Returns the number of entities ever created.
Definition at line 266 of file registry.hpp.
+Definition at line 228 of file registry.hpp.
- -
+
|
+ +inline | +
Clones an entity and returns the newly created one.
+There are two kinds of entity identifiers:
+Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the valid member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
| entity | A valid entity identifier |
Definition at line 439 of file registry.hpp.
+ +
+
|
+ +inline | +
Returns a sink object for the given tag.
+A sink is an opaque object used to connect listeners to tags.
+ The sink returned by this function can be used to receive notifications whenever a new instance of the given tag is created and assigned to an entity.
The function type for a listener is:
Listeners are invoked after the tag has been assigned to the entity. The order of invocation of the listeners isn't guaranteed.
+ Note also that the greater the number of listeners, the greater the performance hit when a new tag is created.
| Tag | Type of tag of which to get the sink. |
Definition at line 936 of file registry.hpp.
+ +| component_type entt::Registry< Entity >::component | +sink_type entt::Registry< Entity >::construction | ( | ) | -const | +
Returns the numeric identifier of a type of component at runtime.
-The given component doesn't need to be necessarily in use. However, the registry could decide to prepare internal data structures for it for later uses.
- Do not use this functionality to provide numeric identifiers to types at runtime.
Returns a sink object for the given component.
+A sink is an opaque object used to connect listeners to components.
+ The sink returned by this function can be used to receive notifications whenever a new instance of the given component is created and assigned to an entity.
The function type for a listener is:
Listeners are invoked after the component has been assigned to the entity. The order of invocation of the listeners isn't guaranteed.
+ Note also that the greater the number of listeners, the greater the performance hit when a new component is created.
| Component | Type of component to query. |
| Component | Type of component of which to get the sink. |
Definition at line 214 of file registry.hpp.
+Definition at line 965 of file registry.hpp.
Definition at line 1159 of file registry.hpp.
+Definition at line 1385 of file registry.hpp.
- -
-
|
- -inlinenoexcept | -
Returns a new entity initialized with the given components.
-There are two kinds of entity identifiers:
-Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the current member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
The returned entity has fully initialized components assigned.
-| Component | A list of components to assign to the entity. |
| components | Instances with which to initialize components. |
Definition at line 375 of file registry.hpp.
- -
-
|
- -inlinenoexcept | -
Returns a new entity to which the given components are assigned.
-There are two kinds of entity identifiers:
-Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the current member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
The returned entity has default initialized components assigned.
-| Component | A list of components to assign to the entity. |
Definition at line 402 of file registry.hpp.
- -There are two kinds of entity identifiers:
Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the current member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
Users should not care about the type of the returned entity identifier. In case entity identifers are stored around, the valid member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
The returned entity has no components assigned.
Definition at line 427 of file registry.hpp.
+Definition at line 390 of file registry.hpp.
- -Definition at line 349 of file registry.hpp.
+Definition at line 367 of file registry.hpp.
- -
+
|
+ +inline | +
Direct access to the list of entities of a given pool.
+The returned pointer is such that range [data<Component>(), data<Component>() + size<Component>()] is always a valid range, even if the container is empty.
| Component | Type of component in which one is interested. |
Definition at line 304 of file registry.hpp.
+ +Destroys an entity and lets the registry recycle the identifier.
-When an entity is destroyed, its version is updated and the identifier can be recycled at any time. In case entity identifers are stored around, the current member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
When an entity is destroyed, its version is updated and the identifier can be recycled at any time. In case entity identifers are stored around, the valid member function can be used to know if they are still valid or the entity has been destroyed and potentially recycled.
+
|
+ +inline | +
Returns a sink object for the given tag.
+A sink is an opaque object used to connect listeners to tag.
+ The sink returned by this function can be used to receive notifications whenever an instance of the given tag is removed from an entity and thus destroyed.
The function type for a listener is:
Listeners are invoked before the tag has been removed from the entity. The order of invocation of the listeners isn't guaranteed.
+ Note also that the greater the number of listeners, the greater the performance hit when a tag is destroyed.
| Tag | Type of tag of which to get the sink. |
Definition at line 994 of file registry.hpp.
+ +
+
|
+ +inline | +
Returns a sink object for the given component.
+A sink is an opaque object used to connect listeners to components.
+ The sink returned by this function can be used to receive notifications whenever an instance of the given component is removed from an entity and thus destroyed.
The function type for a listener is:
Listeners are invoked before the component has been removed from the entity. The order of invocation of the listeners isn't guaranteed.
+ Note also that the greater the number of listeners, the greater the performance hit when a component is destroyed.
| Component | Type of component of which to get the sink. |
Definition at line 1023 of file registry.hpp.
Discards all the data structures used for a given persitent view.
Persistent views occupy memory, no matter if they are in use or not.
- This function can be used to discard all the internal data structures dedicated to a specific persisten view, with the goal of reducing the memory pressure.
Definition at line 277 of file registry.hpp.
+Definition at line 239 of file registry.hpp.
- -Checks if there exists at least an entity still in use.
Definition at line 285 of file registry.hpp.
+Definition at line 247 of file registry.hpp.
- -Definition at line 316 of file registry.hpp.
+Definition at line 335 of file registry.hpp.
- -Definition at line 554 of file registry.hpp.
+Definition at line 682 of file registry.hpp.
- -Definition at line 572 of file registry.hpp.
+Definition at line 700 of file registry.hpp.
- -Definition at line 725 of file registry.hpp.
+Definition at line 719 of file registry.hpp.
- -Definition at line 745 of file registry.hpp.
+Definition at line 740 of file registry.hpp.
- -Definition at line 765 of file registry.hpp.
+Definition at line 760 of file registry.hpp.
- -Definition at line 785 of file registry.hpp.
+Definition at line 780 of file registry.hpp.
- -Definition at line 532 of file registry.hpp.
+Definition at line 616 of file registry.hpp.
- -
+
|
+ +inline | +
Checks if an entity owns the given tag.
+Syntactic sugar for the following snippet:
+| Tag | Type of tag for which to perform the check. |
| entity | A valid entity identifier. |
Definition at line 643 of file registry.hpp.
+ +Definition at line 701 of file registry.hpp.
+Definition at line 660 of file registry.hpp.
- -Definition at line 616 of file registry.hpp.
+Definition at line 849 of file registry.hpp.
@@ -1581,8 +1812,8 @@ template<typename Entity> - -Definition at line 1024 of file registry.hpp.
+Definition at line 1220 of file registry.hpp.
@@ -1652,7 +1883,7 @@ template<typename Func >Iterates orphans and applies them the given function object.
The function object is invoked for each entity that is still in use and has neither assigned components nor tags.
The signature of the function should be equivalent to the following:
This function can be very slow and should not be used frequently.
+This function can be very slow and should not be used frequently.
| Func | Type of the function object to invoke. |
-
|
- -inline | -
Returns a persistent view for the given components.
-This kind of views are created on the fly and share with the registry its internal data structures.
- Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.
- As a rule of thumb, storing a view should never be an option.
Persistent views are the right choice to iterate entities when the number of components grows up and the most of the entities have all the given components.
- However they have also drawbacks:
That being said, persistent views are an incredibly powerful tool if used with care and offer a boost of performance undoubtedly.
-prepare member function to initialize the internal data structures used by persistent views when the registry is still empty. Initialization could be a costly operation otherwise and it will be performed the very first time each view is created.| Component | Types of components used to construct the view. |
Definition at line 1204 of file registry.hpp.
+Definition at line 1254 of file registry.hpp.
Definition at line 1121 of file registry.hpp.
+Definition at line 1317 of file registry.hpp.
- -| RawView<Entity, Component> entt::Registry< Entity >::raw | +const Component* entt::Registry< Entity >::raw | +( | +) | +const | +
Direct access to the list of components of a given pool.
+The returned pointer is such that range [raw<Component>(), raw<Component>() + size<Component>()] is always a valid range, even if the container is empty.
| Component | Type of component in which one is interested. |
Definition at line 266 of file registry.hpp.
+ +
+
-
@@ -1856,12 +2062,12 @@ template<typename Tag >
-Returns a raw view for the given component. -This kind of views are created on the fly and share with the registry its internal data structures. Raw views are incredibly fast and must be considered the best tool to iterate components whenever knowing the entities to which they belong isn't required. -
Direct access to the list of components of a given pool. +The returned pointer is such that range
Definition at line 1232 of file registry.hpp. +Definition at line 285 of file registry.hpp. Definition at line 520 of file registry.hpp. +Definition at line 579 of file registry.hpp. - -◆ remove() [2/2]+ +◆ remove() [2/2]
@@ -1876,7 +2082,7 @@ template<typename Component >
void entt::Registry< Entity >::remove |
( |
- entity_type |
+ const entity_type |
entity | ) |
| Definition at line 683 of file registry.hpp. +Definition at line 602 of file registry.hpp. - -◆ replace()+ +◆ replace() [1/2]+ +
+
+
+
+
+template<typename Entity>
+
+template<typename Tag , typename... Args>
+
+
+
+Replaces the given tag. +A new instance of the given tag is created and initialized with the arguments provided (the tag must have a proper constructor or be of aggregate type). +
Definition at line 803 of file registry.hpp. + +◆ replace() [2/2]
@@ -1924,7 +2191,7 @@ template<typename Component , typename... Args>
Component& entt::Registry< Entity >::replace |
( |
- entity_type |
+ const entity_type |
entity, |
Definition at line 810 of file registry.hpp. +Definition at line 828 of file registry.hpp. - -◆ reserve() [1/2]+ +◆ reserve() [1/2]
@@ -1986,7 +2253,7 @@ template<typename Component >
void entt::Registry< Entity >::reserve |
( |
- size_type |
+ const size_type |
cap | ) |
| Definition at line 246 of file registry.hpp. +Definition at line 207 of file registry.hpp. - -◆ reserve() [2/2]+ +◆ reserve() [2/2]
@@ -2031,7 +2298,7 @@ template<typename Entity>
void entt::Registry< Entity >::reserve |
( |
- size_type |
+ const size_type |
cap | ) |
| Definition at line 258 of file registry.hpp. +Definition at line 220 of file registry.hpp. - -◆ reset() [1/3]+ +◆ reset() [1/3]
@@ -2072,7 +2339,7 @@ template<typename Component >
void entt::Registry< Entity >::reset |
( |
- entity_type |
+ const entity_type |
entity | ) |
| Definition at line 929 of file registry.hpp. +Definition at line 1125 of file registry.hpp. @@ -2141,7 +2408,7 @@ template<typename Component > -Definition at line 950 of file registry.hpp. +Definition at line 1146 of file registry.hpp. @@ -2171,9 +2438,9 @@ template<typename Entity>Resets a whole registry. -Destroys all the entities. After a call to Destroys all the entities. After a call to Definition at line 970 of file registry.hpp. +Definition at line 1166 of file registry.hpp. A snapshot is either a full or a partial dump of a registry.
Definition at line 1281 of file registry.hpp. +Definition at line 1503 of file registry.hpp. - -◆ set()- -
-
-
-
-
-template<typename Entity>
-
-template<typename Tag , typename... Args>
-
-
-
-Replaces the given tag. -A new instance of the given tag is created and initialized with the arguments provided (the tag must have a proper constructor or be of aggregate type). -
Definition at line 595 of file registry.hpp. - -◆ size() [1/2]+ +◆ size() [1/2]
@@ -2285,7 +2501,7 @@ template<typename Component >
|
Definition at line 224 of file registry.hpp.
+Definition at line 185 of file registry.hpp.
Returns the number of entities still in use.
Definition at line 232 of file registry.hpp.
+Definition at line 193 of file registry.hpp.
@@ -2363,21 +2579,21 @@ template<typename Entity>Returns a temporary object to use to create snapshots.
A snapshot is either a full or a partial dump of a registry.
It can be used to save and restore its internal state or to keep two or more instances of this class in sync, as an example in a client-server architecture.
Definition at line 1246 of file registry.hpp.
+Definition at line 1474 of file registry.hpp.
- -| @@ -2386,8 +2602,18 @@ template<typename Component , typename Compare > | void entt::Registry< Entity >::sort | ( | Compare | -compare | ) | +compare, | +
| + | Sort | +sort = Sort{} |
+ ||||
| + | ) | +
The order of the elements in a pool is highly affected by assignments of components to entities and deletions. Components are arranged to maximize the performance during iterations and users should not make any assumption on the order.
This function can be used to impose an order to the elements in the pool for the given component. The order is kept valid until a component of the given type is assigned or removed from an entity.
The comparison function object must return true if the first element is less than the second one, false otherwise. The signature of the comparison function should be equivalent to the following:
Moreover, the comparison function object shall induce a strict weak ordering on the values.
+The sort function oject must offer a member function template operator() that accepts three arguments:
The comparison funtion object received by the sort function object hasn't necessarily the type of the one passed along with the other parameters to this member function.
+| Component | Type of components to sort. |
| Compare | Type of comparison function object. |
| Sort | Type of sort function object. |
| compare | A valid comparison function object. |
| sort | A valid sort function object. |
Definition at line 875 of file registry.hpp.
+Definition at line 1068 of file registry.hpp.
@@ -2464,12 +2700,12 @@ template<typename To , typename From >Definition at line 910 of file registry.hpp.
+Definition at line 1104 of file registry.hpp.
- -| tag_type entt::Registry< Entity >::tag | +static tag_type entt::Registry< Entity >::type | ( | +tag_t | ) | -const | +
Definition at line 197 of file registry.hpp.
+Definition at line 158 of file registry.hpp.
- -
+
|
+ +inlinestatic | +
Returns the numeric identifier of a type of component at runtime.
+The given component doesn't need to be necessarily in use. However, the registry could decide to prepare internal data structures for it for later uses.
+ Do not use this functionality to provide numeric identifiers to types at runtime.
| Component | Type of component to query. |
Definition at line 175 of file registry.hpp.
+ +Definition at line 294 of file registry.hpp.
+Definition at line 313 of file registry.hpp.
- -Definition at line 328 of file registry.hpp.
+Definition at line 346 of file registry.hpp.
-Definition at line 1100 of file registry.hpp.
+Definition at line 1296 of file registry.hpp.
+ +
+
|
+ +inline | +
Returns a persistent view for the given components.
+This kind of views are created on the fly and share with the registry its internal data structures.
+ Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.
+ As a rule of thumb, storing a view should never be an option.
Persistent views are the right choice to iterate entities when the number of components grows up and the most of the entities have all the given components.
+ However they have also drawbacks:
That being said, persistent views are an incredibly powerful tool if used with care and offer a boost of performance undoubtedly.
+prepare member function to initialize the internal data structures used by persistent views when the registry is still empty. Initialization could be a costly operation otherwise and it will be performed the very first time each view is created.| Component | Types of components used to construct the view. |
Definition at line 1430 of file registry.hpp.
+ +
+
|
+ +inline | +
Returns a raw view for the given component.
+This kind of views are created on the fly and share with the registry its internal data structures.
+ Feel free to discard a view after the use. Creating and destroying a view is an incredibly cheap operation because they do not require any type of initialization.
+ As a rule of thumb, storing a view should never be an option.
Raw views are incredibly fast and must be considered the best tool to iterate components whenever knowing the entities to which they belong isn't required.
+| Component | Type of component used to construct the view. |
Definition at line 1459 of file registry.hpp.
This is the complete list of members for entt::ResourceCache< Resource >, including all inherited members.
Clears a cache and discards all its resources.
Handles are not invalidated and the memory used by a resource isn't freed as long as at least a handle keeps the resource itself alive.
-Definition at line 72 of file cache.hpp.
+Definition at line 73 of file cache.hpp.
- -Definition at line 172 of file cache.hpp.
+Definition at line 173 of file cache.hpp.
- -Definition at line 184 of file cache.hpp.
+Definition at line 185 of file cache.hpp.
- -Returns true if a cache contains no resources, false otherwise.
Definition at line 62 of file cache.hpp.
+Definition at line 63 of file cache.hpp.
- -Definition at line 162 of file cache.hpp.
+Definition at line 163 of file cache.hpp.
- -Definition at line 95 of file cache.hpp.
+Definition at line 96 of file cache.hpp.
- -Definition at line 128 of file cache.hpp.
+Definition at line 129 of file cache.hpp.
- -Number of resources managed by a cache.
Definition at line 54 of file cache.hpp.
+Definition at line 55 of file cache.hpp.
@@ -598,7 +598,7 @@ template<typename Loader , typename... Args>Definition at line 145 of file cache.hpp.
+Definition at line 146 of file cache.hpp.
diff --git a/classentt_1_1ResourceHandle-members.html b/classentt_1_1ResourceHandle-members.html index 1da4b9fd8..b5a2ecde6 100644 --- a/classentt_1_1ResourceHandle-members.html +++ b/classentt_1_1ResourceHandle-members.html @@ -22,7 +22,7 @@This is the complete list of members for entt::ResourceHandle< Resource >, including all inherited members.
Public Member Functions | |
| - | ResourceHandle (const ResourceHandle &) noexcept=default |
| Default copy constructor. | |
| - | ResourceHandle (ResourceHandle &&) noexcept=default |
| Default move constructor. | |
| ResourceHandle & | operator= (const ResourceHandle &) noexcept=default |
| Default copy assignment operator. More... | |
| ResourceHandle & | operator= (ResourceHandle &&) noexcept=default |
| Default move assignment operator. More... | |
| const Resource & | get () const noexcept |
| Gets a reference to the managed resource. More... | |
| operator const Resource & () const noexcept | |
| Casts a handle and gets a reference to the managed resource. More... | |
| const Resource & | operator* () const noexcept |
| Dereferences a handle to obtain the managed resource. More... | |
| const Resource * | operator-> () const noexcept |
| Gets a pointer to the managed resource from a handle . More... | |
| + | ResourceHandle (const ResourceHandle &) ENTT_NOEXCEPT=default |
| Default copy constructor. | |
| + | ResourceHandle (ResourceHandle &&) ENTT_NOEXCEPT=default |
| Default move constructor. | |
| ResourceHandle & | operator= (const ResourceHandle &) ENTT_NOEXCEPT=default |
| Default copy assignment operator. More... | |
| ResourceHandle & | operator= (ResourceHandle &&) ENTT_NOEXCEPT=default |
| Default move assignment operator. More... | |
| const Resource & | get () const ENTT_NOEXCEPT |
| Gets a reference to the managed resource. More... | |
| operator const Resource & () const ENTT_NOEXCEPT | |
| Casts a handle and gets a reference to the managed resource. More... | |
| const Resource & | operator* () const ENTT_NOEXCEPT |
| Dereferences a handle to obtain the managed resource. More... | |
| const Resource * | operator-> () const ENTT_NOEXCEPT |
| Gets a pointer to the managed resource from a handle . More... | |
| operator bool () const | |
| Returns true if the handle contains a resource, false otherwise. | |
Definition at line 59 of file handle.hpp.
+Definition at line 60 of file handle.hpp.
- -Definition at line 72 of file handle.hpp.
+Definition at line 73 of file handle.hpp.
- -Definition at line 84 of file handle.hpp.
+Definition at line 85 of file handle.hpp.
- -nullptr if the handle contains no resource at all. Definition at line 97 of file handle.hpp.
+Definition at line 98 of file handle.hpp.
- -This is the complete list of members for entt::Scheduler< Delta >, including all inherited members.
Definition at line 44 of file scheduler.hpp.
+Definition at line 45 of file scheduler.hpp.
falseDefinition at line 300 of file scheduler.hpp.
+Definition at line 301 of file scheduler.hpp.
@@ -235,7 +235,7 @@ template<typename Proc , typename... Args>Definition at line 197 of file scheduler.hpp.
+Definition at line 198 of file scheduler.hpp.
@@ -294,7 +294,7 @@ template<typename Func >Definition at line 258 of file scheduler.hpp.
+Definition at line 259 of file scheduler.hpp.
@@ -326,12 +326,12 @@ template<typename Delta >Discards all scheduled processes.
Processes aren't aborted. They are discarded along with their children and never executed again.
-Definition at line 167 of file scheduler.hpp.
+Definition at line 168 of file scheduler.hpp.
- -Returns true if at least a process is currently scheduled.
Definition at line 157 of file scheduler.hpp.
+Definition at line 158 of file scheduler.hpp.
@@ -419,13 +419,13 @@ template<typename Delta >Default move assignament operator.
+Default move assignment operator.
Number of processes currently scheduled.
Definition at line 149 of file scheduler.hpp.
+Definition at line 150 of file scheduler.hpp.
- -Definition at line 274 of file scheduler.hpp.
+Definition at line 275 of file scheduler.hpp.
diff --git a/classentt_1_1SigH.html b/classentt_1_1SigH.html index 40f746ef0..35b127107 100644 --- a/classentt_1_1SigH.html +++ b/classentt_1_1SigH.html @@ -22,7 +22,7 @@#include <sigh.hpp>
Unmanaged signal handler declaration.
@@ -86,7 +86,7 @@ class entt::SigH< Function, Collector > - +This is the complete list of members for entt::SigH< Ret(Args...), Collector >, including all inherited members.
Friends | |||||||
-
|
- -inline | -
-
|
- -inline | -
Connects a member function for a given instance to a signal.
-The signal isn't responsible for the connected object. Users must guarantee that the lifetime of the instance overcomes the one of the signal. On the other side, the signal handler performs checks to avoid multiple connections for the same member function of a given instance.
-| Class | Type of class to which the member function belongs. |
| Member | Member function to connect to the signal. |
| instance | A valid instance of type pointer to Class. |
-
|
- -inline | -
-
|
- -inline | -
Disconnects the given member function from a signal.
-| Class | Type of class to which the member function belongs. |
| Member | Member function to connect to the signal. |
| instance | A valid instance of type pointer to Class. |
-
|
- -inline | -
Returns false if at least a listener is connected to the signal.
Definition at line 152 of file sigh.hpp.
+Definition at line 285 of file sigh.hpp.
- -Two signals are identical if they have the same size and the same listeners registered exactly in the same order.
| other | Signal with which to compare. |
| other | Signal with which to compare. |
Definition at line 280 of file sigh.hpp.
+Definition at line 352 of file sigh.hpp.
@@ -577,12 +340,46 @@ template<typename Ret , typename... Args, typename Collector > -Definition at line 235 of file sigh.hpp.
+Definition at line 309 of file sigh.hpp.
- -
+
|
+ +inline | +
Returns a sink object for the given signal.
+A sink is an opaque object used to connect listeners to signals.
+ The function type for a listener is the one of the signal to which it belongs. The order of invocation of the listeners isn't guaranteed.
Number of listeners connected to the signal.
Definition at line 144 of file sigh.hpp.
+Definition at line 277 of file sigh.hpp.
@@ -659,7 +456,7 @@ template<typename Ret , typename... Args, typename Collector > -Definition at line 266 of file sigh.hpp.
+Definition at line 338 of file sigh.hpp.
diff --git a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.md5 b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.md5 index e70a33aaa..6984d2f8c 100644 --- a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.md5 +++ b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.md5 @@ -1 +1 @@ -877dca154407d82e21a0b734e03b3666 \ No newline at end of file +5912f9063856265db81c2fd46ab86e10 \ No newline at end of file diff --git a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.png b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__coll__graph.png index 7b2c00964a5b78e98f44d73c6c7219445b23fbd9..b450694bb3139658b7ae539b0b0f1e22345bdf6c 100644 GIT binary patch literal 6315 zcmcgxhdY*U-@igON%qLdXxQD^J0r4w$d<}&ln|Mj8R!WM-3W$_Uxxws-d4M94_y z`}MrfaXioQ{sHgB<#OCO@AEvrpYt=mFj^YQWW)@_2!fEQ+)>bmXA#^XggEfkb(>TH z9{7*$Dk~tTXCKK`nGpy=_drEKPS@?@dctE}D*aKc{p~9fDE45UKGtu+Z^S=i(mI?3 zxY~RLTeAHK;sohXI1N{cnchDm6vW4jvf@)?DA4rskCapzuKE$1u9-4MAbxO(v1Ozm}oRtc~ giKBlLlr9C`692*{9UR?#ZbXm+XJv|){Nlr_f zTUrt+`Gq5!q6IDkE;V)a6{i *t5hed#UN1=8=GuGGFb=Ji` zsDhc7U3xOEcIT3Oih!8d$d4aCT3fG4OW$XuKoBM-re714OB)+CHbeRFc@6<)Cq?#` z(?SU!Zyr=3NrQcTZSC!I&qS>U2M1}Y_GZV9j<&m{rKLftXNt_RP)Um^9ge=KDH%VH zg;IqUv{0 yZgbd=zP=4!LF{Z`ufzuLJFC_wl-A}k+RWI zBMj~}KEA!(-H9S|NOjl*3D 0cN6*bVg4q@78+s-cPFX1_DY?08Fn0?9x-+<%5eePAx#D#2ii{CKTwGkB9=*N2 z)<05i2c t3Rzre2tzhn&jIotd1>3cg~?(v1XcyMDp_4}xg0rJiOq!4`IQ?>;3- zd$n19EwdfNM}{k$Z2(Po?~;5_RkT@gs>sM#fDs!B*dh5xM&jYTeD$iiD?x&pi3y~N z+nix5CN`D~jtv _2MH8gbhv{Y77QdLzgwV$$s zoCA_JGvlzkdJo_K bm&JKM7YL2PwpMXvorB$v}&N{j+*A`J}g@cm&GglPhY|z8 z;np*(@bj}UF+rsI?zqqvGihXK=(XJ`0?UJr5@bd*pW|IPLCtF! znVHxHN5P;BGJ2arr r&ajlp1o$eAAr(ES`L;6B2esPZU_jvjKI@>*J4gkcvqHu#s4 zE`Csza# m5SK14H{ho z1CfP&k)mPl+l$bi`IMgit+H}yVL?$r;d6F24l+AC3!$RtU0+{FNJ#uMvl|Qq?`w{C zwy-Q;N7iDQZuo3YzXV2bX@y4C353V_a-(UvG7_~-4P{^KocoIx&>*8Pz^7MhlNEpi zl9_4c>G>UcF>6uQxhAtCNh#f>*z}^JtziCYx4pFyfN+1NW<*2;KwxTs5Tg)hB8MPg zfxuNhUpQI*n@)=7--@=I{O+zM*J4@feW7Dw!V8V&kd*umjj`e37)Yg)N}mX&Pxj60 z-x%OWNKm9`EpKed{Q7nE>+a;aSXTR)DqJDwjz{V{dwb1|jgXDcsKiP97?@s&!TjZW z!L;?Tk!&LJAdr>J)Ko|4G{IK(Sr_wH@6XOO1nD^Nh|L|^lYMm#abIZr0BxzW9-Sd1 z@x;W$jt(^sk3$uisE=F6Wv@nFBwW3Iz5ep06eiJUtSA(f`UNtwrsifyk(Ct{LUg3k zN&LO9-KLE>C{4>9EvBly`1tsstzkV7NkK*{qVd|xd~X5M)Gce7!S&6=&ec_f;dZ^2 zj?PUKN}+#iYwM}-;cQbdY$s$Z5xem)Yh}qzukFQ7FrM%(-T-O9-B5uU!J{p&$IZRN zWgvf+HAO|e6BAN`f<<4yKL4`xfH?L;90hS8g1nFP8KWcy%GhoRzd}OG2SI3OYb(4I zI}aWh+6!Px0c=j<(AGIxO7a0s%Fxb&S3o~*=;udHi6&^k3M8cW?X0X^SNb?_-6{be z0m(BeI$HCY{`ii-jiF1R+yE$EUf%uZdS+&)& Yd8p0OZ6t-Bps4mP~bCNdyb#K0I&(j0N;@y_Pn{a_JL$WBA?}g zGY(Q{(H_O(b9B+najA>>rEGF`Hdyn_+}yY8KP-z3NN9M%tQE}6WO#Y=pe+T7L`LQm zBod}I>|9+`B*@Df(xdpwf&NhOg@=c+vGK^$(vT1`hR(Rw4kz{Lv|6{Lqaz4 u5#bDEEc|c^-R-QS$);G`mIr#nwl6v2iPF+N42%G(n&QI?KH(w zp;!_!vV|?Ty}dmrapvjS!{t44u@GG3O>po{At4hJ6OANksc W{`TRb^~Zr`{(qb;F1t!clG>IOjtST|Lw#dv24?dv}Wh01i^nF5EVrY Kg?#x3e*XjVo@THB literal 5010 zcmchbbyQSuw}1~NL-V6sTBH;ZK^h#SyGsU;?uJ1?U;ycE1d)&q2?^;AMGyf;Is^rz zQTo1o_n+@u-@5 >iXsGyb91HH#i^cL}8QaB1pAlFp|*u`d*)D zD+;N^UjCu4DuwC2CfkZbYYiBG&@3k|HV)yYmZd1h*DY##YU71jNL3*?Y0w`X+5^eL zyGZ%**mD #=tMWquH%( zh(pO6uJ^AEgBjw|Hw6V4>+9>SK85CjmVGcnCJDnC7p~&*Pqk!G*uuiX;J~7mjt*87 z{EefC?xd~ltVk@qi24lw5s!zbr}s{%@!2+^NGetHjgDdKKr=znd<)nEtwo_o~X z+S)TUML|qV{4y@i`h=E-hM9+lz{SO-wzgIV4#%$7U?*c?W`?Gxr)dN%v74N~-zw8B zZ(98EF=u~0!(7nnfv|A**cjpU#UaU;d&0t$tAh!Vjg7)5JKrN48Xky>i}%jWF^K#A z-kuIpQo lv UdH)7__pw`uJ%(Qa(9383t*an5e*5`o_l-{E*1xw;K7$ z=YMun_E!f}_V(NwFRRVko p7TExGiu6F)u7Ez n!C@?LcCw_R zq9Ue2$vbx IlH2Oom>A$^r-vIULqm!-gwPtg(GmYrETgTy zM!l9b>1AeSX5#Fu;g3vudU~aRfVKevohRnhl?%LheiBS0BO|qb` gyl1Gc3y?yuZ z`8Ev5vd++18Vs{OnqhVL<0BUzpS* X#!6vy^#14m$?I*aib5-^HrtfFk|761=Mpay#owL(aBRx_nzjG70zY<<;wkg07 ze1(Sv6;knjZsb8K -U6A>F zJHZ#0$6h (J`5me0xm?haH@3=qHiI3gEdk~8w~py{E+#g0hg^;HK{{7199 zgJa#_->$3zD{?TbpiY1=F0NZZ5OZ*7GuWDmgzxy6tJ7a+=J&fisr;(1Gs|u*nJre4 za`T-=M$n7v!;{~W=?6ZaovM7hZa nLf@lCbE!@~o3>d$@TxwN~RkeW)-(A0zpq2yR3BqSctjrR6p z$rWg>BGvZy_B3a2V3n9iDiLr}Ib($>qo+sd<8?+7dq*P=6&Z>9DfiK#zLjGP7B2D9 z)#bS{qmFH8Re5<&GKY$8x-bhT=Ph}8c^C M&P#7-B0N{S(FJD(s ze_s?AbMW% *DmV&U%z; z?t{P1Do2)G$? *trZ%e%Yd zv(LletUuqC6_%F5l9G}P>urd#v$J)ZwnU#gJM(F4Yu|UA=H2uA;9^zE%MbE7yuH0W zlqf{zg@*Jc1$5u@hbm6DPeYx{ych*FbwzAAoK@D(Pc)t1EE-U^YjN?m^wnRhgpNc; zS|C!t7uvs9bc}o+xqjT~^^?rf(h^~BkLT# ?iUh9L-q z92*;(nUyuvo}7YWs!GGz*?H*W$Nm=24d#^LTDu8W6bjYV*9W)G|FoK&m9^X#MUL-X zZrN-%@rHjDFI+B`Mj-UAH1Y@rob&HmiUtG;*^G4!r`*vpHpW*_P$*%{ACF8)ArB1= z)g5@#-p w0C7hXAS;r2s@pkgH;4k-1 zPV`IZMctSW->0QfLS3IfYtsLKAW+YMLAm+*M#jVtn3|d{ZEeMn-%)3llIn;-gv+ty z=H^oT5(~ ;k)9fwiC WnMJkgjYRRG=xOzFI1sl z)q}z#e;_vf30OD{^m%S>&KKL!+B&?nl c+a! C^ADB|t|Y+9096t%4MbPL`0A{O9)Vgz|Fk)U-5#EhRM|R9Z$r z@(223sMFGMfrj6^cMl+P6=-{DWo6&-){Ohw&_BSbed<<$Dxy%>Ya1Jnd8rCtzlH`A zZtqUG$I}VpfeHIay8fX`^6>wY9#ZU=u(!X=&-%*;&NuK->*Dx3{-z!J2Cf1QCjGUmXxI=zKK_ z?fv@71OC2@H!>okXMUa$lo1#{zTETY5}az;MMwJ6fM?4a8 >7&a#8CK?AV z^&)+!sCW_UBWa1s#V`T_Fh4!D7QIV9e|}r1AEN?>UvjjfO}=2jyXNr-gs@S}rqhT_ zb5_37oD7lyrhKxyNCK!nmLo#)T 5waW9i}5Cb` z-b*fAUO0|9K zZF{cP^mTKhka8Q$`AsMl6&1S *|SvVxpGw&;oQ-ZXO qlf~(*bq5{|Gt@1x=!7x~A=PwOLHSpWhaX9f3d(`o6r?NXpKR2A+m}>lUUT zA5c1yzJY-iz~Y;Z(ZfT~=3{p8bW^!155OKf2gmZadRs0Yp2uEZUKzqaa(F8j(6^p0 zx(|(y4}vEMwLzE2hWGE;9zLW3&oQ1IXdUCU8<7FHSgiC#;qNMWKLhbpR8@roxb*b) zPE1XqlGqeLA;8pmt8R@BN1>R(sQ}Jc8KdEE-`>%$GA@2dKRP~65)~CS+w9JUMx*aL zqaT!X0%NeV<6 diff --git a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.md5 b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.md5 index f3c5917a1..875b972b2 100644 --- a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.md5 +++ b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.md5 @@ -1 +1 @@ -25bf8ef3dadecae5ca8667d16dac3e4f \ No newline at end of file +10a9db26013b49724b6014469940db4c \ No newline at end of file diff --git a/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.png b/classentt_1_1SigH_3_01Ret_07Args_8_8_8_08_00_01Collector_01_4__inherit__graph.png index 7b2c00964a5b78e98f44d73c6c7219445b23fbd9..b450694bb3139658b7ae539b0b0f1e22345bdf6c 100644 GIT binary patch literal 6315 zcmcgxhdY*U-@igON%qLdXxQD^J0r4w$d<}&ln|Mj8R!WM-3W$_Uxxws-d4M94_y z`}MrfaXioQ{sHgB<#OCO@AEvrpYt=mFj^YQWW)@_2!fEQ+)>bmXA#^XggEfkb(>TH z9{7*$Dk~tTXCKK`nGpy=_drEKPS@?@dctE}D*aKc{p~9fDE45UKGtu+Z^S=i(mI?3 zxY~RLTeAHK;sohXI1N{cnchDm6vW4jvf@)?DA4rskCapzuKE$ g43q(b-wFW-~-|ITUO8HFJXVH9I}s*;N}I*2I`+QtnuB^zv$AMTNLL zk%^}4YgzUG+~1417#JB A_6RvlI5_7-WQ%o?LmDp1L4>=_!G9kg%%1Sv!D>W_c91<^Vi-Yi( ze50^sr6ANulzePwC+%}`R9joy+xt(k$HRwgA5^P+POHD2M`SfL-sR=xy?XU3Fi=rm z-j9?Z-E^s`v*Oz~JOYBWlC-q6?WOJ-=bto4a!t(?7K?>J#>XW&IM8S`o;^1_Cn}sL zCMJHr4V-RhkLC{w3Yv0yVTDKdE po&ClPz7hl5lS4T_B^fS>}8hm_wU0q#rX7PdE-ted>d}MiL zr7nJbV?$FzgGLh %fZEkh1i%FLOdKix$ob ;0p@&qpG}E`5g8=jAm;tLa`+R8%DN+x+Xf z6G?$8Lbtx}>e4`YEp;W_vKdS!gGr_v(lIl89qg?1^icS*a&mG~cB%#>6ZskPMdxH> z+|$#0#rnFk@(^>0yT?c<) |Kv$_RaI3& zf~mGP<$cbZ^bYEG+)9s?Vq#(tqy^pTGCDf?HYB8oCs1DQQhO9{gr%IKVn#{HEdhbB zh8eZ_YZ7(26%_|lCwpb_BKG+PMYEYn-r2dic!-m;GZCI&Q!s6sZEjxP*w|RFlc8a( zzyEDDH8oY$H fnO@DnW(O=Cb)1p zdBKhBBG21*?*Ix+QZI^&i+7IxZbvM~zzRF#MYezc9xO1kx3wih1cZdxBU;tf)vf)T zo0VYWQ3**&NwAj0#QVCs9Nh+_q@;Se2LEVlJD#2#!|4Bd%lB4#%kt-t>6w{}3=E^= z<45~ja~EWeHpk1Ko9{70aW7xyifC A *vM#gb+x{sq3Zkhp6kxe&Ww!lg@uK_zKGMzH4mQB(o!|9 zn-UV0)z#ju?>W7_y{W0G9mR#`YNzfr7bVtC)iW|M;NjFQcE*R+h zTuQ16mw^14C{ul#>^P1etDvAD6>(EvpU|~yXESVRA)LBvWR!YMK29Uk#>OTsm^yND za`O1_55GZSZDS*csHof7X^Ftj@tRhkgoLyciyrLk?j}fi433Ugl$6}tLwDgd4qf8F zE3-d@;)SxvOjdgxI=%UAdtQzr{7!mqZmzX*GZOM)F4|6DQt)2bo%C3KLd<`23E-E5 zDK0K VJcP0LH 4bx^YiD=9q}TX#>R}DZ?Mrsbvppq ziAq;<+F_WA?O5sYZh?k GV Ky`ubXe}Df$N#AU{fj=3eFb5~+ zL&F<4ZlD-1U#@=g<9aa#%lngGl^Y!$9Vf>dJ~f_yza%HuHaFuVwKLBEj@SnR;t~=y zrzakO*rN#55h^OGjwBf~CEOj|-Mu|k8`dkM?^ts8bv=)FhjR1_@`2K_vWm*eE)WsP zHRfOHdmBu!OhQcj_U+rA%niqP%odc77Vrp(`+xjcUtX?#lF<}hgbzfo>_1BAC+WGb zrKos*qQDoQM9XZ8?Xj`(7>oD*xu4#1&15^FD(dRIY;5N~-~=_)*(sU-# -9dV$1Pe69|>gmZJ8I;%Bu%KVPMuK?Y_c$); zq)^t^pFUYSJKq|t%FZS((Yt^D*ZO+ZgE~KE36}@#5d F{Q@k(qDkX)DA)5xHAak-mH}cg=tU%QJNVGH^DUk2ey-s~v z^HeiYQqIcO&24|Q#KzRr6o?cof&%~kZ{Nv8P(q7h2S-Qo=ZmD(^9Q>>J*CZV-@dI> zoZ!2!3w#NXO)de{n0f!@ObI5P>l4mJkcx_m%QD{MlatkOviv9(&hv+1PJhYrH~IVf zTkj2I>3Hm|JqA6=$?;f9a3yDve%r=mGd(*?$;b#A`_DfYW7WL3X3tx$)|?*mBgtRB zP@ZNsJP-iaVn0<4!rh4$>OJNG76XCH%F5!QxxvOJr>-8-zQ9iS{^Q5-si{zx$f&N4 zj^dIMYJP10#DuN2_42~PJ#B4ms1!A|B73;^!3uZrV1IvvQrayM5!n2Eqmt`DbF z-Br`qFU!a{|L>!GH=3`!vhoTcB?U#HIhNed!N%riVWB`hj{x1 *MINtgZf?RKV9e|K2L~4y7cDI 9G=5T!1rgfn(OJ&;*0*dw$@?!HA^=;Gjqu*$xHaxZ4x}c;b8+Fk3YXA z9O7TZ`yS>lia$%DMn6sFVpaIx`y`2Pd~QhWUBDFcEWdm_iKM8vr@BE*MR<5BbF3Y> zE&%K%XMrjAz`y`iO{?-nQdj3)Y436Ojl@*ue-LqTaXj@fq94z<7h*2Ns`;|=Z%j^5 zUrez!qq< AfsviDx@(#TE3_x+o;{&5q<$~3oRuG+b^ zr<~N(i0|v}g1YtLn6I+xzF0#;c4-#%3ocGh_w;WJvIO27y0!H^^-*COZu|AD&yum* zWufKy81C}& 1u9-4MAbxO(v1Ozm}oRtc~ giKBlLlr9C`692*{9UR?#ZbXm+XJv|){Nlr_f zTUrt+`Gq5!q6IDkE;V)a6{i *t5hed#UN1=8=GuGGFb=Ji` zsDhc7U3xOEcIT3Oih!8d$d4aCT3fG4OW$XuKoBM-re714OB)+CHbeRFc@6<)Cq?#` z(?SU!Zyr=3NrQcTZSC!I&qS>U2M1}Y_GZV9j<&m{rKLftXNt_RP)Um^9ge=KDH%VH zg;IqUv{0 yZgbd=zP=4!LF{Z`ufzuLJFC_wl-A}k+RWI zBMj~}KEA!(-H9S|NOjl*3D 0cN6*bVg4q@78+s-cPFX1_DY?08Fn0?9x-+<%5eePAx#D#2ii{CKTwGkB9=*N2 z)<05i2c t3Rzre2tzhn&jIotd1>3cg~?(v1XcyMDp_4}xg0rJiOq!4`IQ?>;3- zd$n19EwdfNM}{k$Z2(Po?~;5_RkT@gs>sM#fDs!B*dh5xM&jYTeD$iiD?x&pi3y~N z+nix5CN`D~jtv _2MH8gbhv{Y77QdLzgwV$$s zoCA_JGvlzkdJo_K bm&JKM7YL2PwpMXvorB$v}&N{j+*A`J}g@cm&GglPhY|z8 z;np*(@bj}UF+rsI?zqqvGihXK=(XJ`0?UJr5@bd*pW|IPLCtF! znVHxHN5P;BGJ2arr r&ajlp1o$eAAr(ES`L;6B2esPZU_jvjKI@>*J4gkcvqHu#s4 zE`Csza# m5SK14H{ho z1CfP&k)mPl+l$bi`IMgit+H}yVL?$r;d6F24l+AC3!$RtU0+{FNJ#uMvl|Qq?`w{C zwy-Q;N7iDQZuo3YzXV2bX@y4C353V_a-(UvG7_~-4P{^KocoIx&>*8Pz^7MhlNEpi zl9_4c>G>UcF>6uQxhAtCNh#f>*z}^JtziCYx4pFyfN+1NW<*2;KwxTs5Tg)hB8MPg zfxuNhUpQI*n@)=7--@=I{O+zM*J4@feW7Dw!V8V&kd*umjj`e37)Yg)N}mX&Pxj60 z-x%OWNKm9`EpKed{Q7nE>+a;aSXTR)DqJDwjz{V{dwb1|jgXDcsKiP97?@s&!TjZW z!L;?Tk!&LJAdr>J)Ko|4G{IK(Sr_wH@6XOO1nD^Nh|L|^lYMm#abIZr0BxzW9-Sd1 z@x;W$jt(^sk3$uisE=F6Wv@nFBwW3Iz5ep06eiJUtSA(f`UNtwrsifyk(Ct{LUg3k zN&LO9-KLE>C{4>9EvBly`1tsstzkV7NkK*{qVd|xd~X5M)Gce7!S&6=&ec_f;dZ^2 zj?PUKN}+#iYwM}-;cQbdY$s$Z5xem)Yh}qzukFQ7FrM%(-T-O9-B5uU!J{p&$IZRN zWgvf+HAO|e6BAN`f<<4yKL4`xfH?L;90hS8g1nFP8KWcy%GhoRzd}OG2SI3OYb(4I zI}aWh+6!Px0c=j<(AGIxO7a0s%Fxb&S3o~*=;udHi6&^k3M8cW?X0X^SNb?_-6{be z0m(BeI$HCY{`ii-jiF1R+yE$EUf%uZdS+&)& Yd8p0OZ6t-Bps4mP~bCNdyb#K0I&(j0N;@y_Pn{a_JL$WBA?}g zGY(Q{(H_O(b9B+najA>>rEGF`Hdyn_+}yY8KP-z3NN9M%tQE}6WO#Y=pe+T7L`LQm zBod}I>|9+`B*@Df(xdpwf&NhOg@=c+vGK^$(vT1`hR(Rw4kz{Lv|6{Lqaz4 u5#bDEEc|c^-R-QS$);G`mIr#nwl6v2iPF+N42%G(n&QI?KH(w zp;!_!vV|?Ty}dmrapvjS!{t44u@GG3O>po{At4hJ6OANksc W{`TRb^~Zr`{(qb;F1t!clG>IOjtST|Lw#dv24?dv}Wh01i^nF5EVrY Kg?#x3e*XjVo@THB literal 5010 zcmchbbyQSuw}1~NL-V6sTBH;ZK^h#SyGsU;?uJ1?U;ycE1d)&q2?^;AMGyf;Is^rz zQTo1o_n+@u-@5 >iXsGyb91HH#i^cL}8QaB1pAlFp|*u`d*)D zD+;N^UjCu4DuwC2CfkZbYYiBG&@3k|HV)yYmZd1h*DY##YU71jNL3*?Y0w`X+5^eL zyGZ%**mD #=tMWquH%( zh(pO6uJ^AEgBjw|Hw6V4>+9>SK85CjmVGcnCJDnC7p~&*Pqk!G*uuiX;J~7mjt*87 z{EefC?xd~ltVk@qi24lw5s!zbr}s{%@!2+^NGetHjgDdKKr=znd<)nEtwo_o~X z+S)TUML|qV{4y@i`h=E-hM9+lz{SO-wzgIV4#%$7U?*c?W`?Gxr)dN%v74N~-zw8B zZ(98EF=u~0!(7nnfv|A**cjpU#UaU;d&0t$tAh!Vjg7)5JKrN48Xky>i}%jWF^K#A z-kuIpQo lv UdH)7__pw`uJ%(Qa(9383t*an5e*5`o_l-{E*1xw;K7$ z=YMun_E!f}_V(NwFRRVko p7TExGiu6F)u7Ez n!C@?LcCw_R zq9Ue2$vbx IlH2Oom>A$^r-vIULqm!-gwPtg(GmYrETgTy zM!l9b>1AeSX5#Fu;g3vudU~aRfVKevohRnhl?%LheiBS0BO|qb` gyl1Gc3y?yuZ z`8Ev5vd++18Vs{OnqhVL<0BUzpS* X#!6vy^#14m$?I*aib5-^HrtfFk|761=Mpay#owL(aBRx_nzjG70zY<<;wkg07 ze1(Sv6;knjZsb8K -U6A>F zJHZ#0$6h (J`5me0xm?haH@3=qHiI3gEdk~8w~py{E+#g0hg^;HK{{7199 zgJa#_->$3zD{?TbpiY1=F0NZZ5OZ*7GuWDmgzxy6tJ7a+=J&fisr;(1Gs|u*nJre4 za`T-=M$n7v!;{~W=?6ZaovM7hZa nLf@lCbE!@~o3>d$@TxwN~RkeW)-(A0zpq2yR3BqSctjrR6p z$rWg>BGvZy_B3a2V3n9iDiLr}Ib($>qo+sd<8?+7dq*P=6&Z>9DfiK#zLjGP7B2D9 z)#bS{qmFH8Re5<&GKY$8x-bhT=Ph}8c^C M&P#7-B0N{S(FJD(s ze_s?AbMW% *DmV&U%z; z?t{P1Do2)G$? *trZ%e%Yd zv(LletUuqC6_%F5l9G}P>urd#v$J)ZwnU#gJM(F4Yu|UA=H2uA;9^zE%MbE7yuH0W zlqf{zg@*Jc1$5u@hbm6DPeYx{ych*FbwzAAoK@D(Pc)t1EE-U^YjN?m^wnRhgpNc; zS|C!t7uvs9bc}o+xqjT~^^?rf(h^~BkLT# ?iUh9L-q z92*;(nUyuvo}7YWs!GGz*?H*W$Nm=24d#^LTDu8W6bjYV*9W)G|FoK&m9^X#MUL-X zZrN-%@rHjDFI+B`Mj-UAH1Y@rob&HmiUtG;*^G4!r`*vpHpW*_P$*%{ACF8)ArB1= z)g5@#-p w0C7hXAS;r2s@pkgH;4k-1 zPV`IZMctSW->0QfLS3IfYtsLKAW+YMLAm+*M#jVtn3|d{ZEeMn-%)3llIn;-gv+ty z=H^oT5(~ ;k)9fwiC WnMJkgjYRRG=xOzFI1sl z)q}z#e;_vf30OD{^m%S>&KKL!+B&?nl c+a! C^ADB|t|Y+9096t%4MbPL`0A{O9)Vgz|Fk)U-5#EhRM|R9Z$r z@(223sMFGMfrj6^cMl+P6=-{DWo6&-){Ohw&_BSbed<<$Dxy%>Ya1Jnd8rCtzlH`A zZtqUG$I}VpfeHIay8fX`^6>wY9#ZU=u(!X=&-%*;&NuK->*Dx3{-z!J2Cf1QCjGUmXxI=zKK_ z?fv@71OC2@H!>okXMUa$lo1#{zTETY5}az;MMwJ6fM?4a8 >7&a#8CK?AV z^&)+!sCW_UBWa1s#V`T_Fh4!D7QIV9e|}r1AEN?>UvjjfO}=2jyXNr-gs@S}rqhT_ zb5_37oD7lyrhKxyNCK!nmLo#)T 5waW9i}5Cb` z-b*fAUO0|9K zZF{cP^mTKhka8Q$`AsMl6&1S *|SvVxpGw&;oQ-ZXO qlf~(*bq5{|Gt@1x=!7x~A=PwOLHSpWhaX9f3d(`o6r?NXpKR2A+m}>lUUT zA5c1yzJY-iz~Y;Z(ZfT~=3{p8bW^!155OKf2gmZadRs0Yp2uEZUKzqaa(F8j(6^p0 zx(|(y4}vEMwLzE2hWGE;9zLW3&oQ1IXdUCU8<7FHSgiC#;qNMWKLhbpR8@roxb*b) zPE1XqlGqeLA;8pmt8R@BN1>R(sQ}Jc8KdEE-`>%$GA@2dKRP~65)~CS+w9JUMx*aL zqaT!X0%NeV<6 diff --git a/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4-members.html b/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4-members.html deleted file mode 100644 index df33e1758..000000000 --- a/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - entt: Member List - - - - - - - - - ----- - - - - - - - -- -
-- - -- -entt - 2.5.0 ---- - -- -- - -----entt::Signal< void(Args...)> Member List- -- -This is the complete list of members for entt::Signal< void(Args...)>, including all inherited members.
--
- clear() noexcept entt::Signal< void(Args...)> inline - connect() entt::Signal< void(Args...)> inline - connect(instance_type< Class > instance) entt::Signal< void(Args...)> inline - disconnect() entt::Signal< void(Args...)> inline - disconnect(instance_type< Class > instance) entt::Signal< void(Args...)> inline - disconnect(instance_type< Class > instance) entt::Signal< void(Args...)> inline - empty() const noexcept entt::Signal< void(Args...)> inline - instance_type typedef entt::Signal< void(Args...)> - operator==(const Signal &other) const noexcept entt::Signal< void(Args...)> inline - publish(Args... args) entt::Signal< void(Args...)> inline - size() const noexcept entt::Signal< void(Args...)> inline - size_type typedef entt::Signal< void(Args...)> - swap(Signal &lhs, Signal &rhs) entt::Signal< void(Args...)> friend
-Generated by -- 1.8.13 - - - diff --git a/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4.html b/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4.html deleted file mode 100644 index 626f178ba..000000000 --- a/classentt_1_1Signal_3_01void_07Args_8_8_8_08_4.html +++ /dev/null @@ -1,606 +0,0 @@ - - - - - - - -
entt: entt::Signal< void(Args...)> Class Template Reference - - - - - - - - - ----- - - - - - - - -- -
-- - -- -entt - 2.5.0 ---- - -- -- - -- ----entt::Signal< void(Args...)> Class Template Referencefinal- -- -Managed signal handler definition. - More...
- --
#include <signal.hpp>-
- -Public Types
- -using size_type = std::size_t - Unsigned integer type. - - template<typename Class > - using instance_type = std::shared_ptr< Class > - Instance type when it comes to connecting member functions. More... - -
- -Public Member Functions
- size_type size () const noexcept - Number of listeners connected to the signal. More... - - bool empty () const noexcept - Returns false if at least a listener is connected to the signal. More... - - -void clear () noexcept - Disconnects all the listeners from a signal. - - template<void(*)(Args...) Function> - void connect () - Connects a free function to a signal. More... - - template<typename Class , void(Class::*)(Args...) Member> - void connect (instance_type< Class > instance) - Connects a member function for a given instance to a signal. More... - - template<void(*)(Args...) Function> - void disconnect () - Disconnects a free function from a signal. More... - - template<typename Class , void(Class::*)(Args...) Member> - void disconnect (instance_type< Class > instance) - Disconnects the given member function from a signal. More... - - template<typename Class > - void disconnect (instance_type< Class > instance) - Removes all existing connections for the given instance. More... - - void publish (Args... args) - Triggers a signal. More... - - bool operator== (const Signal &other) const noexcept - Checks if the contents of the two signals are identical. More... - -
-- -Friends
- void swap (Signal &lhs, Signal &rhs) - Swaps listeners between the two signals. More... - Detailed Description
-template<typename... Args>
- -
-class entt::Signal< void(Args...)>Managed signal handler definition.
-Managed signal handler. It works with weak pointers to classes and pointers to member functions as well as pointers to free functions. References are automatically removed when the instances to which they point are freed.
-This class can be used to create signals used later to notify a bunch of listeners.
-- -
- Template Parameters
- -
--
-- Args Types of arguments of a function type. Definition at line 39 of file signal.hpp.
-Member Typedef Documentation
- -◆ instance_type
- -----template<typename... Args>--template<typename Class >--
-- -using entt::Signal< void(Args...)>::instance_type = std::shared_ptr<Class> -- --Instance type when it comes to connecting member functions.
-- -
- Template Parameters
- -
--
-- Class Type of class to which the member function belongs. Definition at line 71 of file signal.hpp.
- -Member Function Documentation
- -◆ connect() [1/2]
- --- ---template<typename... Args>--template<void(*)(Args...) Function>--
-- -- --
-- -void entt::Signal< void(Args...)>::connect -( -) -- -inline -- --Connects a free function to a signal.
-The signal handler performs checks to avoid multiple connections for free functions.
-- -
- Template Parameters
- -
--
-- Function A valid free function pointer. Definition at line 105 of file signal.hpp.
- -◆ connect() [2/2]
- --- ---template<typename... Args>--template<typename Class , void(Class::*)(Args...) Member>--
-- -- --
-- -void entt::Signal< void(Args...)>::connect -( -instance_type< Class > -instance ) -- -inline -- --Connects a member function for a given instance to a signal.
-The signal handler performs checks to avoid multiple connections for the same member function of a given instance.
--
- Template Parameters
- -
--
-- Class Type of class to which the member function belongs. - Member Member function to connect to the signal. - -
- Parameters
- -
--
-- instance A valid instance of type pointer to Class.Definition at line 121 of file signal.hpp.
- -◆ disconnect() [1/3]
- --- ---template<typename... Args>--template<void(*)(Args...) Function>--
-- -- --
-- -void entt::Signal< void(Args...)>::disconnect -( -) -- -inline -- --Disconnects a free function from a signal.
-- -
- Template Parameters
- -
--
-- Function A valid free function pointer. Definition at line 131 of file signal.hpp.
- -◆ disconnect() [2/3]
- --- ---template<typename... Args>--template<typename Class , void(Class::*)(Args...) Member>--
-- -- --
-- -void entt::Signal< void(Args...)>::disconnect -( -instance_type< Class > -instance ) -- -inline -- --Disconnects the given member function from a signal.
--
- Template Parameters
- -
--
-- Class Type of class to which the member function belongs. - Member Member function to connect to the signal. - -
- Parameters
- -
--
-- instance A valid instance of type pointer to Class.Definition at line 144 of file signal.hpp.
- -◆ disconnect() [3/3]
- --- ---template<typename... Args>--template<typename Class >--
-- -- --
-- -void entt::Signal< void(Args...)>::disconnect -( -instance_type< Class > -instance ) -- -inline -- --Removes all existing connections for the given instance.
--
- Template Parameters
- -
--
-- Class Type of class to which the member function belongs. - -
- Parameters
- -
--
-- instance A valid instance of type pointer to Class.Definition at line 156 of file signal.hpp.
- -◆ empty()
- --- ---template<typename... Args>--
-- -- --
-- -bool entt::Signal< void(Args...)>::empty -( -) -const --inlinenoexcept -- --Returns false if at least a listener is connected to the signal.
-- -
- Returns
- True if the signal has no listeners connected, false otherwise.
Definition at line 85 of file signal.hpp.
- -◆ operator==()
- --- ---template<typename... Args>--
-- -- --
-- -bool entt::Signal< void(Args...)>::operator== -( -const Signal< void(Args...)> & -other ) -const --inlinenoexcept -- --Checks if the contents of the two signals are identical.
-Two signals are identical if they have the same size and the same listeners registered exactly in the same order.
--
- Parameters
- -
--
-- other Signal with which to compare. - -
- Returns
- True if the two signals are identical, false otherwise.
Definition at line 202 of file signal.hpp.
- -◆ publish()
- --- ---template<typename... Args>--
-- -- --
-- -void entt::Signal< void(Args...)>::publish -( -Args... -args ) -- -inline -- --Triggers a signal.
-All the listeners are notified. Order isn't guaranteed.
-- -
- Parameters
- -
--
-- args Arguments to use to invoke listeners. Definition at line 169 of file signal.hpp.
- -◆ size()
- -----template<typename... Args>--
-- -- --
-- -size_type entt::Signal< void(Args...)>::size -( -) -const --inlinenoexcept -- --Number of listeners connected to the signal.
-- -
- Returns
- Number of listeners currently connected.
Definition at line 77 of file signal.hpp.
- -Friends And Related Function Documentation
- -◆ swap
- -----template<typename... Args>--
-- -- --
-- -void swap -( -Signal< void(Args...)> & -lhs, -- -- - Signal< void(Args...)> & -rhs -- -- ) -- -friend -- --Swaps listeners between the two signals.
-- -
- Parameters
- -
--
-- lhs A valid signal object. - rhs A valid signal object. Definition at line 188 of file signal.hpp.
- -
The documentation for this class was generated from the following file:-
-- src/entt/signal/signal.hpp
-
-Generated by -- 1.8.13 - - - diff --git a/classentt_1_1Signal.html b/classentt_1_1Sink.html similarity index 73% rename from classentt_1_1Signal.html rename to classentt_1_1Sink.html index 106700dfe..6f27d7d78 100644 --- a/classentt_1_1Signal.html +++ b/classentt_1_1Sink.html @@ -5,7 +5,7 @@ -
entt: entt::Signal< typename > Class Template Reference +entt: entt::Sink< Function > Class Template Reference @@ -22,7 +22,7 @@@@ -59,29 +59,35 @@ $(function() { entt - 2.5.0 + 2.6.0-+entt::Signal< typename > Class Template Referenceentt::Sink< Function > Class Template Reference-Managed signal handler declaration. - More...
+Sink implementation. + More...
-+
#include <signal.hpp>
#include <sigh.hpp>Detailed Description
-diff --git a/classentt_1_1Bus_3_01Sig_00_01Event_01_4-members.html b/classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4-members.html similarity index 51% rename from classentt_1_1Bus_3_01Sig_00_01Event_01_4-members.html rename to classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4-members.html index 92c91a08a..38f087798 100644 --- a/classentt_1_1Bus_3_01Sig_00_01Event_01_4-members.html +++ b/classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4-members.html @@ -22,7 +22,7 @@template<typename>
+
-class entt::Signal< typename >template<typename Function>
-
+class entt::Sink< Function >Managed signal handler declaration.
-Primary template isn't defined on purpose. All the specializations give a compile-time error unless the template parameter is a function type.
+Sink implementation.
+Primary template isn't defined on purpose. All the specializations give a compile-time error unless the template parameter is a function type.
+-
- Template Parameters
- +
++
++ Function A valid function type. Definition at line 23 of file signal.hpp.
+
The documentation for this class was generated from the following file:-
- src/entt/signal/signal.hpp
+- src/entt/signal/sigh.hpp
@@ -59,25 +59,24 @@ $(function() { entt - 2.5.0 + 2.6.0-+entt::Bus< Sig, Event > Member Listentt::Sink< Ret(Args...)> Member List-This is the complete list of members for entt::Bus< Sig, Event >, including all inherited members.
+This is the complete list of members for entt::Sink< Ret(Args...)>, including all inherited members.
-
- connect() entt::Bus< Sig, Event > inline - disconnect() entt::Bus< Sig, Event > inline - empty() const noexcept entt::Bus< Sig, Event > inline - publish(Args &&... args) entt::Bus< Sig, Event > inline - reg(instance_type< Class > instance) entt::Bus< Sig, Event > inline - size() const noexcept entt::Bus< Sig, Event > inline - size_type typedef entt::Bus< Sig, Event > + unreg(instance_type< Class > instance) entt::Bus< Sig, Event > inline + connect() entt::Sink< Ret(Args...)> inline + connect(Class *instance) entt::Sink< Ret(Args...)> inline + disconnect() entt::Sink< Ret(Args...)> inline + disconnect(Class *instance) entt::Sink< Ret(Args...)> inline + disconnect(Class *instance) entt::Sink< Ret(Args...)> inline + disconnect() entt::Sink< Ret(Args...)> inline SigH class entt::Sink< Ret(Args...)> friend
diff --git a/classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4.html b/classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4.html new file mode 100644 index 000000000..42efd171d --- /dev/null +++ b/classentt_1_1Sink_3_01Ret_07Args_8_8_8_08_4.html @@ -0,0 +1,364 @@ + + + + + + + +entt: entt::Sink< Ret(Args...)> Class Template Reference + + + + + + + + + +++++ + + + + + + + ++ +
++ + ++ +entt + 2.6.0 ++++ + ++ ++ + ++ ++++entt::Sink< Ret(Args...)> Class Template Referencefinal+ ++ +Sink implementation. + More...
+ ++
#include <sigh.hpp>+
+ +Public Member Functions
+ template<Ret(*)(Args...) Function> + void connect () + Connects a free function to a signal. More... + + template<typename Class , Ret(Class::*)(Args...) Member = &Class::receive> + void connect (Class *instance) + Connects a member function for a given instance to a signal. More... + + template<Ret(*)(Args...) Function> + void disconnect () + Disconnects a free function from a signal. More... + + template<typename Class , Ret(Class::*)(Args...) Member> + void disconnect (Class *instance) + Disconnects the given member function from a signal. More... + + template<typename Class > + void disconnect (Class *instance) + Removes all existing connections for the given instance. More... + + +void disconnect () + Disconnects all the listeners from a signal. + +
++ +Friends
+ +template<typename , typename > + class SigH + A signal is allowed to create sinks. + Detailed Description
+template<typename Ret, typename... Args>
+ +
+class entt::Sink< Ret(Args...)>Sink implementation.
+A sink is an opaque object used to connect listeners to signals.
+
+ The function type for a listener is the one of the signal to which it belongs.The clear separation between a signal and a sink permits to store the former as private data member without exposing the publish functionality to the users of a class.
++ + +
- Template Parameters
- +
++
++ Ret Return type of a function type. + Args Types of arguments of a function type. Member Function Documentation
+ +◆ connect() [1/2]
+ +++ ++++template<typename Ret , typename... Args>++template<Ret(*)(Args...) Function>++
++ ++ ++
++ +void entt::Sink< Ret(Args...)>::connect +( +) ++ +inline +◆ connect() [2/2]
+ +++ +++template<typename Ret , typename... Args>++template<typename Class , Ret(Class::*)(Args...) Member = &Class::receive>++
++ ++ ++
++ +void entt::Sink< Ret(Args...)>::connect +( +Class * +instance ) ++ +inline ++ ++Connects a member function for a given instance to a signal.
+The signal isn't responsible for the connected object. Users must guarantee that the lifetime of the instance overcomes the one of the signal. On the other side, the signal handler performs checks to avoid multiple connections for the same member function of a given instance.
++
- Template Parameters
- +
++
++ Class Type of class to which the member function belongs. + Member Member function to connect to the signal. + + + +
- Parameters
- +
++
++ instance A valid instance of type pointer to Class.◆ disconnect() [1/3]
+ +++ ++++template<typename Ret , typename... Args>++template<Ret(*)(Args...) Function>++
++ ++ ++
++ +void entt::Sink< Ret(Args...)>::disconnect +( +) ++ +inline +◆ disconnect() [2/3]
+ +++ +++template<typename Ret , typename... Args>++template<typename Class , Ret(Class::*)(Args...) Member>++
++ ++ ++
++ +void entt::Sink< Ret(Args...)>::disconnect +( +Class * +instance ) ++ +inline ++ ++Disconnects the given member function from a signal.
++
- Template Parameters
- +
++
++ Class Type of class to which the member function belongs. + Member Member function to connect to the signal. + + + +
- Parameters
- +
++
++ instance A valid instance of type pointer to Class.◆ disconnect() [3/3]
+ ++++++template<typename Ret , typename... Args>++template<typename Class >++
++ ++ ++
++ +void entt::Sink< Ret(Args...)>::disconnect +( +Class * +instance ) ++ +inline +
The documentation for this class was generated from the following file:+
+- src/entt/signal/sigh.hpp
+
+Generated by ++ 1.8.13 + + + diff --git a/classentt_1_1Snapshot-members.html b/classentt_1_1Snapshot-members.html index 14f74d194..682414ded 100644 --- a/classentt_1_1Snapshot-members.html +++ b/classentt_1_1Snapshot-members.html @@ -22,7 +22,7 @@
@@ -70,11 +70,18 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::Snapshot< Entity >, including all inherited members.
-
- component(Archive &archive) && entt::Snapshot< Entity > inline - destroyed(Archive &archive) && entt::Snapshot< Entity > inline + entities(Archive &archive) && entt::Snapshot< Entity > inline + component(Archive &archive) entt::Snapshot< Entity > inline + component(Archive &archive) entt::Snapshot< Entity > inline + component(Archive &archive, It first, It last) entt::Snapshot< Entity > inline + destroyed(Archive &archive) entt::Snapshot< Entity > inline + entities(Archive &archive) entt::Snapshot< Entity > inline + operator=(const Snapshot &)=delete entt::Snapshot< Entity > operator=(Snapshot &&)=default entt::Snapshot< Entity > - Registry< Entity > class entt::Snapshot< Entity > friend + tag(Archive &archive) && entt::Snapshot< Entity > inline + Snapshot(const Snapshot &)=delete entt::Snapshot< Entity > + Snapshot(Snapshot &&)=default entt::Snapshot< Entity > + tag(Archive &archive) entt::Snapshot< Entity > inline tag(Archive &archive) entt::Snapshot< Entity > inline
diff --git a/classentt_1_1Snapshot.html b/classentt_1_1Snapshot.html index 6eeeba341..deea9392a 100644 --- a/classentt_1_1Snapshot.html +++ b/classentt_1_1Snapshot.html @@ -22,7 +22,7 @@@@ -79,22 +79,48 @@ $(function() { entt - 2.5.0 + 2.6.0
- Public Member Functions
- template<typename Archive > - Snapshot entities (Archive &archive) && - Puts aside all the entities that are still in use. More... - - template<typename Archive > - Snapshot destroyed (Archive &archive) && - Puts aside destroyed entities. More... - - template<typename... Component, typename Archive > - Snapshot component (Archive &archive) && - Puts aside the given components. More... - - template<typename... Tag, typename Archive > - Snapshot tag (Archive &archive) && - Puts aside the given tags. More... + + + Snapshot (const Snapshot &)=delete + Copying a snapshot isn't allowed. + + + Snapshot (Snapshot &&)=default + Default move constructor. + + Snapshot & operator= (const Snapshot &)=delete + Copying a snapshot isn't allowed. More... + + Snapshot & operator= (Snapshot &&)=default + Default move assignment operator. More... + + template<typename Archive > + Snapshot & entities (Archive &archive) + Puts aside all the entities that are still in use. More... + + template<typename Archive > + Snapshot & destroyed (Archive &archive) + Puts aside destroyed entities. More... + + template<typename Component , typename Archive > + Snapshot & component (Archive &archive) + Puts aside the given component. More... + + template<typename... Component, typename Archive > + std::enable_if_t<(sizeof...(Component) > 1), Snapshot & > component (Archive &archive) + Puts aside the given components. More... + + template<typename... Component, typename Archive , typename It > + Snapshot & component (Archive &archive, It first, It last) + Puts aside the given components for the entities in a range. More... + + template<typename Tag , typename Archive > + Snapshot & tag (Archive &archive) + Puts aside the given tag. More... + + template<typename... Tag, typename Archive > + std::enable_if_t<(sizeof...(Tag) > 1), Snapshot & > tag (Archive &archive) + Puts aside the given tags. More...
@@ -117,10 +143,59 @@ class entt::Snapshot< Entity > - Friends
Definition at line 36 of file snapshot.hpp.
+Definition at line 38 of file snapshot.hpp.
Member Function Documentation
- -◆ component()
+ +◆ component() [1/3]
+ +++ +++template<typename Entity >++template<typename Component , typename Archive >++
++ ++ ++
++ +Snapshot& entt::Snapshot< Entity >::component +( +Archive & +archive ) ++ +inline ++ ++Puts aside the given component.
+Each instance is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
++
- Template Parameters
- +
++
++ Component Type of component to serialize. + Archive Type of output archive. +
- Parameters
- +
++
++ archive A valid reference to an output archive. + +
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 144 of file snapshot.hpp.
+ +◆ component() [2/3]
@@ -133,11 +208,11 @@ template<typename... Component, typename Archive >@@ -148,7 +223,7 @@ template<typename... Component, typename Archive >
- Snapshot entt::Snapshot< Entity >::component +std::enable_if_t<(sizeof...(Component) > 1), Snapshot &> entt::Snapshot< Entity >::component ( Archive & archive ) -&& +Puts aside the given components.
-Each component is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
+Each instance is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
- Template Parameters
@@ -164,12 +239,80 @@ template<typename... Component, typename Archive > Component Types of components to serialize. -
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 142 of file snapshot.hpp.
+Definition at line 171 of file snapshot.hpp.
- -◆ destroyed()
+ +◆ component() [3/3]
+ +++ +++template<typename Entity >++template<typename... Component, typename Archive , typename It >++
++ ++ ++
++ +Snapshot& entt::Snapshot< Entity >::component +( +Archive & +archive, ++ ++ + It +first, ++ ++ + It +last ++ ++ ) ++ +inline ++ ++Puts aside the given components for the entities in a range.
+Each instance is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
++
- Template Parameters
- +
++
++ Component Types of components to serialize. + Archive Type of output archive. + It Type of input iterator. +
- Parameters
- +
++
++ archive A valid reference to an output archive. + first An iterator to the first element of the range to serialize. + last An iterator past the last element of the range to serialize. + +
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 193 of file snapshot.hpp.
+ +◆ destroyed()
@@ -182,11 +325,11 @@ template<typename Archive >@@ -212,12 +355,12 @@ template<typename Archive >
- Snapshot entt::Snapshot< Entity >::destroyed +Snapshot& entt::Snapshot< Entity >::destroyed ( Archive & archive ) -&& +-
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 114 of file snapshot.hpp.
+Definition at line 119 of file snapshot.hpp.
- -◆ entities()
+ +◆ entities()
@@ -230,11 +373,11 @@ template<typename Archive >@@ -260,12 +403,123 @@ template<typename Archive >
- Snapshot entt::Snapshot< Entity >::entities +Snapshot& entt::Snapshot< Entity >::entities ( Archive & archive ) -&& +-
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 97 of file snapshot.hpp.
+Definition at line 102 of file snapshot.hpp.
- -◆ tag()
+ +◆ operator=() [1/2]
+ +++ +++template<typename Entity >++
++ ++ ++
++ +Snapshot& entt::Snapshot< Entity >::operator= +( +const Snapshot< Entity > & +) ++ +delete ++ ++Copying a snapshot isn't allowed.
++ +
- Returns
- This snapshot.
◆ operator=() [2/2]
+ +++ +++template<typename Entity >++
++ ++ ++
++ +Snapshot& entt::Snapshot< Entity >::operator= +( +Snapshot< Entity > && +) ++ +default ++ ++Default move assignment operator.
++ +
- Returns
- This snapshot.
◆ tag() [1/2]
+ +++ +++template<typename Entity >++template<typename Tag , typename Archive >++
++ ++ ++
++ +Snapshot& entt::Snapshot< Entity >::tag +( +Archive & +archive ) ++ +inline ++ ++Puts aside the given tag.
+Each instance is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
++
- Template Parameters
- +
++
++ Tag Type of tag to serialize. + Archive Type of output archive. +
- Parameters
- +
++
++ archive A valid reference to an output archive. + +
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 210 of file snapshot.hpp.
+ +◆ tag() [2/2]
@@ -278,11 +532,11 @@ template<typename... Tag, typename Archive >@@ -293,7 +547,7 @@ template<typename... Tag, typename Archive >
- Snapshot entt::Snapshot< Entity >::tag +std::enable_if_t<(sizeof...(Tag) > 1), Snapshot &> entt::Snapshot< Entity >::tag ( Archive & archive ) -&& +Puts aside the given tags.
-Each tag is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
+Each instance is serialized together with the entity to which it belongs. Entities are serialized along with their versions.
- Template Parameters
@@ -309,7 +563,7 @@ template<typename... Tag, typename Archive > Tag Types of tags to serialize. -
- Returns
- An object of this type to continue creating the snapshot.
Definition at line 161 of file snapshot.hpp.
+Definition at line 236 of file snapshot.hpp.
diff --git a/classentt_1_1SnapshotLoader-members.html b/classentt_1_1SnapshotLoader-members.html index 19052ca49..570f88110 100644 --- a/classentt_1_1SnapshotLoader-members.html +++ b/classentt_1_1SnapshotLoader-members.html @@ -22,7 +22,7 @@@@ -70,12 +70,16 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::SnapshotLoader< Entity >, including all inherited members.
-
- component(Archive &archive) && entt::SnapshotLoader< Entity > inline - destroyed(Archive &archive) && entt::SnapshotLoader< Entity > inline - entities(Archive &archive) && entt::SnapshotLoader< Entity > inline + orphans() && entt::SnapshotLoader< Entity > inline + component(Archive &archive) entt::SnapshotLoader< Entity > inline + destroyed(Archive &archive) entt::SnapshotLoader< Entity > inline + entities(Archive &archive) entt::SnapshotLoader< Entity > inline + operator=(const SnapshotLoader &)=delete entt::SnapshotLoader< Entity > + operator=(SnapshotLoader &&)=default entt::SnapshotLoader< Entity > orphans() entt::SnapshotLoader< Entity > inline - Registry< Entity > class entt::SnapshotLoader< Entity > friend + tag(Archive &archive) && entt::SnapshotLoader< Entity > inline + SnapshotLoader(const SnapshotLoader &)=delete entt::SnapshotLoader< Entity > + SnapshotLoader(SnapshotLoader &&)=default entt::SnapshotLoader< Entity > tag(Archive &archive) entt::SnapshotLoader< Entity > inline
diff --git a/classentt_1_1SnapshotLoader.html b/classentt_1_1SnapshotLoader.html index 7e5d26fdd..db22b87bd 100644 --- a/classentt_1_1SnapshotLoader.html +++ b/classentt_1_1SnapshotLoader.html @@ -22,7 +22,7 @@@@ -79,25 +79,39 @@ $(function() { entt - 2.5.0 + 2.6.0
- Public Member Functions
- template<typename Archive > - SnapshotLoader entities (Archive &archive) && - Restores entities that were in use during serialization. More... - - template<typename Archive > - SnapshotLoader destroyed (Archive &archive) && - Restores entities that were destroyed during serialization. More... - - template<typename... Component, typename Archive > - SnapshotLoader component (Archive &archive) && - Restores components and assigns them to the right entities. More... - - template<typename... Tag, typename Archive > - SnapshotLoader tag (Archive &archive) && - Restores tags and assigns them to the right entities. More... - - SnapshotLoader orphans () && - Destroys those entities that have neither components nor tags. More... + + + SnapshotLoader (const SnapshotLoader &)=delete + Copying a snapshot loader isn't allowed. + + + SnapshotLoader (SnapshotLoader &&)=default + Default move constructor. + + SnapshotLoader & operator= (const SnapshotLoader &)=delete + Copying a snapshot loader isn't allowed. More... + + SnapshotLoader & operator= (SnapshotLoader &&)=default + Default move assignment operator. More... + + template<typename Archive > + SnapshotLoader & entities (Archive &archive) + Restores entities that were in use during serialization. More... + + template<typename Archive > + SnapshotLoader & destroyed (Archive &archive) + Restores entities that were destroyed during serialization. More... + + template<typename... Component, typename Archive > + SnapshotLoader & component (Archive &archive) + Restores components and assigns them to the right entities. More... + + template<typename... Tag, typename Archive > + SnapshotLoader & tag (Archive &archive) + Restores tags and assigns them to the right entities. More... + + SnapshotLoader & orphans () + Destroys those entities that have neither components nor tags. More... +
@@ -120,10 +134,10 @@ class entt::SnapshotLoader< Entity > - Friends
Definition at line 188 of file snapshot.hpp.
+Definition at line 261 of file snapshot.hpp.
Member Function Documentation
- -◆ component()
+ +◆ component()
@@ -136,11 +150,11 @@ template<typename... Component, typename Archive >@@ -167,12 +181,12 @@ template<typename... Component, typename Archive >
- SnapshotLoader entt::SnapshotLoader< Entity >::component +SnapshotLoader& entt::SnapshotLoader< Entity >::component ( Archive & archive ) -&& +-
- Returns
- A valid loader to continue restoring data.
Definition at line 294 of file snapshot.hpp.
+Definition at line 361 of file snapshot.hpp.
- -◆ destroyed()
+ +◆ destroyed()
@@ -185,11 +199,11 @@ template<typename Archive >@@ -215,12 +229,12 @@ template<typename Archive >
- SnapshotLoader entt::SnapshotLoader< Entity >::destroyed +SnapshotLoader& entt::SnapshotLoader< Entity >::destroyed ( Archive & archive ) -&& +-
- Returns
- A valid loader to continue restoring data.
Definition at line 271 of file snapshot.hpp.
+Definition at line 341 of file snapshot.hpp.
- -◆ entities()
+ +◆ entities()
@@ -233,11 +247,11 @@ template<typename Archive >@@ -263,12 +277,12 @@ template<typename Archive >
- SnapshotLoader entt::SnapshotLoader< Entity >::entities +SnapshotLoader& entt::SnapshotLoader< Entity >::entities ( Archive & archive ) -&& +-
- Returns
- A valid loader to continue restoring data.
Definition at line 251 of file snapshot.hpp.
+Definition at line 324 of file snapshot.hpp.
- -◆ orphans()
+ +◆ operator=() [1/2]
@@ -279,10 +293,72 @@ template<typename Entity >+ +
- +SnapshotLoader entt::SnapshotLoader< Entity >::orphans +SnapshotLoader& entt::SnapshotLoader< Entity >::operator= +( +const SnapshotLoader< Entity > & +) ++ +delete + ++ ++ + +Copying a snapshot loader isn't allowed.
++ +
- Returns
- This loader.
◆ operator=() [2/2]
+ +++ +++template<typename Entity >++
++ ++ ++
++ +SnapshotLoader& entt::SnapshotLoader< Entity >::operator= +( +SnapshotLoader< Entity > && +) ++ +default ++ ++Default move assignment operator.
++ +
- Returns
- This loader.
◆ orphans()
+ ++++template<typename Entity >++
+ + @@ -297,12 +373,12 @@ template<typename Entity > This functions helps to identify and destroy those entities.+
+ SnapshotLoader& entt::SnapshotLoader< Entity >::orphans ( ) -&& +-
- Returns
- A valid loader to continue restoring data.
Definition at line 333 of file snapshot.hpp.
+Definition at line 399 of file snapshot.hpp.
- -◆ tag()
+ +◆ tag()
@@ -315,11 +391,11 @@ template<typename... Tag, typename Archive >@@ -346,7 +422,7 @@ template<typename... Tag, typename Archive >
- SnapshotLoader entt::SnapshotLoader< Entity >::tag +SnapshotLoader& entt::SnapshotLoader< Entity >::tag ( Archive & archive ) -&& +-
- Returns
- A valid loader to continue restoring data.
Definition at line 315 of file snapshot.hpp.
+Definition at line 382 of file snapshot.hpp.
diff --git a/classentt_1_1SparseSet.html b/classentt_1_1SparseSet.html index a621f77ef..95213147b 100644 --- a/classentt_1_1SparseSet.html +++ b/classentt_1_1SparseSet.html @@ -22,7 +22,7 @@@@ -79,7 +79,7 @@ class entt::SparseSet<... > entt - 2.5.0 + 2.6.0Sparse set.
Primary template isn't defined on purpose. All the specializations give a compile-time error, but for a few reasonable cases.
-Definition at line 26 of file sparse_set.hpp.
+Definition at line 28 of file sparse_set.hpp.
The documentation for this class was generated from the following file:diff --git a/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4-members.html b/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4-members.html index e86801f34..fd84edd48 100644 --- a/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4-members.html +++ b/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4-members.html @@ -22,7 +22,7 @@
- src/entt/entity/sparse_set.hpp
@@ -70,40 +70,44 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::SparseSet< Entity, Type >, including all inherited members.
diff --git a/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4.html b/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4.html index 706e03fa2..e37b1920f 100644 --- a/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4.html +++ b/classentt_1_1SparseSet_3_01Entity_00_01Type_01_4.html @@ -22,7 +22,7 @@@@ -112,10 +112,14 @@ using entt - 2.5.0 + 2.6.0size_type = typename underlying_type::size_type Unsigned integer type. - - -using iterator_type = Iterator - Input iterator type. + + +using iterator_type = Iterator< false > + Input iterator type. + + +using const_iterator_type = Iterator< true > + Constant input iterator type. Public Types inherited from entt::SparseSet< Entity >
@@ -133,13 +137,17 @@ using using entity_type = Entity iterator_type = Iterator Input iterator type. + + +using const_iterator_type = Iterator + Constant input iterator type.
- Public Member Functions
- - SparseSet () noexcept=default - Default constructor. + + + SparseSet () ENTT_NOEXCEPT=default + Default constructor. SparseSet (const SparseSet &)=delete @@ -154,58 +162,73 @@ Public Member Functions Copying a sparse set isn't allowed. SparseSet & operator= (SparseSet &&)=default Default move assignment operator. More... - - void reserve (size_type cap) - Increases the capacity of a sparse set. More... - - const object_type * raw () const noexcept - Direct access to the array of objects. More... - - object_type * raw () noexcept - Direct access to the array of objects. More... - - iterator_type begin () noexcept - Returns an iterator to the beginning. More... - - iterator_type end () noexcept - Returns an iterator to the end. More... - - const object_type & get (entity_type entity) const noexcept - Returns the object associated to an entity. More... - - object_type & get (entity_type entity) noexcept - Returns the object associated to an entity. More... - - template<typename... Args> - std::enable_if_t< std::is_constructible< Type, Args... >::value, object_type & > construct (entity_type entity, Args &&... args) - Assigns an entity to a sparse set and constructs its object. More... - - template<typename... Args> - std::enable_if_t<!std::is_constructible< Type, Args... >::value, object_type & > construct (entity_type entity, Args &&... args) - Assigns an entity to a sparse set and constructs its object. More... - - void destroy (entity_type entity) override - Removes an entity from a sparse set and destroies its object. More... - - template<typename Compare > - void sort (Compare compare) - Sort components according to the given comparison function. More... - - void respect (const SparseSet< Entity > &other) noexcept - Sort components according to the order of the entities in another sparse set. More... + + void reserve (const size_type cap) + Increases the capacity of a sparse set. More... + + const object_type * raw () const ENTT_NOEXCEPT + Direct access to the array of objects. More... + + object_type * raw () ENTT_NOEXCEPT + Direct access to the array of objects. More... + + const_iterator_type cbegin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type begin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + iterator_type begin () ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type cend () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + const_iterator_type end () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + iterator_type end () ENTT_NOEXCEPT + Returns an iterator to the end. More... + + const object_type & get (const entity_type entity) const ENTT_NOEXCEPT + Returns the object associated to an entity. More... + + object_type & get (const entity_type entity) ENTT_NOEXCEPT + Returns the object associated to an entity. More... + + template<typename... Args> + std::enable_if_t< std::is_constructible< Type, Args... >::value, object_type & > construct (const entity_type entity, Args &&... args) + Assigns an entity to a sparse set and constructs its object. More... + + template<typename... Args> + std::enable_if_t<!std::is_constructible< Type, Args... >::value, object_type & > construct (const entity_type entity, Args &&... args) + Assigns an entity to a sparse set and constructs its object. More... + + void clone (const entity_type entity, const entity_type source) override + Assigns an entity to a sparse set by cloning another entity. More... + + void destroy (const entity_type entity) override + Removes an entity from a sparse set and destroies its object. More... + + template<typename Compare , typename Sort = StdSort> + void sort (Compare compare, Sort sort=Sort{}) + Sort components according to the given comparison function. More... + + void respect (const SparseSet< Entity > &other) ENTT_NOEXCEPT + Sort components according to the order of the entities in another sparse set. More... void reset () override Resets a sparse set. - Public Member Functions inherited from entt::SparseSet< Entity >
- - SparseSet () noexcept=default - Default constructor. - - -virtual ~SparseSet () noexcept=default - Default destructor. + + + SparseSet () ENTT_NOEXCEPT=default + Default constructor. + + +virtual ~SparseSet () ENTT_NOEXCEPT=default + Default destructor. SparseSet (const SparseSet &)=delete @@ -220,45 +243,57 @@ virtual Copying a sparse set isn't allowed. SparseSet & operator= (SparseSet &&)=default Default move assignment operator. More... - - void reserve (size_type cap) - Increases the capacity of a sparse set. More... - - size_type extent () const noexcept - Returns the extent of a sparse set. More... - - size_type size () const noexcept - Returns the number of elements in a sparse set. More... - - bool empty () const noexcept - Checks whether a sparse set is empty. More... - - const entity_type * data () const noexcept - Direct access to the internal packed array. More... - - iterator_type begin () const noexcept - Returns an iterator to the beginning. More... - - iterator_type end () const noexcept - Returns an iterator to the end. More... - - bool has (entity_type entity) const noexcept - Checks if a sparse set contains an entity. More... - - bool fast (entity_type entity) const noexcept - Checks if a sparse set contains an entity (unsafe). More... - - pos_type get (entity_type entity) const noexcept - Returns the position of an entity in a sparse set. More... - - void construct (entity_type entity) - Assigns an entity to a sparse set. More... - - void swap (pos_type lhs, pos_type rhs) noexcept - Swaps the position of two entities in the internal packed array. More... - - void respect (const SparseSet< Entity > &other) noexcept - Sort entities according to their order in another sparse set. More... + + void reserve (const size_type cap) + Increases the capacity of a sparse set. More... + + size_type extent () const ENTT_NOEXCEPT + Returns the extent of a sparse set. More... + + size_type size () const ENTT_NOEXCEPT + Returns the number of elements in a sparse set. More... + + bool empty () const ENTT_NOEXCEPT + Checks whether a sparse set is empty. More... + + const entity_type * data () const ENTT_NOEXCEPT + Direct access to the internal packed array. More... + + const_iterator_type cbegin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type begin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + iterator_type begin () ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type cend () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + const_iterator_type end () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + iterator_type end () ENTT_NOEXCEPT + Returns an iterator to the end. More... + + bool has (const entity_type entity) const ENTT_NOEXCEPT + Checks if a sparse set contains an entity. More... + + bool fast (const entity_type entity) const ENTT_NOEXCEPT + Checks if a sparse set contains an entity (unsafe). More... + + pos_type get (const entity_type entity) const ENTT_NOEXCEPT + Returns the position of an entity in a sparse set. More... + + void construct (const entity_type entity) + Assigns an entity to a sparse set. More... + + void swap (const pos_type lhs, const pos_type rhs) ENTT_NOEXCEPT + Swaps the position of two entities in the internal packed array. More... + + void respect (const SparseSet< Entity > &other) ENTT_NOEXCEPT + Sort entities according to their order in another sparse set. More... Detailed Description
template<typename Entity, typename Type>
@@ -278,10 +313,44 @@ Internal data structures arrange elements to maximize performance. Because of th -Definition at line 436 of file sparse_set.hpp.
+Definition at line 523 of file sparse_set.hpp.
Member Function Documentation
- -◆ begin()
+ +◆ begin() [1/2]
+ +++ +++template<typename Entity , typename Type >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity, Type >::begin +( +) +const ++inline ++ ++Returns an iterator to the beginning.
+The returned iterator points to the first instance of the given type. If the sparse set is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.+ +
- Returns
- An iterator to the first instance of the given type.
Definition at line 683 of file sparse_set.hpp.
+ +◆ begin() [2/2]
@@ -300,22 +369,143 @@ template<typename Entity , typename Type >-inlinenoexcept +inline- -Returns an iterator to the beginning.
-The returned iterator points to the first instance of the given type. If the sparse set is empty, the returned iterator will be equal to
+end().The returned iterator points to the first instance of the given type. If the sparse set is empty, the returned iterator will be equal to
end().
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.-
- Returns
- An iterator to the first instance of the given type.
Definition at line 577 of file sparse_set.hpp.
+Definition at line 699 of file sparse_set.hpp.
◆ construct() [1/2]
+ +◆ cbegin()
+ +++ +++template<typename Entity , typename Type >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity, Type >::cbegin +( +) +const ++inline ++ ++Returns an iterator to the beginning.
+The returned iterator points to the first instance of the given type. If the sparse set is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.+ +
- Returns
- An iterator to the first instance of the given type.
Definition at line 667 of file sparse_set.hpp.
+ +◆ cend()
+ +++ +++template<typename Entity , typename Type >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity, Type >::cend +( +) +const ++inline ++ ++Returns an iterator to the end.
+The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.+ +
- Returns
- An iterator to the element following the last instance of the given type.
Definition at line 717 of file sparse_set.hpp.
+ +◆ clone()
+ +++ +++template<typename Entity , typename Type >++
++ ++ ++
++ +void entt::SparseSet< Entity, Type >::clone +( +const entity_type +entity, ++ ++ + const entity_type +source ++ ++ ) ++ +inlineoverridevirtual ++ ++Assigns an entity to a sparse set by cloning another entity.
++
- Warning
- Attempting to clone an entity that doesn't belong to the sparse set or to assign an entity that already belongs to the sparse set results in undefined behavior.
+ An assertion will abort the execution at runtime in debug mode if the sparse set doesn't contain the entity to clone or if it already contains the given entity.+ +
- Parameters
- +
++
++ entity A valid entity identifier. + source A valid entity identifier from which to clone. Reimplemented from entt::SparseSet< Entity >.
+ +Definition at line 859 of file sparse_set.hpp.
+ +◆ construct() [1/2]
@@ -330,7 +520,7 @@ template<typename... Args>std::enable_if_t<std::is_constructible<Type, Args...>::value, object_type &> entt::SparseSet< Entity, Type >::construct ( -entity_type +const entity_type entity, @@ -372,12 +562,12 @@ template<typename... Args> -
- Returns
- The object associated to the entity.
Definition at line 653 of file sparse_set.hpp.
+Definition at line 811 of file sparse_set.hpp.
- -◆ construct() [2/2]
+ +◆ construct() [2/2]
@@ -392,7 +582,7 @@ template<typename... Args>std::enable_if_t<!std::is_constructible<Type, Args...>::value, object_type &> entt::SparseSet< Entity, Type >::construct ( -entity_type +const entity_type entity, @@ -434,12 +624,12 @@ template<typename... Args> -
- Returns
- The object associated to the entity.
Definition at line 681 of file sparse_set.hpp.
+Definition at line 839 of file sparse_set.hpp.
- -◆ destroy()
+ +◆ destroy()
-@@ -452,7 +642,7 @@ template<typename Entity , typename Type >@@ -474,14 +664,48 @@ template<typename Entity , typename Type > void entt::SparseSet< Entity, Type >::destroy ( -entity_type +const entity_type entity ) Reimplemented from entt::SparseSet< Entity >.
+Reimplemented from entt::SparseSet< Entity >.
-Definition at line 698 of file sparse_set.hpp.
+Definition at line 874 of file sparse_set.hpp.
- -◆ end()
+ +◆ end() [1/2]
+ +++ +++template<typename Entity , typename Type >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity, Type >::end +( +) +const ++inline ++ ++Returns an iterator to the end.
+The returned iterator points to the element following the last instance of the given type. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.+ +
- Returns
- An iterator to the element following the last instance of the given type.
Definition at line 735 of file sparse_set.hpp.
+ +◆ end() [2/2]
@@ -500,7 +724,7 @@ template<typename Entity , typename Type >-inlinenoexcept +inline@@ -510,12 +734,12 @@ template<typename Entity , typename Type >
- Note
- Input iterators stay true to the order imposed by a call to either
sortorrespect.-
- Returns
- An iterator to the element following the last instance of the given type.
Definition at line 595 of file sparse_set.hpp.
+Definition at line 753 of file sparse_set.hpp.
- -◆ get() [1/2]
+ +◆ get() [1/2]
@@ -528,14 +752,14 @@ template<typename Entity , typename Type >const object_type& entt::SparseSet< Entity, Type >::get ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -551,12 +775,12 @@ template<typename Entity , typename Type >-
- Returns
- The object associated to the entity.
Definition at line 611 of file sparse_set.hpp.
+Definition at line 769 of file sparse_set.hpp.
- -◆ get() [2/2]
+ +◆ get() [2/2]
@@ -569,14 +793,14 @@ template<typename Entity , typename Type >object_type& entt::SparseSet< Entity, Type >::get ( -entity_type +const entity_type entity ) -inlinenoexcept +inline@@ -592,7 +816,7 @@ template<typename Entity , typename Type >-
- Returns
- The object associated to the entity.
Definition at line 627 of file sparse_set.hpp.
+Definition at line 785 of file sparse_set.hpp.
@@ -658,8 +882,8 @@ template<typename Entity , typename Type > - -◆ raw() [1/2]
+ +◆ raw() [1/2]
@@ -678,22 +902,22 @@ template<typename Entity , typename Type >-inlinenoexcept +inline- -Direct access to the array of objects.
-The returned pointer is such that range
+[raw(), raw() + size()]is always a valid range, even if the container is empty.The returned pointer is such that range
[raw(), raw() + size()]is always a valid range, even if the container is empty.
- Note
- There are no guarantees on the order, even though either
sortorrespecthas been previously invoked. Internal data structures arrange elements to maximize performance. Accessing them directly gives a performance boost but less guarantees. Usebeginandendif you want to iterate the sparse set in the expected order.-
- Returns
- A pointer to the array of objects.
Definition at line 542 of file sparse_set.hpp.
+Definition at line 632 of file sparse_set.hpp.
◆ raw() [2/2]
+ +◆ raw() [2/2]
@@ -712,22 +936,22 @@ template<typename Entity , typename Type >-inlinenoexcept +inline- -Direct access to the array of objects.
-The returned pointer is such that range
+[raw(), raw() + size()]is always a valid range, even if the container is empty.The returned pointer is such that range
[raw(), raw() + size()]is always a valid range, even if the container is empty.
- Note
- There are no guarantees on the order, even though either
sortorrespecthas been previously invoked. Internal data structures arrange elements to maximize performance. Accessing them directly gives a performance boost but less guarantees. Usebeginandendif you want to iterate the sparse set in the expected order.-
- Returns
- A pointer to the array of objects.
Definition at line 561 of file sparse_set.hpp.
+Definition at line 651 of file sparse_set.hpp.
◆ reserve()
+ +◆ reserve()
-@@ -740,7 +964,7 @@ template<typename Entity , typename Type >@@ -761,12 +985,12 @@ template<typename Entity , typename Type > void entt::SparseSet< Entity, Type >::reserve ( -size_type +const size_type cap ) Definition at line 522 of file sparse_set.hpp.
+Definition at line 612 of file sparse_set.hpp.
- -◆ respect()
+ +◆ respect()
@@ -786,7 +1010,7 @@ template<typename Entity , typename Type >-inlinenoexcept +inline@@ -803,19 +1027,19 @@ template<typename Entity , typename Type >-Definition at line 778 of file sparse_set.hpp.
+Definition at line 970 of file sparse_set.hpp.
- -◆ sort()
+ +◆ sort()
template<typename Entity , typename Type >-template<typename Compare >+template<typename Compare , typename Sort = StdSort>@@ -838,21 +1072,31 @@ template<typename Compare >
+ @@ -824,8 +1048,18 @@ template<typename Compare > void entt::SparseSet< Entity, Type >::sort ( Compare -compare ) +compare, ++ ++ Sort +sort = +Sort{}+ + ) +Sort components according to the given comparison function.
Sort the elements so that iterating the sparse set with a couple of iterators returns them in the expected order. See
beginandendfor more details.The comparison function object must return
-trueif the first element is less than the second one,falseotherwise. The signature of the comparison function should be equivalent to the following:bool(const Type &, const Type &)+
- Note
- Attempting to iterate elements using a raw pointer returned by a call to either
dataorrawgives no guarantees on the order, even thoughsorthas been invoked.bool(const Type &, const Type &)Moreover, the comparison function object shall induce a strict weak ordering on the values.
+The sort function oject must offer a member function template
+operator()that accepts three arguments:+
+- An iterator to the first element of the range to sort.
+- An iterator past the last element of the range to sort.
+- A comparison function to use to compare the elements.
+The comparison funtion object received by the sort function object hasn't necessarily the type of the one passed along with the other parameters to this member function.
+
- Note
- Attempting to iterate elements using a raw pointer returned by a call to either
dataorrawgives no guarantees on the order, even thoughsorthas been invoked.
- Template Parameters
+ Compare Type of comparison function object. Sort Type of sort function object. -
- Parameters
+ compare A valid comparison function object. sort A valid sort function object. Definition at line 731 of file sparse_set.hpp.
+Definition at line 923 of file sparse_set.hpp.
diff --git a/classentt_1_1SparseSet_3_01Entity_01_4-members.html b/classentt_1_1SparseSet_3_01Entity_01_4-members.html index ec567e543..6d2eb92ba 100644 --- a/classentt_1_1SparseSet_3_01Entity_01_4-members.html +++ b/classentt_1_1SparseSet_3_01Entity_01_4-members.html @@ -22,7 +22,7 @@@@ -70,31 +70,37 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::SparseSet< Entity >, including all inherited members.
-
- begin() const noexcept entt::SparseSet< Entity > inline - construct(entity_type entity) entt::SparseSet< Entity > inline - data() const noexcept entt::SparseSet< Entity > inline - destroy(entity_type entity) entt::SparseSet< Entity > inlinevirtual - empty() const noexcept entt::SparseSet< Entity > inline + end() const noexcept entt::SparseSet< Entity > inline + begin() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + begin() ENTT_NOEXCEPT entt::SparseSet< Entity > inline + cbegin() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + cend() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + clone(const entity_type entity, const entity_type source) entt::SparseSet< Entity > inlinevirtual + const_iterator_type typedef entt::SparseSet< Entity > + construct(const entity_type entity) entt::SparseSet< Entity > inline + data() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + destroy(const entity_type entity) entt::SparseSet< Entity > inlinevirtual + empty() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + end() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline end() ENTT_NOEXCEPT entt::SparseSet< Entity > inline - entity_type typedef entt::SparseSet< Entity > - extent() const noexcept entt::SparseSet< Entity > inline - fast(entity_type entity) const noexcept entt::SparseSet< Entity > inline - get(entity_type entity) const noexcept entt::SparseSet< Entity > inline + has(entity_type entity) const noexcept entt::SparseSet< Entity > inline + extent() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + fast(const entity_type entity) const ENTT_NOEXCEPT entt::SparseSet< Entity > inline + get(const entity_type entity) const ENTT_NOEXCEPT entt::SparseSet< Entity > inline has(const entity_type entity) const ENTT_NOEXCEPT entt::SparseSet< Entity > inline iterator_type typedef entt::SparseSet< Entity > operator=(const SparseSet &)=delete entt::SparseSet< Entity > operator=(SparseSet &&)=default entt::SparseSet< Entity > - pos_type typedef entt::SparseSet< Entity > + reserve(size_type cap) entt::SparseSet< Entity > inline reserve(const size_type cap) entt::SparseSet< Entity > inline - reset() entt::SparseSet< Entity > inlinevirtual - respect(const SparseSet< Entity > &other) noexcept entt::SparseSet< Entity > inline + size() const noexcept entt::SparseSet< Entity > inline + respect(const SparseSet< Entity > &other) ENTT_NOEXCEPT entt::SparseSet< Entity > inline size() const ENTT_NOEXCEPT entt::SparseSet< Entity > inline - size_type typedef entt::SparseSet< Entity > + SparseSet() noexcept=default entt::SparseSet< Entity > SparseSet() ENTT_NOEXCEPT=default entt::SparseSet< Entity > SparseSet(const SparseSet &)=delete entt::SparseSet< Entity > - SparseSet(SparseSet &&)=default entt::SparseSet< Entity > - swap(pos_type lhs, pos_type rhs) noexcept entt::SparseSet< Entity > inline + ~SparseSet() noexcept=default entt::SparseSet< Entity > virtual + swap(const pos_type lhs, const pos_type rhs) ENTT_NOEXCEPT entt::SparseSet< Entity > inline ~SparseSet() ENTT_NOEXCEPT=default entt::SparseSet< Entity > virtual
diff --git a/classentt_1_1SparseSet_3_01Entity_01_4.html b/classentt_1_1SparseSet_3_01Entity_01_4.html index ba68c24c7..74e2fc6b5 100644 --- a/classentt_1_1SparseSet_3_01Entity_01_4.html +++ b/classentt_1_1SparseSet_3_01Entity_01_4.html @@ -22,7 +22,7 @@@@ -104,17 +104,21 @@ using entt - 2.5.0 + 2.6.0iterator_type = Iterator Input iterator type. + + +using const_iterator_type = Iterator + Constant input iterator type.
- Public Member Functions
- - SparseSet () noexcept=default - Default constructor. - - -virtual ~SparseSet () noexcept=default - Default destructor. + + + SparseSet () ENTT_NOEXCEPT=default + Default constructor. + + +virtual ~SparseSet () ENTT_NOEXCEPT=default + Default destructor. SparseSet (const SparseSet &)=delete @@ -129,48 +133,63 @@ virtual Copying a sparse set isn't allowed. SparseSet & operator= (SparseSet &&)=default Default move assignment operator. More... - - void reserve (size_type cap) - Increases the capacity of a sparse set. More... - - size_type extent () const noexcept - Returns the extent of a sparse set. More... - - size_type size () const noexcept - Returns the number of elements in a sparse set. More... - - bool empty () const noexcept - Checks whether a sparse set is empty. More... - - const entity_type * data () const noexcept - Direct access to the internal packed array. More... - - iterator_type begin () const noexcept - Returns an iterator to the beginning. More... - - iterator_type end () const noexcept - Returns an iterator to the end. More... - - bool has (entity_type entity) const noexcept - Checks if a sparse set contains an entity. More... - - bool fast (entity_type entity) const noexcept - Checks if a sparse set contains an entity (unsafe). More... - - pos_type get (entity_type entity) const noexcept - Returns the position of an entity in a sparse set. More... - - void construct (entity_type entity) - Assigns an entity to a sparse set. More... - - virtual void destroy (entity_type entity) - Removes an entity from a sparse set. More... - - void swap (pos_type lhs, pos_type rhs) noexcept - Swaps the position of two entities in the internal packed array. More... - - void respect (const SparseSet< Entity > &other) noexcept - Sort entities according to their order in another sparse set. More... + + void reserve (const size_type cap) + Increases the capacity of a sparse set. More... + + size_type extent () const ENTT_NOEXCEPT + Returns the extent of a sparse set. More... + + size_type size () const ENTT_NOEXCEPT + Returns the number of elements in a sparse set. More... + + bool empty () const ENTT_NOEXCEPT + Checks whether a sparse set is empty. More... + + const entity_type * data () const ENTT_NOEXCEPT + Direct access to the internal packed array. More... + + const_iterator_type cbegin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type begin () const ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + iterator_type begin () ENTT_NOEXCEPT + Returns an iterator to the beginning. More... + + const_iterator_type cend () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + const_iterator_type end () const ENTT_NOEXCEPT + Returns an iterator to the end. More... + + iterator_type end () ENTT_NOEXCEPT + Returns an iterator to the end. More... + + bool has (const entity_type entity) const ENTT_NOEXCEPT + Checks if a sparse set contains an entity. More... + + bool fast (const entity_type entity) const ENTT_NOEXCEPT + Checks if a sparse set contains an entity (unsafe). More... + + pos_type get (const entity_type entity) const ENTT_NOEXCEPT + Returns the position of an entity in a sparse set. More... + + void construct (const entity_type entity) + Assigns an entity to a sparse set. More... + + virtual void clone (const entity_type entity, const entity_type source) + Assigns an entity to a sparse set by cloning another entity. More... + + virtual void destroy (const entity_type entity) + Removes an entity from a sparse set. More... + + void swap (const pos_type lhs, const pos_type rhs) ENTT_NOEXCEPT + Swaps the position of two entities in the internal packed array. More... + + void respect (const SparseSet< Entity > &other) ENTT_NOEXCEPT + Sort entities according to their order in another sparse set. More... virtual void reset () @@ -195,10 +214,44 @@ Internal data structures arrange elements to maximize performance. Because of th - Resets a sparse set. Definition at line 57 of file sparse_set.hpp.
+Definition at line 59 of file sparse_set.hpp.
Member Function Documentation
- -◆ begin()
+ +◆ begin() [1/2]
+ +++ +++template<typename Entity >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity >::begin +( +) +const ++inline ++ ++Returns an iterator to the beginning.
+The returned iterator points to the first entity of the internal packed array. If the sparse set is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed by a call to
respect.+ +
- Returns
- An iterator to the first entity of the internal packed array.
Definition at line 233 of file sparse_set.hpp.
+ +◆ begin() [2/2]
@@ -212,27 +265,148 @@ template<typename Entity >iterator_type entt::SparseSet< Entity >::begin ( ) -const +-inlinenoexcept +inline- -Returns an iterator to the beginning.
-The returned iterator points to the first entity of the internal packed array. If the sparse set is empty, the returned iterator will be equal to
+end().The returned iterator points to the first entity of the internal packed array. If the sparse set is empty, the returned iterator will be equal to
end().
- Note
- Input iterators stay true to the order imposed by a call to
respect.-
- Returns
- An iterator to the first entity of the internal packed array.
Definition at line 213 of file sparse_set.hpp.
+Definition at line 249 of file sparse_set.hpp.
◆ construct()
+ +◆ cbegin()
+ +++ +++template<typename Entity >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity >::cbegin +( +) +const ++inline ++ ++Returns an iterator to the beginning.
+The returned iterator points to the first entity of the internal packed array. If the sparse set is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed by a call to
respect.+ +
- Returns
- An iterator to the first entity of the internal packed array.
Definition at line 217 of file sparse_set.hpp.
+ +◆ cend()
+ +++ +++template<typename Entity >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity >::cend +( +) +const ++inline ++ ++Returns an iterator to the end.
+The returned iterator points to the element following the last entity in the internal packed array. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed by a call to
respect.+ +
- Returns
- An iterator to the element following the last entity of the internal packed array.
Definition at line 266 of file sparse_set.hpp.
+ +◆ clone()
+ +++ +++template<typename Entity >++
++ ++ ++
++ +virtual void entt::SparseSet< Entity >::clone +( +const entity_type +entity, ++ ++ + const entity_type +source ++ ++ ) ++ +inlinevirtual ++ ++Assigns an entity to a sparse set by cloning another entity.
++
- Warning
- Attempting to clone an entity that doesn't belong to the sparse set or to assign an entity that already belongs to the sparse set results in undefined behavior.
+ An assertion will abort the execution at runtime in debug mode if the sparse set doesn't contain the entity to clone or if it already contains the given entity.+ +
- Parameters
- +
++
++ entity A valid entity identifier. + source A valid entity identifier from which to clone. Reimplemented in entt::SparseSet< Entity, Type >.
+ +Definition at line 394 of file sparse_set.hpp.
+ +◆ construct()
-@@ -245,7 +419,7 @@ template<typename Entity >@@ -267,12 +441,12 @@ template<typename Entity > void entt::SparseSet< Entity >::construct ( -entity_type +const entity_type entity ) Definition at line 299 of file sparse_set.hpp.
+Definition at line 367 of file sparse_set.hpp.
- -◆ data()
+ +◆ data()
@@ -291,22 +465,22 @@ template<typename Entity >-inlinenoexcept +inline- -Direct access to the internal packed array.
-The returned pointer is such that range
+[data(), data() + size()]is always a valid range, even if the container is empty.The returned pointer is such that range
[data(), data() + size()]is always a valid range, even if the container is empty.
- Note
- There are no guarantees on the order, even though
respecthas been previously invoked. Internal data structures arrange elements to maximize performance. Accessing them directly gives a performance boost but less guarantees. Usebeginandendif you want to iterate the sparse set in the expected order.-
- Returns
- A pointer to the internal packed array.
Definition at line 197 of file sparse_set.hpp.
+Definition at line 201 of file sparse_set.hpp.
◆ destroy()
+ +◆ destroy()
-@@ -319,7 +493,7 @@ template<typename Entity >@@ -341,14 +515,14 @@ template<typename Entity > virtual void entt::SparseSet< Entity >::destroy ( -entity_type +const entity_type entity ) Reimplemented in entt::SparseSet< Entity, Type >.
+Reimplemented in entt::SparseSet< Entity, Type >.
-Definition at line 324 of file sparse_set.hpp.
+Definition at line 413 of file sparse_set.hpp.
- -◆ empty()
+ +◆ empty()
@@ -367,7 +541,7 @@ template<typename Entity >-inlinenoexcept +inline@@ -375,12 +549,46 @@ template<typename Entity >Checks whether a sparse set is empty.
-
- Returns
- True if the sparse set is empty, false otherwise.
Definition at line 178 of file sparse_set.hpp.
+Definition at line 182 of file sparse_set.hpp.
- -◆ end()
+ +◆ end() [1/2]
+ +++ +++template<typename Entity >++
++ ++ ++
++ +const_iterator_type entt::SparseSet< Entity >::end +( +) +const ++inline ++ ++Returns an iterator to the end.
+The returned iterator points to the element following the last entity in the internal packed array. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed by a call to
respect.+ +
- Returns
- An iterator to the element following the last entity of the internal packed array.
Definition at line 283 of file sparse_set.hpp.
+ +◆ end() [2/2]
@@ -394,12 +602,12 @@ template<typename Entity >iterator_type entt::SparseSet< Entity >::end ( ) -const +-inlinenoexcept +inline@@ -409,12 +617,12 @@ template<typename Entity >
- Note
- Input iterators stay true to the order imposed by a call to
respect.-
- Returns
- An iterator to the element following the last entity of the internal packed array.
Definition at line 230 of file sparse_set.hpp.
+Definition at line 300 of file sparse_set.hpp.
- -◆ extent()
+ +◆ extent()
@@ -433,7 +641,7 @@ template<typename Entity >-inlinenoexcept +inline@@ -442,12 +650,12 @@ template<typename Entity >The extent of a sparse set is also the size of the internal sparse array. There is no guarantee that the internal packed array has the same size. Usually the size of the internal sparse array is equal or greater than the one of the internal packed array.
-
- Returns
- Extent of the sparse set.
Definition at line 156 of file sparse_set.hpp.
+Definition at line 160 of file sparse_set.hpp.
- -◆ fast()
+ +◆ fast()
@@ -460,14 +668,14 @@ template<typename Entity >bool entt::SparseSet< Entity >::fast ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -485,12 +693,12 @@ template<typename Entity >-
- Returns
- True if the sparse set contains the entity, false otherwise.
Definition at line 262 of file sparse_set.hpp.
+Definition at line 332 of file sparse_set.hpp.
- -◆ get()
+ +◆ get()
@@ -503,14 +711,14 @@ template<typename Entity >pos_type entt::SparseSet< Entity >::get ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -526,12 +734,12 @@ template<typename Entity >-
- Returns
- The position of the entity in the sparse set.
Definition at line 281 of file sparse_set.hpp.
+Definition at line 351 of file sparse_set.hpp.
- -◆ has()
+ +◆ has()
@@ -544,14 +752,14 @@ template<typename Entity >bool entt::SparseSet< Entity >::has ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -565,7 +773,7 @@ template<typename Entity >-
- Returns
- True if the sparse set contains the entity, false otherwise.
Definition at line 239 of file sparse_set.hpp.
+Definition at line 309 of file sparse_set.hpp.
@@ -631,8 +839,8 @@ template<typename Entity > - -◆ reserve()
+ +◆ reserve()
-@@ -645,7 +853,7 @@ template<typename Entity >@@ -666,12 +874,12 @@ template<typename Entity > void entt::SparseSet< Entity >::reserve ( -size_type +const size_type cap ) Definition at line 142 of file sparse_set.hpp.
+Definition at line 146 of file sparse_set.hpp.
- -◆ respect()
+ +◆ respect()
@@ -691,7 +899,7 @@ template<typename Entity >-inlinenoexcept +inline@@ -708,12 +916,12 @@ template<typename Entity >-Definition at line 380 of file sparse_set.hpp.
+Definition at line 467 of file sparse_set.hpp.
- -◆ size()
+ +◆ size()
@@ -732,7 +940,7 @@ template<typename Entity >-inlinenoexcept +inline@@ -741,12 +949,12 @@ template<typename Entity >The number of elements is also the size of the internal packed array. There is no guarantee that the internal sparse array has the same size. Usually the size of the internal sparse array is equal or greater than the one of the internal packed array.
-
- Returns
- Number of elements.
Definition at line 170 of file sparse_set.hpp.
+Definition at line 174 of file sparse_set.hpp.
- -◆ swap()
+ +◆ swap()
@@ -759,13 +967,13 @@ template<typename Entity >void entt::SparseSet< Entity >::swap ( -pos_type +const pos_type lhs, - pos_type +const pos_type rhs @@ -776,7 +984,7 @@ template<typename Entity > -inlinenoexcept +inline@@ -793,7 +1001,7 @@ template<typename Entity >-Definition at line 352 of file sparse_set.hpp.
+Definition at line 439 of file sparse_set.hpp.
diff --git a/classentt_1_1View-members.html b/classentt_1_1View-members.html index eeadfec4d..15e5857f9 100644 --- a/classentt_1_1View-members.html +++ b/classentt_1_1View-members.html @@ -22,7 +22,7 @@@@ -70,21 +70,26 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::View< Entity, Component >, including all inherited members.
diff --git a/classentt_1_1View.html b/classentt_1_1View.html index e54f47dc8..261910eb5 100644 --- a/classentt_1_1View.html +++ b/classentt_1_1View.html @@ -22,7 +22,7 @@@@ -85,6 +85,10 @@ Public Types using entt - 2.5.0 + 2.6.0iterator_type = Iterator Input iterator type. + + +using const_iterator_type = Iterator + Constant input iterator type. using entity_type = typename view_type::entity_type @@ -96,34 +100,49 @@ using Underlying entity identifier. - Public Member Functions
- size_type size () const noexcept - Estimates the number of entities that have the given components. More... - - iterator_type begin () const noexcept - Returns an iterator to the first entity that has the given components. More... - - iterator_type end () const noexcept - Returns an iterator that is past the last entity that has the given components. More... - - bool contains (entity_type entity) const noexcept - Checks if a view contains an entity. More... - - template<typename Comp > - const Comp & get (entity_type entity) const noexcept - Returns the component assigned to the given entity. More... - - template<typename Comp > - Comp & get (entity_type entity) noexcept - Returns the component assigned to the given entity. More... - - template<typename... Comp> - std::enable_if_t<(sizeof...(Comp) > 1), std::tuple< const Comp &... > > get (entity_type entity) const noexcept - Returns the components assigned to the given entity. More... - - template<typename... Comp> - std::enable_if_t<(sizeof...(Comp) > 1), std::tuple< Comp &... > > get (entity_type entity) noexcept - Returns the components assigned to the given entity. More... + + size_type size () const ENTT_NOEXCEPT + Estimates the number of entities that have the given components. More... + + bool empty () const ENTT_NOEXCEPT + Checks if the view is definitely empty. More... + + const_iterator_type cbegin () const ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given components. More... + + const_iterator_type begin () const ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given components. More... + + iterator_type begin () ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given components. More... + + const_iterator_type cend () const ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given components. More... + + const_iterator_type end () const ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given components. More... + + iterator_type end () ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given components. More... + + bool contains (const entity_type entity) const ENTT_NOEXCEPT + Checks if a view contains an entity. More... + + template<typename Comp > + const Comp & get (const entity_type entity) const ENTT_NOEXCEPT + Returns the component assigned to the given entity. More... + + template<typename Comp > + Comp & get (const entity_type entity) ENTT_NOEXCEPT + Returns the component assigned to the given entity. More... + + template<typename... Comp> + std::enable_if_t<(sizeof...(Comp) > 1), std::tuple< const Comp &... > > get (const entity_type entity) const ENTT_NOEXCEPT + Returns the components assigned to the given entity. More... + + template<typename... Comp> + std::enable_if_t<(sizeof...(Comp) > 1), std::tuple< Comp &... > > get (const entity_type entity) ENTT_NOEXCEPT + Returns the components assigned to the given entity. More... template<typename Func > void each (Func func) const @@ -132,9 +151,6 @@ Public Member Functions Iterates entities and components and applies the given function object to them. More... void each (Func func) Iterates entities and components and applies the given function object to them. More... - - void reset () - Resets the view and reinitializes it. More...
@@ -149,7 +165,7 @@ class entt::View< Entity, Component > Friends
Multi component view.
Multi component views iterate over those entities that have at least all the given components in their bags. During initialization, a multi component view looks at the number of entities available for each component and picks up a reference to the smallest set of candidate entities in order to get a performance boost when iterate.
+ Order of elements during iterations are highly dependent on the order of the underlying data structures. See SparseSet and its specializations for more details.
- Order of elements during iterations are highly dependent on the order of the underlying data strctures. See SparseSet and its specializations for more details.Important
Iterators aren't invalidated if:
@@ -172,10 +188,44 @@ class entt::View< Entity, Component > -
Definition at line 368 of file view.hpp.
+Definition at line 453 of file view.hpp.
Member Function Documentation
- -◆ begin()
+ +◆ begin() [1/2]
+ +++ +++template<typename Entity , typename... Component>++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::begin +( +) +const ++inline ++ ++Returns an iterator to the first entity that has the given components.
+The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the first entity that has the given components.
◆ begin() [2/2]
@@ -189,27 +239,95 @@ template<typename Entity , typename... Component>iterator_type entt::View< Entity, Component >::begin ( ) -const +-inlinenoexcept +inline- -Returns an iterator to the first entity that has the given components.
-The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to
+end().The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to
end().
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
- +
- Returns
- An iterator to the first entity that has the given components.
◆ contains()
+ +◆ cbegin()
+ +++ +++template<typename Entity , typename... Component>++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::cbegin +( +) +const ++inline ++ ++Returns an iterator to the first entity that has the given components.
+The returned iterator points to the first entity that has the given components. If the view is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the first entity that has the given components.
◆ cend()
+ +++ +++template<typename Entity , typename... Component>++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::cend +( +) +const ++inline ++ ++Returns an iterator that is past the last entity that has the given components.
+The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the entity following the last entity that has the given components.
◆ contains()
@@ -222,14 +340,14 @@ template<typename Entity , typename... Component>bool entt::View< Entity, Component >::contains ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -243,7 +361,7 @@ template<typename Entity , typename... Component>-
- Returns
- True if the view contains the given entity, false otherwise.
Definition at line 518 of file view.hpp.
+Definition at line 754 of file view.hpp.
@@ -278,7 +396,7 @@ template<typename Func >Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a set of const references to all the components of the view.
-
The signature of the function should be equivalent to the following:void(entity_type, const Component &...);
- Template Parameters
- +
-
- Template Parameters
@@ -291,7 +409,7 @@ template<typename Func >
Func Type of the function object to invoke. Definition at line 640 of file view.hpp.
+Definition at line 869 of file view.hpp.
@@ -326,7 +444,7 @@ template<typename Func >Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a set of references to all the components of the view.
-
The signature of the function should be equivalent to the following:void(entity_type, Component &...);
- Template Parameters
- +
void(const entity_type, Component &...);-
- Template Parameters
@@ -339,12 +457,78 @@ template<typename Func >
Func Type of the function object to invoke. Definition at line 675 of file view.hpp.
+Definition at line 893 of file view.hpp.
- -◆ end()
+ +◆ empty()
+ +++ ++++template<typename Entity , typename... Component>++
++ ++ ++
++ +bool entt::View< Entity, Component >::empty +( +) +const ++inline +◆ end() [1/2]
+ +++ +++template<typename Entity , typename... Component>++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::end +( +) +const ++inline ++ ++Returns an iterator that is past the last entity that has the given components.
+The returned iterator points to the entity following the last entity that has the given components. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the entity following the last entity that has the given components.
◆ end() [2/2]
@@ -358,12 +542,12 @@ template<typename Entity , typename... Component>iterator_type entt::View< Entity, Component >::end ( ) -const +-inlinenoexcept +inline@@ -373,12 +557,12 @@ template<typename Entity , typename... Component>
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
-
- Returns
- An iterator to the entity following the last entity that has the given components.
Definition at line 508 of file view.hpp.
+Definition at line 745 of file view.hpp.
- -◆ get() [1/4]
+ +◆ get() [1/4]
@@ -393,20 +577,20 @@ template<typename Comp >const Comp& entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) const -inlinenoexcept +inlineReturns the component assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use an invalid component type results in a compilation error. Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Template Parameters
- @@ -423,12 +607,12 @@ template<typename Comp >
-
- Returns
- The component assigned to the entity.
Definition at line 548 of file view.hpp.
+Definition at line 777 of file view.hpp.
- -◆ get() [2/4]
+ +◆ get() [2/4]
@@ -443,20 +627,20 @@ template<typename Comp >Comp& entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) -inlinenoexcept +inlineReturns the component assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use an invalid component type results in a compilation error. Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Template Parameters
- @@ -473,12 +657,12 @@ template<typename Comp >
-
- Returns
- The component assigned to the entity.
Definition at line 571 of file view.hpp.
+Definition at line 800 of file view.hpp.
- -◆ get() [3/4]
+ +◆ get() [3/4]
@@ -493,20 +677,20 @@ template<typename... Comp>std::enable_if_t<(sizeof...(Comp) > 1), std::tuple<const Comp &...> > entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) const -inlinenoexcept +inlineReturns the components assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use invalid component types results in a compilation error. Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Template Parameters
- @@ -523,12 +707,12 @@ template<typename... Comp>
-
- Returns
- The components assigned to the entity.
Definition at line 594 of file view.hpp.
+Definition at line 823 of file view.hpp.
- -◆ get() [4/4]
+ +◆ get() [4/4]
@@ -543,20 +727,20 @@ template<typename... Comp>std::enable_if_t<(sizeof...(Comp) > 1), std::tuple<Comp &...> > entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) -inlinenoexcept +inlineReturns the components assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use invalid component types results in a compilation error. Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Template Parameters
- @@ -573,45 +757,12 @@ template<typename... Comp>
-
- Returns
- The components assigned to the entity.
Definition at line 618 of file view.hpp.
+Definition at line 847 of file view.hpp.
- -◆ reset()
- --- ---template<typename Entity , typename... Component>--
-- -- --
-- -void entt::View< Entity, Component >::reset -( -) -- -inline -- --Resets the view and reinitializes it.
-A multi component view keeps a reference to the smallest set of candidate entities to iterate. Resetting a view means querying the underlying data structures and reinitializing the view.
- - - -
- Use it only if copies of views are stored around and there is a possibility that a component has become the best candidate in the meantime.◆ size()
+ +◆ size()
@@ -630,7 +781,7 @@ template<typename Entity , typename... Component>-inlinenoexcept +inline@@ -638,7 +789,7 @@ template<typename Entity , typename... Component>Estimates the number of entities that have the given components.
-
- Returns
- Estimated number of entities that have the given components.
Definition at line 470 of file view.hpp.
+Definition at line 624 of file view.hpp.
diff --git a/classentt_1_1View_3_01Entity_00_01Component_01_4-members.html b/classentt_1_1View_3_01Entity_00_01Component_01_4-members.html index 9ed7f0bfe..ab32df540 100644 --- a/classentt_1_1View_3_01Entity_00_01Component_01_4-members.html +++ b/classentt_1_1View_3_01Entity_00_01Component_01_4-members.html @@ -22,7 +22,7 @@@@ -70,21 +70,27 @@ $(function() { entt - 2.5.0 + 2.6.0This is the complete list of members for entt::View< Entity, Component >, including all inherited members.
@@ -84,6 +84,10 @@ Public Types using entt - 2.5.0 + 2.6.0iterator_type = typename view_type::iterator_type Input iterator type. + + +using const_iterator_type = typename view_type::const_iterator_type + Constant input iterator type. using entity_type = typename pool_type::entity_type @@ -99,33 +103,48 @@ using Underlying entity identifier. - Public Member Functions
- size_type size () const noexcept - Returns the number of entities that have the given component. More... - - raw_type * raw () noexcept - Direct access to the list of components. More... - - const raw_type * raw () const noexcept - Direct access to the list of components. More... - - const entity_type * data () const noexcept - Direct access to the list of entities. More... - - iterator_type begin () const noexcept - Returns an iterator to the first entity that has the given component. More... - - iterator_type end () const noexcept - Returns an iterator that is past the last entity that has the given component. More... - - bool contains (entity_type entity) const noexcept - Checks if a view contains an entity. More... - - const Component & get (entity_type entity) const noexcept - Returns the component assigned to the given entity. More... - - Component & get (entity_type entity) noexcept - Returns the component assigned to the given entity. More... + + size_type size () const ENTT_NOEXCEPT + Returns the number of entities that have the given component. More... + + bool empty () const ENTT_NOEXCEPT + Checks whether the view is empty. More... + + const raw_type * raw () const ENTT_NOEXCEPT + Direct access to the list of components. More... + + raw_type * raw () ENTT_NOEXCEPT + Direct access to the list of components. More... + + const entity_type * data () const ENTT_NOEXCEPT + Direct access to the list of entities. More... + + const_iterator_type cbegin () const ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given component. More... + + const_iterator_type begin () const ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given component. More... + + iterator_type begin () ENTT_NOEXCEPT + Returns an iterator to the first entity that has the given component. More... + + const_iterator_type cend () const ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given component. More... + + const_iterator_type end () const ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given component. More... + + iterator_type end () ENTT_NOEXCEPT + Returns an iterator that is past the last entity that has the given component. More... + + bool contains (const entity_type entity) const ENTT_NOEXCEPT + Checks if a view contains an entity. More... + + const Component & get (const entity_type entity) const ENTT_NOEXCEPT + Returns the component assigned to the given entity. More... + + Component & get (const entity_type entity) ENTT_NOEXCEPT + Returns the component assigned to the given entity. More... template<typename Func > void each (Func func) const @@ -171,10 +190,44 @@ class entt::View< Entity, Component > - Iterates entities and components and applies the given function object to them. More... Definition at line 756 of file view.hpp.
+Definition at line 942 of file view.hpp.
Member Function Documentation
- -◆ begin()
+ +◆ begin() [1/2]
+ +++ +++template<typename Entity , typename Component >++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::begin +( +) +const ++inline ++ ++Returns an iterator to the first entity that has the given component.
+The returned iterator points to the first entity that has the given component. If the view is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the first entity that has the given component.
◆ begin() [2/2]
@@ -188,27 +241,95 @@ template<typename Entity , typename Component >iterator_type entt::View< Entity, Component >::begin ( ) -const +-inlinenoexcept +inline- -Returns an iterator to the first entity that has the given component.
-The returned iterator points to the first entity that has the given component. If the view is empty, the returned iterator will be equal to
+end().The returned iterator points to the first entity that has the given component. If the view is empty, the returned iterator will be equal to
end().
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
- +
- Returns
- An iterator to the first entity that has the given component.
◆ contains()
+ +◆ cbegin()
+ +++ +++template<typename Entity , typename Component >++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::cbegin +( +) +const ++inline ++ ++Returns an iterator to the first entity that has the given component.
+The returned iterator points to the first entity that has the given component. If the view is empty, the returned iterator will be equal to
+end().+
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the first entity that has the given component.
◆ cend()
+ +++ +++template<typename Entity , typename Component >++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::cend +( +) +const ++inline ++ ++Returns an iterator that is past the last entity that has the given component.
+The returned iterator points to the entity following the last entity that has the given component. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the entity following the last entity that has the given component.
◆ contains()
@@ -221,14 +342,14 @@ template<typename Entity , typename Component >bool entt::View< Entity, Component >::contains ( -entity_type +const entity_type entity ) const -inlinenoexcept +inline@@ -242,12 +363,12 @@ template<typename Entity , typename Component >-
- Returns
- True if the view contains the given entity, false otherwise.
Definition at line 875 of file view.hpp.
+Definition at line 1145 of file view.hpp.
- -◆ data()
+ +◆ data()
@@ -266,17 +387,17 @@ template<typename Entity , typename Component >-inlinenoexcept +inline@@ -311,7 +432,7 @@ template<typename Func >Direct access to the list of entities.
-The returned pointer is such that range
+[data(), data() + size()]is always a valid range, even if the container is empty.The returned pointer is such that range
[data(), data() + size()]is always a valid range, even if the container is empty.
- Note
- There are no guarantees on the order of the entities. Use
beginandendif you want to iterate the view in the expected order.- +
- Returns
- A pointer to the array of entities.
Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a const reference to the component of the view.
-
The signature of the function should be equivalent to the following:void(entity_type, const Component &);
- Template Parameters
- +
-
- Template Parameters
@@ -324,7 +445,7 @@ template<typename Func >
Func Type of the function object to invoke. Definition at line 934 of file view.hpp.
+Definition at line 1204 of file view.hpp.
@@ -359,7 +480,7 @@ template<typename Func >Iterates entities and components and applies the given function object to them.
The function object is invoked for each entity. It is provided with the entity itself and a reference to the component of the view.
-
The signature of the function should be equivalent to the following:void(entity_type, Component &);
- Template Parameters
- +
void(const entity_type, Component &);-
- Template Parameters
@@ -372,12 +493,78 @@ template<typename Func >
Func Type of the function object to invoke. Definition at line 958 of file view.hpp.
+Definition at line 1226 of file view.hpp.
- -◆ end()
+ +◆ empty()
+ +++ ++++template<typename Entity , typename Component >++
++ ++ ++
++ +bool entt::View< Entity, Component >::empty +( +) +const ++inline +◆ end() [1/2]
+ +++ +++template<typename Entity , typename Component >++
++ ++ ++
++ +const_iterator_type entt::View< Entity, Component >::end +( +) +const ++inline ++ ++Returns an iterator that is past the last entity that has the given component.
+The returned iterator points to the entity following the last entity that has the given component. Attempting to dereference the returned iterator results in undefined behavior.
++
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
+ + + +
- Returns
- An iterator to the entity following the last entity that has the given component.
◆ end() [2/2]
@@ -391,12 +578,12 @@ template<typename Entity , typename Component >iterator_type entt::View< Entity, Component >::end ( ) -const +-inlinenoexcept +inline@@ -406,12 +593,12 @@ template<typename Entity , typename Component >
- Note
- Input iterators stay true to the order imposed to the underlying data structures.
-
- Returns
- An iterator to the entity following the last entity that has the given component.
Definition at line 866 of file view.hpp.
+Definition at line 1136 of file view.hpp.
- -◆ get() [1/2]
+ +◆ get() [1/2]
@@ -424,20 +611,20 @@ template<typename Entity , typename Component >const Component& entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) const -inlinenoexcept +inlineReturns the component assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Parameters
- @@ -448,12 +635,12 @@ template<typename Entity , typename Component >
-
- Returns
- The component assigned to the entity.
Definition at line 894 of file view.hpp.
+Definition at line 1164 of file view.hpp.
- -◆ get() [2/2]
+ +◆ get() [2/2]
@@ -466,20 +653,20 @@ template<typename Entity , typename Component >Component& entt::View< Entity, Component >::get ( -entity_type +const entity_type entity ) -inlinenoexcept +inlineReturns the component assigned to the given entity.
-Prefer this function instead of
+Registry::getduring iterations. It has far better performance than its companion function.Prefer this function instead of
Registry::getduring iterations. It has far better performance than its companion function.
- Warning
- Attempting to use an entity that doesn't belong to the view results in undefined behavior.
An assertion will abort the execution at runtime in debug mode if the view doesn't contain the given entity.
- Parameters
- @@ -490,46 +677,12 @@ template<typename Entity , typename Component >
-
- Returns
- The component assigned to the entity.
Definition at line 914 of file view.hpp.
+Definition at line 1184 of file view.hpp.
- -◆ raw() [1/2]
- --- ---template<typename Entity , typename Component >--
-- -- --
-- -raw_type* entt::View< Entity, Component >::raw -( -) -- -inlinenoexcept -- --Direct access to the list of components.
-The returned pointer is such that range
-[raw(), raw() + size()]is always a valid range, even if the container is empty.-
- Note
- There are no guarantees on the order of the components. Use
beginandendif you want to iterate the view in the expected order.- - - -
- Returns
- A pointer to the array of components.
◆ raw() [2/2]
+ +◆ raw() [1/2]
@@ -548,22 +701,56 @@ template<typename Entity , typename Component >-inlinenoexcept +inline- -Direct access to the list of components.
-The returned pointer is such that range
+[raw(), raw() + size()]is always a valid range, even if the container is empty.The returned pointer is such that range
[raw(), raw() + size()]is always a valid range, even if the container is empty.
- Note
- There are no guarantees on the order of the components. Use
beginandendif you want to iterate the view in the expected order.- +
- Returns
- A pointer to the array of components.
◆ size()
+ +◆ raw() [2/2]
+ +++ +++template<typename Entity , typename Component >++
++ ++ ++
++ +raw_type* entt::View< Entity, Component >::raw +( +) ++ +inline ++ ++Direct access to the list of components.
+The returned pointer is such that range
+[raw(), raw() + size()]is always a valid range, even if the container is empty.+
- Note
- There are no guarantees on the order of the components. Use
beginandendif you want to iterate the view in the expected order.+ + + +
- Returns
- A pointer to the array of components.
◆ size()
@@ -582,7 +769,7 @@ template<typename Entity , typename Component >-inlinenoexcept +inline@@ -590,7 +777,7 @@ template<typename Entity , typename Component >Returns the number of entities that have the given component.
-
- Returns
- Number of entities that have the given component.
Definition at line 781 of file view.hpp.
+Definition at line 969 of file view.hpp.
diff --git a/classes.html b/classes.html index fcecd5a23..f1ddf5d1b 100644 --- a/classes.html +++ b/classes.html @@ -22,7 +22,7 @@@@ -63,36 +63,38 @@ $(function() { entt - 2.5.0 + 2.6.0Class Index- +
diff --git a/config_8h_source.html b/config_8h_source.html new file mode 100644 index 000000000..2065c264a --- /dev/null +++ b/config_8h_source.html @@ -0,0 +1,78 @@ + + + + + + + +entt: src/entt/config/config.h Source File + + + + + + + + + +++++ + + + + + + + ++ +
++ + ++ +entt + 2.6.0 ++++ + ++ ++ + +++++config.h++ +
+Generated by ++ 1.8.13 + + + diff --git a/delegate_8hpp_source.html b/delegate_8hpp_source.html index aafccf315..352dd2248 100644 --- a/delegate_8hpp_source.html +++ b/delegate_8hpp_source.html @@ -22,7 +22,7 @@
@@ -67,15 +67,15 @@ $(function() { entt - 2.5.0 + 2.6.0delegate.hpp-129 bool operator!=(const Delegate<Ret(Args...)> &lhs, const Delegate<Ret(Args...)> &rhs) noexcept {- - --bool operator==(const Delegate< Ret(Args...)> &other) const noexceptChecks if the contents of the two delegates are different.Definition: delegate.hpp:108- - - -void connect(Class *instance) noexceptConnects a member function for a given instance to a delegate.Definition: delegate.hpp:78+constexpr bool operator!=(const HashedString &lhs, const HashedString &rhs) noexceptCompares two hashed strings.Definition: hashed_string.hpp:102130 bool operator!=(const Delegate<Ret(Args...)> &lhs, const Delegate<Ret(Args...)> &rhs) ENTT_NOEXCEPT {+ + + + +constexpr bool operator!=(const HashedString &lhs, const HashedString &rhs) ENTT_NOEXCEPTCompares two hashed strings.Definition: hashed_string.hpp:103+ + +bool operator==(const Delegate< Ret(Args...)> &other) const ENTT_NOEXCEPTChecks if the contents of the two delegates are different.Definition: delegate.hpp:109void connect(Class *instance) ENTT_NOEXCEPTConnects a member function for a given instance to a delegate.Definition: delegate.hpp:79
diff --git a/dir_66e9674e8206a335795995fa32a03c91.html b/dir_66e9674e8206a335795995fa32a03c91.html index 3878dd91f..5fdfb7f30 100644 --- a/dir_66e9674e8206a335795995fa32a03c91.html +++ b/dir_66e9674e8206a335795995fa32a03c91.html @@ -22,7 +22,7 @@diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 3366cd7c4..35f1c31f2 100644 --- a/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dir_721f6154dba3c88bcdead5f446bce319.html b/dir_721f6154dba3c88bcdead5f446bce319.html index 258dee0de..db0c5b55c 100644 --- a/dir_721f6154dba3c88bcdead5f446bce319.html +++ b/dir_721f6154dba3c88bcdead5f446bce319.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dir_7929ab29d3f740cf727ccbd263321562.html b/dir_7929ab29d3f740cf727ccbd263321562.html new file mode 100644 index 000000000..c3ca98cc7 --- /dev/null +++ b/dir_7929ab29d3f740cf727ccbd263321562.html @@ -0,0 +1,78 @@ + + + + + + + + entt - 2.5.0 + 2.6.0entt: src/entt/config Directory Reference + + + + + + + + + +++++ + + + + + + + ++ +
++ + ++ +entt + 2.6.0 ++++ + ++ ++ + +++++config Directory Reference++ +
+Generated by ++ 1.8.13 + + + diff --git a/dir_85dbee8884f1b3a817fa7eff8dff73ec.html b/dir_85dbee8884f1b3a817fa7eff8dff73ec.html index 694f04dda..b7c82ac64 100644 --- a/dir_85dbee8884f1b3a817fa7eff8dff73ec.html +++ b/dir_85dbee8884f1b3a817fa7eff8dff73ec.html @@ -22,7 +22,7 @@
diff --git a/dir_a53318306f6ac0f7fe657839abd543ab.html b/dir_a53318306f6ac0f7fe657839abd543ab.html index afd643159..43543487d 100644 --- a/dir_a53318306f6ac0f7fe657839abd543ab.html +++ b/dir_a53318306f6ac0f7fe657839abd543ab.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dir_b64489a1e8130d5ebf6d86d282f500f0.html b/dir_b64489a1e8130d5ebf6d86d282f500f0.html index 9123df3ee..7804d6283 100644 --- a/dir_b64489a1e8130d5ebf6d86d282f500f0.html +++ b/dir_b64489a1e8130d5ebf6d86d282f500f0.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dir_de8f4e6ba3f54a2a21309f742e93a373.html b/dir_de8f4e6ba3f54a2a21309f742e93a373.html index 98a8fe27f..971a99a58 100644 --- a/dir_de8f4e6ba3f54a2a21309f742e93a373.html +++ b/dir_de8f4e6ba3f54a2a21309f742e93a373.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dir_e3a7bb56c55e5c2286e2fe96e197d4f5.html b/dir_e3a7bb56c55e5c2286e2fe96e197d4f5.html index 97d5295eb..ba4137225 100644 --- a/dir_e3a7bb56c55e5c2286e2fe96e197d4f5.html +++ b/dir_e3a7bb56c55e5c2286e2fe96e197d4f5.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/dispatcher_8hpp_source.html b/dispatcher_8hpp_source.html index 670c52139..ab53c79dd 100644 --- a/dispatcher_8hpp_source.html +++ b/dispatcher_8hpp_source.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0@@ -67,15 +67,16 @@ $(function() { entt - 2.5.0 + 2.6.0dispatcher.hpp-- - --void trigger(Args &&... args)Triggers an immediate event of the given type.Definition: dispatcher.hpp:155- - - -void connect(instance_type< Class, Event > instance) noexceptRegisters a listener given in the form of a member function.Definition: dispatcher.hpp:118+void disconnect(instance_type< Class, Event > instance) noexceptUnregisters a listener given in the form of a member function.Definition: dispatcher.hpp:14053 std::for_each(events[curr].cbegin(), events[curr].cend(), [this](const auto &event) { signal.publish(event); });+typename SignalWrapper< Event >::sink_type sink_typeType of sink for the given event.Definition: dispatcher.hpp:95+ + +sink_type< Event > sink() ENTT_NOEXCEPTReturns a sink object for the given event.Definition: dispatcher.hpp:115+ + + + +void trigger(Args &&... args)Triggers an immediate event of the given type.Definition: dispatcher.hpp:130
diff --git a/emitter_8hpp_source.html b/emitter_8hpp_source.html index 3a80add66..2023bf3f7 100644 --- a/emitter_8hpp_source.html +++ b/emitter_8hpp_source.html @@ -22,7 +22,7 @@@@ -67,21 +67,21 @@ $(function() { entt - 2.5.0 + 2.6.0emitter.hpp---bool empty() const noexceptChecks if there are listeners registered with the event emitter.Definition: emitter.hpp:328+Connection< Event > on(Listener< Event > listener)Registers a long-lived listener with the event emitter.Definition: emitter.hpp:243+bool empty() const ENTT_NOEXCEPTChecks if there are listeners registered for the specific event.Definition: emitter.hpp:317+bool empty() const ENTT_NOEXCEPTChecks if there are listeners registered with the event emitter.Definition: emitter.hpp:329Connection< Event > on(Listener< Event > listener)Registers a long-lived listener with the event emitter.Definition: emitter.hpp:244- - -Emitter & operator=(const Emitter &)=deleteCopying an emitter isn't allowed.- -bool empty() const noexceptChecks if there are listeners registered for the specific event.Definition: emitter.hpp:316-Connection< Event > once(Listener< Event > listener)Registers a short-lived listener with the event emitter.Definition: emitter.hpp:268- -void clear() noexceptDisconnects all the listeners for the given event type.Definition: emitter.hpp:295- -void erase(Connection< Event > conn) noexceptDisconnects a listener from the event emitter.Definition: emitter.hpp:282- + + + +typename Handler< Event >::listener_type ListenerType of listeners accepted for the given type of event.Definition: emitter.hpp:143+Connection< Event > once(Listener< Event > listener)Registers a short-lived listener with the event emitter.Definition: emitter.hpp:269+ + + + +void clear() ENTT_NOEXCEPTDisconnects all the listeners for the given event type.Definition: emitter.hpp:296+void erase(Connection< Event > conn) ENTT_NOEXCEPTDisconnects a listener from the event emitter.Definition: emitter.hpp:283typename Handler< Event >::listener_type ListenerType of listeners accepted for the given event.Definition: emitter.hpp:144
diff --git a/entt_8hpp_source.html b/entt_8hpp_source.html index 437dc918f..124404159 100644 --- a/entt_8hpp_source.html +++ b/entt_8hpp_source.html @@ -22,7 +22,7 @@@@ -67,7 +67,7 @@ $(function() { entt - 2.5.0 + 2.6.0entt.hpp-+
Generated by diff --git a/entt__traits_8hpp_source.html b/entt__traits_8hpp_source.html index d91e360a9..38ed1dbf6 100644 --- a/entt__traits_8hpp_source.html +++ b/entt__traits_8hpp_source.html @@ -22,7 +22,7 @@@@ -69,7 +69,7 @@ $(function() { entt - 2.5.0 + 2.6.0- + diff --git a/family_8hpp_source.html b/family_8hpp_source.html index a9f6d16dd..cfcc1a4fb 100644 --- a/family_8hpp_source.html +++ b/family_8hpp_source.html @@ -22,7 +22,7 @@@@ -67,10 +67,10 @@ $(function() { entt - 2.5.0 + 2.6.0family.hpp-diff --git a/functions.html b/functions.html index 3f3458af0..233161e5f 100644 --- a/functions.html +++ b/functions.html @@ -22,7 +22,7 @@-- - +static family_type type() noexceptReturns an unique identifier for the given type.Definition: family.hpp:39++ +static family_type type() ENTT_NOEXCEPTReturns an unique identifier for the given type.Definition: family.hpp:40
diff --git a/files.html b/files.html index b0a46311e..de79b6df8 100644 --- a/files.html +++ b/files.html @@ -22,7 +22,7 @@@@ -67,34 +67,38 @@ $(function() { entt - 2.5.0 + 2.6.0[detail level 1234]
▼ src - ▼ entt - ▼ core - family.hpp - hashed_string.hpp - ident.hpp - ▼ entity - actor.hpp - entt_traits.hpp - registry.hpp - snapshot.hpp - sparse_set.hpp - view.hpp - ▼ locator - locator.hpp - ▼ process - process.hpp - scheduler.hpp - ▼ resource - cache.hpp - handle.hpp - loader.hpp - ▼ signal - bus.hpp - delegate.hpp - dispatcher.hpp - emitter.hpp - sigh.hpp - signal.hpp + entt.hpp + ▼ config + config.h + ▼ core + algorithm.hpp + family.hpp + hashed_string.hpp + ident.hpp + ▼ entity + actor.hpp + entt_traits.hpp + helper.hpp + prototype.hpp + registry.hpp + snapshot.hpp + sparse_set.hpp + utility.hpp + view.hpp + ▼ locator + locator.hpp + ▼ process + process.hpp + scheduler.hpp + ▼ resource + cache.hpp + handle.hpp + loader.hpp + ▼ signal + delegate.hpp + dispatcher.hpp + emitter.hpp + sigh.hpp entt.hpp @@ -63,27 +63,29 @@ $(function() { entt - 2.5.0 + 2.6.0- a -
diff --git a/functions_0x7e.html b/functions_0x7e.html index 144c5a9ac..61a285900 100644 --- a/functions_0x7e.html +++ b/functions_0x7e.html @@ -22,7 +22,7 @@
- abort() -: entt::Process< Derived, Delta > -, entt::Scheduler< Delta > +: entt::Process< Derived, Delta > +, entt::Scheduler< Delta >
- accommodate() -: entt::Registry< Entity > +: entt::Prototype< Entity > +, entt::Registry< Entity >
- Actor() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- alive() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- assign() -: entt::Registry< Entity > +: entt::Actor< Entity > +, entt::Prototype< Entity > +, entt::Registry< Entity >
- attach() -: entt::Registry< Entity > -, entt::Scheduler< Delta > +: entt::Scheduler< Delta >
- attachee() -: entt::Registry< Entity > +: entt::Registry< Entity >
@@ -63,19 +63,19 @@ $(function() { entt - 2.5.0 + 2.6.0- ~ -
diff --git a/functions_b.html b/functions_b.html index f231143ec..ba5389d32 100644 --- a/functions_b.html +++ b/functions_b.html @@ -22,7 +22,7 @@
- ~Actor() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- ~Emitter() -: entt::Emitter< Derived > +: entt::Emitter< Derived >
- ~Process() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- ~ServiceLocator() : entt::ServiceLocator< Service >
- ~SparseSet() -: entt::SparseSet< Entity > +: entt::SparseSet< Entity >
@@ -63,11 +63,11 @@ $(function() { entt - 2.5.0 + 2.6.0- b -
diff --git a/functions_c.html b/functions_c.html index 3b2a504ab..da407ba88 100644 --- a/functions_c.html +++ b/functions_c.html @@ -22,7 +22,7 @@
- begin() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
@@ -63,14 +63,31 @@ $(function() { entt - 2.5.0 + 2.6.0- c -
diff --git a/functions_d.html b/functions_d.html index ad3016dd9..dc349e21a 100644 --- a/functions_d.html +++ b/functions_d.html @@ -22,7 +22,7 @@
- capacity() -: entt::Registry< Entity > +: entt::Registry< Entity > +
+- cbegin() +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component > +
+- cend() +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- clear() -: entt::Emitter< Derived > -, entt::ResourceCache< Resource > +: entt::Emitter< Derived > +, entt::ResourceCache< Resource > , entt::Scheduler< Delta > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +
+- clone() +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- collect() : entt::SigH< Ret(Args...), Collector > @@ -79,43 +96,49 @@ $(function() { : entt::SigH< Ret(Args...), Collector >
- component() -: entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +: entt::ContinuousLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity >
- component_type : entt::Registry< Entity >
- connect() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Delegate< Ret(Args...)> -, entt::Dispatcher< Sig > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +: entt::Delegate< Ret(Args...)> +, entt::Sink< Ret(Args...)>
- Connection() -: entt::Emitter< Derived >::Connection< Event > +: entt::Emitter< Derived >::Connection< Event > +
+- const_iterator_type +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- construct() -: entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +
+- construction() +: entt::Registry< Entity >
- contains() -: entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::View< Entity, Component >
- ContinuousLoader() -: entt::ContinuousLoader< Entity > +: entt::ContinuousLoader< Entity >
- create() -: entt::Registry< Entity > +: entt::Prototype< Entity > +, entt::Registry< Entity >
- current() -: entt::Registry< Entity > +: entt::Registry< Entity >
@@ -63,44 +63,40 @@ $(function() { entt - 2.5.0 + 2.6.0- d -
diff --git a/functions_e.html b/functions_e.html index e68bd2249..e9d52f326 100644 --- a/functions_e.html +++ b/functions_e.html @@ -22,7 +22,7 @@
- data() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- dead() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- Delegate() -: entt::Delegate< Ret(Args...)> +: entt::Delegate< Ret(Args...)>
- delta_type -: entt::Actor< Entity, Delta > -, entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- destroy() -: entt::Registry< Entity > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- destroyed() : entt::ContinuousLoader< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > +
+- destruction() +: entt::Registry< Entity >
- discard() : entt::Registry< Entity > -, entt::ResourceCache< Resource > +, entt::ResourceCache< Resource >
- disconnect() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Dispatcher< Sig > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -
-- Dispatcher() -: entt::Dispatcher< Sig > +: entt::Sink< Ret(Args...)>
@@ -64,39 +64,43 @@ $(function() { entt - 2.5.0 + 2.6.0- e -
diff --git a/functions_f.html b/functions_f.html index 42992d2ac..ea155313a 100644 --- a/functions_f.html +++ b/functions_f.html @@ -22,7 +22,7 @@
- each() : entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::View< Entity, Component >
- Emitter : entt::Emitter< Derived >::Connection< Event > -, entt::Emitter< Derived > +, entt::Emitter< Derived >
- empty() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Emitter< Derived > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::Scheduler< Delta > -, entt::ServiceLocator< Service > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -, entt::SparseSet< Entity > +: entt::Emitter< Derived > +, entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::Scheduler< Delta > +, entt::ServiceLocator< Service > +, entt::SigH< Ret(Args...), Collector > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- end() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- enqueue() -: entt::Dispatcher< Sig > +: entt::Dispatcher
- entities() : entt::ContinuousLoader< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > +
+- entity() +: entt::Actor< Entity >
- entity_mask : entt::entt_traits< std::uint16_t > @@ -109,12 +113,13 @@ $(function() { , entt::entt_traits< std::uint64_t >
- entity_type -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > , entt::ContinuousLoader< Entity > , entt::entt_traits< std::uint16_t > , entt::entt_traits< std::uint32_t > , entt::entt_traits< std::uint64_t > , entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > , entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::SparseSet< Entity > @@ -122,10 +127,10 @@ $(function() { , entt::View< Entity, Component >
- erase() -: entt::Emitter< Derived > +: entt::Emitter< Derived >
- extent() -: entt::SparseSet< Entity > +: entt::SparseSet< Entity >
@@ -63,14 +63,14 @@ $(function() { entt - 2.5.0 + 2.6.0- f -
diff --git a/functions_func.html b/functions_func.html index be159c30c..810608a75 100644 --- a/functions_func.html +++ b/functions_func.html @@ -22,7 +22,7 @@
- fail() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- family_type : entt::Family<... >
- fast() -: entt::Registry< Entity > -, entt::SparseSet< Entity > +: entt::Registry< Entity > +, entt::SparseSet< Entity >
@@ -63,27 +63,29 @@ $(function() { entt - 2.5.0 + 2.6.0- a -
diff --git a/functions_func_0x7e.html b/functions_func_0x7e.html index 6f54cd978..d73150199 100644 --- a/functions_func_0x7e.html +++ b/functions_func_0x7e.html @@ -22,7 +22,7 @@
- abort() -: entt::Process< Derived, Delta > -, entt::Scheduler< Delta > +: entt::Process< Derived, Delta > +, entt::Scheduler< Delta >
- accommodate() -: entt::Registry< Entity > +: entt::Prototype< Entity > +, entt::Registry< Entity >
- Actor() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- alive() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- assign() -: entt::Registry< Entity > +: entt::Actor< Entity > +, entt::Prototype< Entity > +, entt::Registry< Entity >
- attach() -: entt::Registry< Entity > -, entt::Scheduler< Delta > +: entt::Scheduler< Delta >
- attachee() -: entt::Registry< Entity > +: entt::Registry< Entity >
@@ -63,19 +63,19 @@ $(function() { entt - 2.5.0 + 2.6.0- ~ -
diff --git a/functions_func_b.html b/functions_func_b.html index 388e7c478..b96d1a2ec 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -22,7 +22,7 @@
- ~Actor() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- ~Emitter() -: entt::Emitter< Derived > +: entt::Emitter< Derived >
- ~Process() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- ~ServiceLocator() : entt::ServiceLocator< Service >
- ~SparseSet() -: entt::SparseSet< Entity > +: entt::SparseSet< Entity >
@@ -63,11 +63,11 @@ $(function() { entt - 2.5.0 + 2.6.0- b -
diff --git a/functions_func_c.html b/functions_func_c.html index 79c80b9bb..088aabc66 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -22,7 +22,7 @@
- begin() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
@@ -63,53 +63,69 @@ $(function() { entt - 2.5.0 + 2.6.0- c -
diff --git a/functions_func_d.html b/functions_func_d.html index 74a03a103..a30c9534a 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -22,7 +22,7 @@
- capacity() -: entt::Registry< Entity > +: entt::Registry< Entity > +
+- cbegin() +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component > +
+- cend() +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- clear() -: entt::Emitter< Derived > -, entt::ResourceCache< Resource > +: entt::Emitter< Derived > +, entt::ResourceCache< Resource > , entt::Scheduler< Delta > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +
+- clone() +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- collect() : entt::SigH< Ret(Args...), Collector >
- component() -: entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +: entt::ContinuousLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity >
- connect() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Delegate< Ret(Args...)> -, entt::Dispatcher< Sig > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +: entt::Delegate< Ret(Args...)> +, entt::Sink< Ret(Args...)>
- Connection() -: entt::Emitter< Derived >::Connection< Event > +: entt::Emitter< Derived >::Connection< Event >
- construct() -: entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +
+- construction() +: entt::Registry< Entity >
- contains() -: entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::View< Entity, Component >
- ContinuousLoader() -: entt::ContinuousLoader< Entity > +: entt::ContinuousLoader< Entity >
- create() -: entt::Registry< Entity > +: entt::Prototype< Entity > +, entt::Registry< Entity >
- current() -: entt::Registry< Entity > +: entt::Registry< Entity >
@@ -63,40 +63,37 @@ $(function() { entt - 2.5.0 + 2.6.0- d -
diff --git a/functions_func_e.html b/functions_func_e.html index ca420b17b..eff084e16 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -22,7 +22,7 @@
- data() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- dead() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- Delegate() -: entt::Delegate< Ret(Args...)> +: entt::Delegate< Ret(Args...)>
- destroy() -: entt::Registry< Entity > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- destroyed() : entt::ContinuousLoader< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > +
+- destruction() +: entt::Registry< Entity >
- discard() : entt::Registry< Entity > -, entt::ResourceCache< Resource > +, entt::ResourceCache< Resource >
- disconnect() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Dispatcher< Sig > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -
-- Dispatcher() -: entt::Dispatcher< Sig > +: entt::Sink< Ret(Args...)>
@@ -64,44 +64,48 @@ $(function() { entt - 2.5.0 + 2.6.0- e -
diff --git a/functions_func_f.html b/functions_func_f.html index 8da464ffb..049e4cd35 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -22,7 +22,7 @@
- each() : entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::View< Entity, Component >
- Emitter() -: entt::Emitter< Derived > +: entt::Emitter< Derived >
- empty() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Emitter< Derived > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::Scheduler< Delta > -, entt::ServiceLocator< Service > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -, entt::SparseSet< Entity > +: entt::Emitter< Derived > +, entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::Scheduler< Delta > +, entt::ServiceLocator< Service > +, entt::SigH< Ret(Args...), Collector > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- end() -: entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- enqueue() -: entt::Dispatcher< Sig > +: entt::Dispatcher
- entities() : entt::ContinuousLoader< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > +
+- entity() +: entt::Actor< Entity >
- erase() -: entt::Emitter< Derived > +: entt::Emitter< Derived >
- extent() -: entt::SparseSet< Entity > +: entt::SparseSet< Entity >
@@ -63,11 +63,11 @@ $(function() { entt - 2.5.0 + 2.6.0- f -
diff --git a/functions_func_g.html b/functions_func_g.html index 48060f53b..4c9cc46d5 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -22,7 +22,7 @@
- fail() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- fast() -: entt::Registry< Entity > -, entt::SparseSet< Entity > +: entt::Registry< Entity > +, entt::SparseSet< Entity >
@@ -63,14 +63,15 @@ $(function() { entt - 2.5.0 + 2.6.0- g -
diff --git a/functions_func_h.html b/functions_func_h.html index f9f0bbb4e..c8744a902 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -22,7 +22,7 @@
- get() -: entt::Actor< Entity, Delta > -, entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceHandle< Resource > -, entt::ServiceLocator< Service > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::Actor< Entity > +, entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > +, entt::Registry< Entity > +, entt::ResourceHandle< Resource > +, entt::ServiceLocator< Service > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
@@ -63,16 +63,17 @@ $(function() { entt - 2.5.0 + 2.6.0- h -
diff --git a/functions_func_l.html b/functions_func_l.html index 62581d0cc..446924d03 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -22,7 +22,7 @@
- handle() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
- has() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > , entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::SparseSet< Entity > +, entt::Prototype< Entity > +, entt::Registry< Entity > +, entt::SparseSet< Entity >
- HashedString() -: entt::HashedString +: entt::HashedString
@@ -63,7 +63,7 @@ $(function() { entt - 2.5.0 + 2.6.0- l -
diff --git a/functions_func_m.html b/functions_func_m.html index 6bf8ab72d..825f238f2 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -22,7 +22,7 @@@@ -66,7 +66,7 @@ $(function() { : entt::ContinuousLoader< Entity > entt - 2.5.0 + 2.6.0move() -: entt::Registry< Entity > +: entt::Registry< Entity > diff --git a/functions_func_o.html b/functions_func_o.html index 343e21bde..6e009637a 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -22,7 +22,7 @@@@ -72,48 +72,52 @@ $(function() { : entt::ResourceHandle< Resource > entt - 2.5.0 + 2.6.0operator const char *() -: entt::HashedString +: entt::HashedString operator const Resource &() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator hash_type() -: entt::HashedString +: entt::HashedString operator()() : entt::Delegate< Ret(Args...)> +, entt::InsertionSort +, entt::Prototype< Entity > +, entt::StdSort operator*() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator->() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator=() -: entt::Actor< Entity, Delta > -, entt::ContinuousLoader< Entity > +: entt::Actor< Entity > +, entt::ContinuousLoader< Entity > , entt::Emitter< Derived >::Connection< Event > -, entt::Emitter< Derived > +, entt::Emitter< Derived > , entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::ResourceHandle< Resource > -, entt::Scheduler< Delta > +, entt::ResourceCache< Resource > +, entt::ResourceHandle< Resource > +, entt::Scheduler< Delta > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > , entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type > operator==() -: entt::Delegate< Ret(Args...)> -, entt::HashedString -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +: entt::Delegate< Ret(Args...)> +, entt::HashedString +, entt::SigH< Ret(Args...), Collector > orphan() -: entt::Registry< Entity > +: entt::Registry< Entity > orphans() : entt::ContinuousLoader< Entity > , entt::Registry< Entity > -, entt::SnapshotLoader< Entity > +, entt::SnapshotLoader< Entity > diff --git a/functions_func_p.html b/functions_func_p.html index 0ad593911..e8a4b91cf 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -22,7 +22,7 @@@@ -63,13 +63,10 @@ $(function() { entt - 2.5.0 + 2.6.0- p -
diff --git a/functions_func_r.html b/functions_func_r.html index c3eb02e4e..d0e66dc78 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -22,7 +22,7 @@
- pause() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- paused() -: entt::Process< Derived, Delta > -
-- persistent() -: entt::Registry< Entity > +: entt::Process< Derived, Delta >
- prepare() : entt::Registry< Entity > @@ -78,11 +75,8 @@ $(function() { : entt::ProcessAdaptor< Func, Delta >
- publish() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Emitter< Derived > +: entt::Emitter< Derived > , entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)>
@@ -63,58 +63,54 @@ $(function() { entt - 2.5.0 + 2.6.0- r -
diff --git a/functions_m.html b/functions_m.html index 248a3f8e6..a561a3ce3 100644 --- a/functions_m.html +++ b/functions_m.html @@ -22,7 +22,7 @@
- raw() -: entt::RawView< Entity, Component > -, entt::Registry< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- ref() -: entt::ServiceLocator< Service > -
-- reg() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > +: entt::ServiceLocator< Service >
- registry() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- Registry() : entt::Registry< Entity >
- rejected() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- reload() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
- remove() -: entt::Registry< Entity > +: entt::Actor< Entity > +, entt::Registry< Entity >
- replace() -: entt::Registry< Entity > +: entt::Registry< Entity >
- reserve() -: entt::Registry< Entity > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- reset() -: entt::Delegate< Ret(Args...)> -, entt::Registry< Entity > +: entt::Delegate< Ret(Args...)> +, entt::Registry< Entity > , entt::ServiceLocator< Service > , entt::SparseSet< Entity > , entt::SparseSet< Entity, Type > -, entt::View< Entity, Component >
- ResourceCache() : entt::ResourceCache< Resource >
- ResourceHandle() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource >
- respect() -: entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- restore() : entt::Registry< Entity > diff --git a/functions_func_s.html b/functions_func_s.html index f90d8c0df..1e304551f 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -22,7 +22,7 @@
@@ -63,49 +63,55 @@ $(function() { entt - 2.5.0 + 2.6.0- s -
diff --git a/functions_func_t.html b/functions_func_t.html index 5ac1425c9..ab02ef767 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -22,7 +22,7 @@
- Scheduler() -: entt::Scheduler< Delta > +: entt::Scheduler< Delta >
- ServiceLocator() : entt::ServiceLocator< Service >
- set() -: entt::Actor< Entity, Delta > -, entt::Registry< Entity > -, entt::ServiceLocator< Service > +: entt::Prototype< Entity > +, entt::ServiceLocator< Service >
- shrink() : entt::ContinuousLoader< Entity >
+- sink() +: entt::Dispatcher +, entt::SigH< Ret(Args...), Collector > +
- size() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::Scheduler< Delta > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -, entt::SparseSet< Entity > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::Scheduler< Delta > +, entt::SigH< Ret(Args...), Collector > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- snapshot() : entt::Registry< Entity >
+- Snapshot() +: entt::Snapshot< Entity > +
+- SnapshotLoader() +: entt::SnapshotLoader< Entity > +
- sort() : entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::SparseSet< Entity, Type > +, entt::Registry< Entity > +, entt::SparseSet< Entity, Type >
- SparseSet() : entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type >
- succeed() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- swap() -: entt::SparseSet< Entity > +: entt::SparseSet< Entity >
@@ -63,22 +63,22 @@ $(function() { entt - 2.5.0 + 2.6.0- t -
diff --git a/functions_func_u.html b/functions_func_u.html index c9861c36c..622e5b005 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -22,7 +22,7 @@
- tag() -: entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +: entt::ContinuousLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity >
- temp() : entt::ResourceCache< Resource >
- tick() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- trigger() -: entt::Dispatcher< Sig > +: entt::Dispatcher
- type() -: entt::Family<... > +: entt::Family<... > +, entt::Registry< Entity >
@@ -63,20 +63,15 @@ $(function() { entt - 2.5.0 + 2.6.0- u -
diff --git a/functions_func_v.html b/functions_func_v.html index f0a299e67..309c5c869 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -22,7 +22,7 @@
- unpause() -: entt::Process< Derived, Delta > -
-- unreg() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > +: entt::Process< Derived, Delta >
- unset() -: entt::Actor< Entity, Delta > +: entt::Prototype< Entity >
- update() -: entt::Actor< Entity, Delta > -, entt::Dispatcher< Sig > -, entt::ProcessAdaptor< Func, Delta > -, entt::Scheduler< Delta > +: entt::Dispatcher +, entt::ProcessAdaptor< Func, Delta > +, entt::Scheduler< Delta >
@@ -63,13 +63,13 @@ $(function() { entt - 2.5.0 + 2.6.0- v -
diff --git a/functions_g.html b/functions_g.html index 8a9214848..d686c211e 100644 --- a/functions_g.html +++ b/functions_g.html @@ -22,7 +22,7 @@
- valid() -: entt::Registry< Entity > +: entt::Registry< Entity >
- version() -: entt::Registry< Entity > +: entt::Registry< Entity >
- view() -: entt::Registry< Entity > +: entt::Registry< Entity >
@@ -63,14 +63,15 @@ $(function() { entt - 2.5.0 + 2.6.0- g -
diff --git a/functions_h.html b/functions_h.html index 5a3cee09a..6eb85bf03 100644 --- a/functions_h.html +++ b/functions_h.html @@ -22,7 +22,7 @@
- get() -: entt::Actor< Entity, Delta > -, entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceHandle< Resource > -, entt::ServiceLocator< Service > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::Actor< Entity > +, entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > +, entt::Registry< Entity > +, entt::ResourceHandle< Resource > +, entt::ServiceLocator< Service > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
@@ -63,19 +63,20 @@ $(function() { entt - 2.5.0 + 2.6.0- h -
diff --git a/functions_i.html b/functions_i.html index fcef32ee3..91d57653e 100644 --- a/functions_i.html +++ b/functions_i.html @@ -22,7 +22,7 @@
- handle() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
- has() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > , entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::SparseSet< Entity > +, entt::Prototype< Entity > +, entt::Registry< Entity > +, entt::SparseSet< Entity >
- hash_type : entt::HashedString
- HashedString() -: entt::HashedString +: entt::HashedString
@@ -64,13 +64,12 @@ $(function() { entt - 2.5.0 + 2.6.0- i -
diff --git a/functions_l.html b/functions_l.html index e83562bb8..ffd981c60 100644 --- a/functions_l.html +++ b/functions_l.html @@ -22,7 +22,7 @@
- instance_type : entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)>
- iterator_type : entt::PersistentView< Entity, Component > , entt::RawView< Entity, Component > , entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type > , entt::View< Entity, Component >
@@ -66,7 +66,7 @@ $(function() { : entt::Emitter< Derived > entt - 2.5.0 + 2.6.0- load() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
@@ -66,7 +66,7 @@ $(function() { : entt::ContinuousLoader< Entity > entt - 2.5.0 + 2.6.0move() -: entt::Registry< Entity > +: entt::Registry< Entity > diff --git a/functions_o.html b/functions_o.html index 7c3d5d52d..499504f31 100644 --- a/functions_o.html +++ b/functions_o.html @@ -22,7 +22,7 @@@@ -75,48 +75,52 @@ $(function() { : entt::ResourceHandle< Resource > entt - 2.5.0 + 2.6.0operator const char *() -: entt::HashedString +: entt::HashedString operator const Resource &() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator hash_type() -: entt::HashedString +: entt::HashedString operator()() : entt::Delegate< Ret(Args...)> +, entt::InsertionSort +, entt::Prototype< Entity > +, entt::StdSort operator*() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator->() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource > operator=() -: entt::Actor< Entity, Delta > -, entt::ContinuousLoader< Entity > +: entt::Actor< Entity > +, entt::ContinuousLoader< Entity > , entt::Emitter< Derived >::Connection< Event > , entt::Emitter< Derived > , entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::ResourceHandle< Resource > -, entt::Scheduler< Delta > +, entt::ResourceCache< Resource > +, entt::ResourceHandle< Resource > +, entt::Scheduler< Delta > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity > , entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type > operator==() -: entt::Delegate< Ret(Args...)> -, entt::HashedString -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> +: entt::Delegate< Ret(Args...)> +, entt::HashedString +, entt::SigH< Ret(Args...), Collector > orphan() -: entt::Registry< Entity > +: entt::Registry< Entity > orphans() : entt::ContinuousLoader< Entity > , entt::Registry< Entity > -, entt::SnapshotLoader< Entity > +, entt::SnapshotLoader< Entity > diff --git a/functions_p.html b/functions_p.html index da832dcab..daef86368 100644 --- a/functions_p.html +++ b/functions_p.html @@ -22,7 +22,7 @@@@ -63,13 +63,10 @@ $(function() { entt - 2.5.0 + 2.6.0- p -
diff --git a/functions_r.html b/functions_r.html index 49d49ef56..49503b74c 100644 --- a/functions_r.html +++ b/functions_r.html @@ -22,7 +22,7 @@
- pause() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- paused() -: entt::Process< Derived, Delta > -
-- persistent() -: entt::Registry< Entity > +: entt::Process< Derived, Delta >
- pos_type : entt::SparseSet< Entity > @@ -82,11 +79,8 @@ $(function() { : entt::ProcessAdaptor< Func, Delta >
- publish() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::Emitter< Derived > +: entt::Emitter< Derived > , entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)>
@@ -63,24 +63,20 @@ $(function() { entt - 2.5.0 + 2.6.0- r -
diff --git a/functions_s.html b/functions_s.html index ffbb2067c..5fa69f0df 100644 --- a/functions_s.html +++ b/functions_s.html @@ -22,7 +22,7 @@
- raw() -: entt::RawView< Entity, Component > -, entt::Registry< Entity > -, entt::SparseSet< Entity, Type > -, entt::View< Entity, Component > +: entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component >
- raw_type : entt::RawView< Entity, Component > , entt::View< Entity, Component >
- ref() -: entt::ServiceLocator< Service > -
-- reg() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > +: entt::ServiceLocator< Service >
- registry() -: entt::Actor< Entity, Delta > +: entt::Actor< Entity >
- Registry() : entt::Registry< Entity > @@ -93,49 +89,50 @@ $(function() { , entt::View< Entity, Component >
- registry_type -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > +, entt::Prototype< Entity >
- rejected() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- reload() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
- remove() -: entt::Registry< Entity > +: entt::Actor< Entity > +, entt::Registry< Entity >
- replace() -: entt::Registry< Entity > +: entt::Registry< Entity >
- reserve() -: entt::Registry< Entity > -, entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::Registry< Entity > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- reset() -: entt::Delegate< Ret(Args...)> -, entt::Registry< Entity > +: entt::Delegate< Ret(Args...)> +, entt::Registry< Entity > , entt::ServiceLocator< Service > , entt::SparseSet< Entity > , entt::SparseSet< Entity, Type > -, entt::View< Entity, Component >
- resource_type : entt::ResourceCache< Resource >
- ResourceCache() -: entt::ResourceCache< Resource > +: entt::ResourceCache< Resource >
- ResourceCache< Resource > : entt::ResourceHandle< Resource > , entt::ResourceLoader< Loader, Resource >
- ResourceHandle() -: entt::ResourceHandle< Resource > +: entt::ResourceHandle< Resource >
- respect() -: entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +: entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type >
- restore() : entt::Registry< Entity > diff --git a/functions_rela.html b/functions_rela.html index d65249db3..f31798bdf 100644 --- a/functions_rela.html +++ b/functions_rela.html @@ -22,7 +22,7 @@
+@@ -74,9 +74,11 @@ $(function() { : entt::ResourceHandle< Resource > , entt::ResourceLoader< Loader, Resource > entt - 2.5.0 + 2.6.0- SigH +: entt::Sink< Ret(Args...)> +
- swap : entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)>
@@ -63,7 +63,7 @@ $(function() { entt - 2.5.0 + 2.6.0- s -
diff --git a/functions_t.html b/functions_t.html index f1c0c10ee..468d0af53 100644 --- a/functions_t.html +++ b/functions_t.html @@ -22,7 +22,7 @@
- Scheduler() -: entt::Scheduler< Delta > +: entt::Scheduler< Delta >
- service_type : entt::ServiceLocator< Service > @@ -72,36 +72,42 @@ $(function() { : entt::ServiceLocator< Service >
- set() -: entt::Actor< Entity, Delta > -, entt::Registry< Entity > -, entt::ServiceLocator< Service > +: entt::Prototype< Entity > +, entt::ServiceLocator< Service >
- shrink() : entt::ContinuousLoader< Entity >
+- SigH +: entt::Sink< Ret(Args...)> +
+- sink() +: entt::Dispatcher +, entt::SigH< Ret(Args...), Collector > +
+- sink_type +: entt::Dispatcher +, entt::Registry< Entity > +, entt::SigH< Ret(Args...), Collector > +
- size() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::PersistentView< Entity, Component > -, entt::RawView< Entity, Component > -, entt::Registry< Entity > -, entt::ResourceCache< Resource > -, entt::Scheduler< Delta > -, entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -, entt::SparseSet< Entity > -, entt::View< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::Registry< Entity > +, entt::ResourceCache< Resource > +, entt::Scheduler< Delta > +, entt::SigH< Ret(Args...), Collector > +, entt::SparseSet< Entity > +, entt::View< Entity, Component >
- size_type -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::PersistentView< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > , entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::ResourceCache< Resource > , entt::Scheduler< Delta > , entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> , entt::SparseSet< Entity > , entt::SparseSet< Entity, Type > , entt::View< Entity, Component > @@ -109,22 +115,27 @@ $(function() {
- snapshot() : entt::Registry< Entity >
+- Snapshot() +: entt::Snapshot< Entity > +
+- SnapshotLoader() +: entt::SnapshotLoader< Entity > +
- sort() : entt::PersistentView< Entity, Component > -, entt::Registry< Entity > -, entt::SparseSet< Entity, Type > +, entt::Registry< Entity > +, entt::SparseSet< Entity, Type >
- SparseSet() : entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type >
- succeed() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- swap : entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> -, entt::SparseSet< Entity > +, entt::SparseSet< Entity >
@@ -63,10 +63,9 @@ $(function() { entt - 2.5.0 + 2.6.0- t -
diff --git a/functions_type.html b/functions_type.html index 60e58a777..a65774cb6 100644 --- a/functions_type.html +++ b/functions_type.html @@ -22,7 +22,7 @@
- tag() -: entt::ContinuousLoader< Entity > -, entt::Registry< Entity > -, entt::Snapshot< Entity > -, entt::SnapshotLoader< Entity > +: entt::ContinuousLoader< Entity > +, entt::Snapshot< Entity > +, entt::SnapshotLoader< Entity >
- tag_type : entt::Registry< Entity > @@ -75,13 +74,14 @@ $(function() { : entt::ResourceCache< Resource >
- tick() -: entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- trigger() -: entt::Dispatcher< Sig > +: entt::Dispatcher
- type() -: entt::Family<... > +: entt::Family<... > +, entt::Registry< Entity >
@@ -68,25 +68,32 @@ $(function() { entt - 2.5.0 + 2.6.0component_type : entt::Registry< Entity > +const_iterator_type +: entt::PersistentView< Entity, Component > +, entt::RawView< Entity, Component > +, entt::SparseSet< Entity > +, entt::SparseSet< Entity, Type > +, entt::View< Entity, Component > + - d -
- delta_type -: entt::Actor< Entity, Delta > -, entt::Process< Derived, Delta > +: entt::Process< Derived, Delta >
- e -
- entity_type -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > , entt::ContinuousLoader< Entity > , entt::entt_traits< std::uint16_t > , entt::entt_traits< std::uint32_t > , entt::entt_traits< std::uint64_t > , entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > , entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::SparseSet< Entity > @@ -113,13 +120,12 @@ $(function() {
- i -
@@ -153,7 +159,8 @@ $(function() { , entt::View< Entity, Component >
- instance_type : entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)>
- iterator_type : entt::PersistentView< Entity, Component > , entt::RawView< Entity, Component > , entt::SparseSet< Entity > -, entt::SparseSet< Entity, Type > +, entt::SparseSet< Entity, Type > , entt::View< Entity, Component >
- registry_type -: entt::Actor< Entity, Delta > +: entt::Actor< Entity > +, entt::Prototype< Entity >
- resource_type : entt::ResourceCache< Resource > @@ -165,16 +172,19 @@ $(function() {
- service_type : entt::ServiceLocator< Service >
+- sink_type +: entt::Dispatcher +, entt::Registry< Entity > +, entt::SigH< Ret(Args...), Collector > +
- size_type -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > -, entt::PersistentView< Entity, Component > +: entt::PersistentView< Entity, Component > +, entt::Prototype< Entity > , entt::RawView< Entity, Component > , entt::Registry< Entity > , entt::ResourceCache< Resource > , entt::Scheduler< Delta > , entt::SigH< Ret(Args...), Collector > -, entt::Signal< void(Args...)> , entt::SparseSet< Entity > , entt::SparseSet< Entity, Type > , entt::View< Entity, Component > diff --git a/functions_u.html b/functions_u.html index d63b3ce32..9ad45423e 100644 --- a/functions_u.html +++ b/functions_u.html @@ -22,7 +22,7 @@
@@ -63,20 +63,15 @@ $(function() { entt - 2.5.0 + 2.6.0- u -
diff --git a/functions_v.html b/functions_v.html index 4d53b7ad4..992b2bfa3 100644 --- a/functions_v.html +++ b/functions_v.html @@ -22,7 +22,7 @@
- unpause() -: entt::Process< Derived, Delta > -
-- unreg() -: entt::Bus< Sig, Event > -, entt::Bus< Sig, Event, Other... > +: entt::Process< Derived, Delta >
- unset() -: entt::Actor< Entity, Delta > +: entt::Prototype< Entity >
- update() -: entt::Actor< Entity, Delta > -, entt::Dispatcher< Sig > -, entt::ProcessAdaptor< Func, Delta > -, entt::Scheduler< Delta > +: entt::Dispatcher +, entt::ProcessAdaptor< Func, Delta > +, entt::Scheduler< Delta >
@@ -63,10 +63,10 @@ $(function() { entt - 2.5.0 + 2.6.0- v -
diff --git a/functions_vars.html b/functions_vars.html index 8d8584e51..b9d51cf91 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -22,7 +22,7 @@
- valid() -: entt::Registry< Entity > +: entt::Registry< Entity >
- version() -: entt::Registry< Entity > +: entt::Registry< Entity >
- version_mask : entt::entt_traits< std::uint16_t > @@ -80,7 +80,7 @@ $(function() { , entt::Registry< Entity >
- view() -: entt::Registry< Entity > +: entt::Registry< Entity >
diff --git a/graph_legend.html b/graph_legend.html index abf14bda5..3556ec8ad 100644 --- a/graph_legend.html +++ b/graph_legend.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0diff --git a/handle_8hpp_source.html b/handle_8hpp_source.html index bcdf61c4f..ebec37ae3 100644 --- a/handle_8hpp_source.html +++ b/handle_8hpp_source.html @@ -22,7 +22,7 @@ entt - 2.5.0 + 2.6.0@@ -67,12 +67,12 @@ $(function() { entt - 2.5.0 + 2.6.0handle.hpp-- -const Resource & get() const noexceptGets a reference to the managed resource.Definition: handle.hpp:59-const Resource & operator*() const noexceptDereferences a handle to obtain the managed resource.Definition: handle.hpp:84- - +const Resource * operator->() const noexceptGets a pointer to the managed resource from a handle .Definition: handle.hpp:97+const Resource & get() const ENTT_NOEXCEPTGets a reference to the managed resource.Definition: handle.hpp:60+ + +const Resource * operator->() const ENTT_NOEXCEPTGets a pointer to the managed resource from a handle .Definition: handle.hpp:98+const Resource & operator*() const ENTT_NOEXCEPTDereferences a handle to obtain the managed resource.Definition: handle.hpp:85
diff --git a/hashed__string_8hpp_source.html b/hashed__string_8hpp_source.html index e8a35a552..55ebdad95 100644 --- a/hashed__string_8hpp_source.html +++ b/hashed__string_8hpp_source.html @@ -22,7 +22,7 @@@@ -67,13 +67,13 @@ $(function() { entt - 2.5.0 + 2.6.0hashed_string.hpp-- - -constexpr HashedString(ConstCharWrapper wrapper) noexceptExplicit constructor on purpose to avoid constructing a hashed string directly from a const char *...Definition: hashed_string.hpp:65- -constexpr HashedString(const char(&str)[N]) noexceptConstructs a hashed string from an array of const chars.Definition: hashed_string.hpp:55-constexpr bool operator!=(const HashedString &lhs, const HashedString &rhs) noexceptCompares two hashed strings.Definition: hashed_string.hpp:102+constexpr bool operator==(const HashedString &other) const noexceptCompares two hashed strings.Definition: hashed_string.hpp:86+ +constexpr bool operator!=(const HashedString &lhs, const HashedString &rhs) ENTT_NOEXCEPTCompares two hashed strings.Definition: hashed_string.hpp:103+constexpr HashedString(ConstCharWrapper wrapper) ENTT_NOEXCEPTExplicit constructor on purpose to avoid constructing a hashed string directly from a const char *...Definition: hashed_string.hpp:66+ +constexpr bool operator==(const HashedString &other) const ENTT_NOEXCEPTCompares two hashed strings.Definition: hashed_string.hpp:87+constexpr HashedString(const char(&str)[N]) ENTT_NOEXCEPTConstructs a hashed string from an array of const chars.Definition: hashed_string.hpp:56
diff --git a/helper_8hpp_source.html b/helper_8hpp_source.html new file mode 100644 index 000000000..1df4e1a4f --- /dev/null +++ b/helper_8hpp_source.html @@ -0,0 +1,83 @@ + + + + + + + +entt: src/entt/entity/helper.hpp Source File + + + + + + + + + +++++ + + + + + + + ++ +
++ + ++ +entt + 2.6.0 ++++ + ++ ++ + +++++helper.hpp++ +30 accumulator_type accumulator = { ((registry.template has<Component>(entity) ? void() : (registry.template assign<Component>(entity), void())), 0)... };+ + + ++void dependency(Registry< Entity > ®istry, const Entity entity)Dependency function prototype.Definition: helper.hpp:28
+Generated by ++ 1.8.13 + + + diff --git a/hierarchy.html b/hierarchy.html index 69d8d00d7..1af1c97c1 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -22,7 +22,7 @@
@@ -67,50 +67,53 @@ $(function() { This inheritance list is sorted roughly, but not completely, alphabetically: entt - 2.5.0 + 2.6.0diff --git a/ident_8hpp_source.html b/ident_8hpp_source.html index aabf50179..48e2b43d4 100644 --- a/ident_8hpp_source.html +++ b/ident_8hpp_source.html @@ -22,7 +22,7 @@[detail level 12]-
- Centt::Actor< Entity, Delta > Dedicated to those who aren't confident with entity-component systems - Centt::Bus< class,... > Minimal event bus - ▼Centt::Bus< Sig, Event > Event bus specialization for a single type - Centt::Bus< Sig, Event, Other... > Event bus specialization for multiple types - ▼Centt::Bus< Sig, Other > - Centt::Bus< Sig, Event, Other... > Event bus specialization for multiple types - ▼Cconnection_type - Centt::Emitter< Derived >::Connection< Event > Generic connection type for events - Centt::ContinuousLoader< Entity > Utility class for continuous loading - Centt::Delegate< typename > Basic delegate implementation - Centt::Delegate< Ret(Args...)> Utility class to send around functions and member functions - Centt::Dispatcher< Sig > Basic dispatcher implementation - Centt::Emitter< Derived > General purpose event emitter - Centt::entt_traits< typename > Entity traits - Centt::entt_traits< std::uint16_t > Entity traits for a 16 bits entity identifier - Centt::entt_traits< std::uint32_t > Entity traits for a 32 bits entity identifier - Centt::entt_traits< std::uint64_t > Entity traits for a 64 bits entity identifier - Centt::Family<... > Dynamic identifier generator - ▼CFunc - Centt::ProcessAdaptor< Func, Delta > Adaptor for lambdas and functors to turn them into processes - Centt::HashedString Zero overhead resource identifier - Centt::PersistentView< Entity, Component > Persistent view - Centt::Process< Derived, Delta > Base class for processes - ▼Centt::Process< ProcessAdaptor< Func, Delta >, Delta > - Centt::ProcessAdaptor< Func, Delta > Adaptor for lambdas and functors to turn them into processes - Centt::RawView< Entity, Component > Raw view - Centt::Registry< Entity > Fast and reliable entity-component system - Centt::ResourceCache< Resource > Simple cache for resources of a given type - Centt::ResourceHandle< Resource > Shared resource handle - Centt::ResourceLoader< Loader, Resource > Base class for resource loaders - Centt::Scheduler< Delta > Cooperative scheduler for processes - Centt::ServiceLocator< Service > Service locator, nothing more - Centt::SigH< Function, Collector > Unmanaged signal handler declaration - Centt::SigH< Ret(Args...), Collector > Unmanaged signal handler definition - Centt::Signal< typename > Managed signal handler declaration - Centt::Signal< void(Args...)> Managed signal handler definition - Centt::Snapshot< Entity > Utility class to create snapshots from a registry - Centt::SnapshotLoader< Entity > Utility class to restore a snapshot as a whole - Centt::SparseSet<... > Sparse set - ▼Centt::SparseSet< Entity > Basic sparse set implementation - Centt::SparseSet< Entity, Type > Extended sparse set implementation - Centt::SparseSet< Entity, Component > - Centt::View< Entity, Component > Multi component view + Centt::View< Entity, Component > Single component view specialization + Centt::Actor< Entity > Dedicated to those who aren't confident with entity-component systems + Centt::break_t Break type used to disambiguate overloads + ▼Cconnection_type + Centt::Emitter< Derived >::Connection< Event > Generic connection type for events + Centt::ContinuousLoader< Entity > Utility class for continuous loading + Centt::Delegate< typename > Basic delegate implementation + Centt::Delegate< Ret(Args...)> Utility class to send around functions and member functions + Centt::Dispatcher Basic dispatcher implementation + Centt::Emitter< Derived > General purpose event emitter + Centt::entt_traits< typename > Entity traits + Centt::entt_traits< std::uint16_t > Entity traits for a 16 bits entity identifier + Centt::entt_traits< std::uint32_t > Entity traits for a 32 bits entity identifier + Centt::entt_traits< std::uint64_t > Entity traits for a 64 bits entity identifier + Centt::Family<... > Dynamic identifier generator + ▼CFunc + Centt::ProcessAdaptor< Func, Delta > Adaptor for lambdas and functors to turn them into processes + Centt::HashedString Zero overhead resource identifier + Centt::InsertionSort Function object for performing insertion sort + ▼CInvoker + Centt::SigH< Ret(Args...), Collector > Unmanaged signal handler definition + Centt::persistent_t Persistent view type used to disambiguate overloads + Centt::PersistentView< Entity, Component > Persistent view + Centt::Process< Derived, Delta > Base class for processes + ▼Centt::Process< ProcessAdaptor< Func, Delta >, Delta > + Centt::ProcessAdaptor< Func, Delta > Adaptor for lambdas and functors to turn them into processes + Centt::Prototype< Entity > Prototype container for concepts + Centt::raw_t Raw view type used to disambiguate overloads + Centt::RawView< Entity, Component > Raw view + Centt::Registry< Entity > Fast and reliable entity-component system + Centt::ResourceCache< Resource > Simple cache for resources of a given type + Centt::ResourceHandle< Resource > Shared resource handle + Centt::ResourceLoader< Loader, Resource > Base class for resource loaders + Centt::Scheduler< Delta > Cooperative scheduler for processes + Centt::ServiceLocator< Service > Service locator, nothing more + Centt::SigH< Function, Collector > Unmanaged signal handler declaration + Centt::SigH< void(const Event &)> + Centt::Sink< Function > Sink implementation + Centt::Sink< Ret(Args...)> Sink implementation + Centt::Snapshot< Entity > Utility class to create snapshots from a registry + Centt::SnapshotLoader< Entity > Utility class to restore a snapshot as a whole + Centt::SparseSet<... > Sparse set + ▼Centt::SparseSet< Entity > Basic sparse set implementation + Centt::SparseSet< Entity, Type > Extended sparse set implementation + Centt::StdSort Function object to wrap std::sortin a class type+ Centt::tag_t Tag class type used to disambiguate overloads + Centt::View< Entity, Component > Multi component view Centt::View< Entity, Component > Single component view specialization @@ -67,8 +67,8 @@ $(function() { entt - 2.5.0 + 2.6.0ident.hpp-90 constexpr auto ident = Identifier<std::decay_t<Types>...>{std::make_index_sequence<sizeof...(Types)>{}};- +
diff --git a/index.html b/index.html index bbc3b03b4..20438d518 100644 --- a/index.html +++ b/index.html @@ -22,7 +22,7 @@@@ -78,6 +78,10 @@ Table of Contents entt - 2.5.0 + 2.6.0- Vademecum
- The Registry, the Entity and the Component
+
- Single instance components
+- Observe changes +
- Runtime components @@ -90,6 +94,11 @@ Table of Contents
- One example to rule them all
- Prototype
+- Helpers +
- View: to persist or not to persist?
@@ -124,12 +133,13 @@ Table of Contents
- Crash Course: events, signals and everything in between
+- Packaging Tools
+- EnTT in Action
- License
- Support
-
- Donation
@@ -162,12 +172,12 @@ State of the art
- Statically generated integer identifiers for types (assigned either at compile-time or at runtime).
- A constexpr utility for human readable resource identifiers.
-- An incredibly fast entity-component system based on sparse sets, with its own views and a pay for what you use policy to adjust performance and memory usage according to the users' requirements.
+- An incredibly fast entity-component system based on sparse sets, with its own views and a pay for what you use policy to adjust performance and memory usage according to users' requirements.
- Actor class for those who aren't confident with entity-component systems.
- The smallest and most basic implementation of a service locator ever seen.
- A cooperative scheduler for processes of any type.
- All what is needed for resource management (cache, loaders, handles).
-- Signal handlers of any type, delegates and an event bus.
+- Delegates, signal handlers (with built-in support for collectors) and a tiny event dispatcher.
- A general purpose event emitter, that is a CRTP idiom based class template.
- An event dispatcher for immediate and delayed events to integrate in loops.
- ...
@@ -177,7 +187,7 @@ State of the art Continue reading to know how the different parts of the project work or follow the link above to take a look at the API reference.Code Example
-#include <entt/entt.hpp>#include <cstdint>struct Position {float x;float y;};struct Velocity {float dx;float dy;};void update(entt::DefaultRegistry ®istry) {auto view = registry.view<Position, Velocity>();for(auto entity: view) {// gets only the components that are going to be used ...auto &velocity = view.get<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;// ...}}void update(std::uint64_t dt, entt::DefaultRegistry ®istry) {// gets all the components of the view at once ...position.x += velocity.dx * dt;position.y += velocity.dy * dt;// ...});}int main() {entt::DefaultRegistry registry;std::uint64_t dt = 16;for(auto i = 0; i < 10; ++i) {auto entity = registry.create(Position{i * 1.f, i * 1.f});if(i % 2 == 0) { registry.assign<Velocity>(entity, i * .1f, i * .1f); }}update(dt, registry);update(registry);// ...}+
#include <entt/entt.hpp>#include <cstdint>struct Position {float x;float y;};struct Velocity {float dx;float dy;};void update(entt::DefaultRegistry ®istry) {auto view = registry.view<Position, Velocity>();for(auto entity: view) {// gets only the components that are going to be used ...auto &velocity = view.get<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;// ...}}void update(std::uint64_t dt, entt::DefaultRegistry ®istry) {// gets all the components of the view at once ...position.x += velocity.dx * dt;position.y += velocity.dy * dt;// ...});}int main() {entt::DefaultRegistry registry;std::uint64_t dt = 16;for(auto i = 0; i < 10; ++i) {auto entity = registry.create();registry.assign<Position>(entity, i * 1.f, i * 1.f);if(i % 2 == 0) { registry.assign<Velocity>(entity, i * .1f, i * .1f); }}update(dt, registry);update(registry);// ...}Motivation
I started working on
@@ -190,9 +200,9 @@ PerformanceEnTTbecause of the wrong reason: my goal was to design an entity-component system that beated another well known open source solution in terms of performance and used (possibly) less memory in the average case.
In the end, I did it, but it wasn't much satisfying. Actually it wasn't satisfying at all. The fastest and nothing more, fairly little indeed. When I realized it, I tried hard to keep intact the great performance ofEnTTand to add all the features I wanted to see in my own library at the same time.Benchmark EntityX (compile-time) EnTT - +Create 1M entities 0.0167s 0.0046s Create 1M entities 0.0147s 0.0046s - +Destroy 1M entities 0.0053s 0.0039s Destroy 1M entities 0.0053s 0.0045s Standard view, 1M entities, one component 0.0012s 1.9e-07s @@ -227,12 +237,18 @@ Arrays are in reverse order - 0.0036s + Sort 150k entities, enforce permutation
Arrays are in reverse order- 0.0005s + +Sort 150k entities, one component
+Arrays are almost sorted, std::sort- 0.0035s + Sort 150k entities, one component
+Arrays are almost sorted, insertion sort- 0.0007s Note: The default version of
EntityX(masterbranch) wasn't added to the comparison because it's already much slower than its compile-time counterpart.Pretty interesting, aren't them? In fact, these benchmarks are the same used by
-EntityXto show how fast it is. To be honest, they aren't so good and these results shouldn't be taken much seriously (they are completely unrealistic indeed).
- The proposed entity-component system is incredibly fast to iterate entities, this is a fact. The compiler can make a lot of optimizations because of howEnTTworks, even more when components aren't used at all. This is exactly the case for these benchmarks.
+ The proposed entity-component system is incredibly fast to iterate entities, this is a fact. The compiler can make a lot of optimizations because of howEnTTworks, even more when components aren't used at all. This is exactly the case for these benchmarks. On the other hand and if we consider real world cases,EnTTis in the middle between a bit and much faster than the other solutions around when users also access the components and not just the entities, although it is not as fast as reported by these benchmarks.
This is why they are completely wrong and cannot be used to evaluate any of the entity-component systems.If you decide to use
+EnTT, choose it because of its API and its performance, not because there is a benchmark somewhere that makes it seem the fastest.If you decide to use
EnTT, choose it because of its API, features and performance, not because there is a benchmark somewhere that makes it seem the fastest.Probably I'll try to get out of
EnTTmore features and even better performance in the future, mainly for fun.
If you want to contribute and/or have any suggestion, feel free to make a PR or open an issue to discuss your idea.@@ -292,22 +308,25 @@ Vademecum
The
Registryto store, the views to iterate. That's all.An entity (the E of an ECS) is an opaque identifier that users should just use as-is and store around if needed. Do not try to inspect an entity identifier, its format can change in future and a registry offers all the functionalities to query them out-of-the-box. The underlying type of an entity (either
+ Systems (the S of an ECS) are just plain functions, functors, lambdas or whatever users want. They can accept astd::uint16_t,std::uint32_torstd::uint64_t) can be specified when defining a registry (actually theDefaultRegistryis nothing more than aRegistrywhere the type of the entities isstd::uint32_t).
Components (the C of an ECS) should be plain old data structures or more complex and movable data structures with a proper constructor. Actually, the sole requirement of a component type is that it must be both move constructible and move assignable. They are list initialized by using the parameters provided to construct the component itself. No need to register components or their types neither with the registry nor with the entity-component system at all.
- Systems (the S of an ECS) are just plain functions, functors, lambdas or whatever the users want. They can accept aRegistryor a view of any type and use them the way they prefer. No need to register systems or their types neither with the registry nor with the entity-component system at all.Registryor a view of any type and use them the way they prefer. No need to register systems or their types neither with the registry nor with the entity-component system at all.The following sections will explain in short how to use the entity-component system, the core part of the whole framework.
+ In fact, the framework is composed of many other classes in addition to those describe below. For more details, please refer to the inline documentation.
- In fact, the framework is composed of many other classes in addition to those describe below. For more details, please refer to the online documentation.The Registry, the Entity and the Component
A registry can store and manage entities, as well as create views to iterate the underlying data structures.
+
-Registryis a class template that lets the users decide what's the preferred type to represent an entity. Becausestd::uint32_tis large enough for almost all the cases, there exists also an alias namedDefaultRegistryforRegistry<std::uint32_t>.Registryis a class template that lets users decide what's the preferred type to represent an entity. Becausestd::uint32_tis large enough for almost all the cases, there exists also an alias namedDefaultRegistryforRegistry<std::uint32_t>.Entities are represented by entity identifiers. An entity identifier is an opaque type that users should not inspect or modify in any way. It carries information about the entity itself and its version.
-A registry can be used both to construct and to destroy entities:
-// constructs a naked entity with no components and returns its identifierauto entity = registry.create();// constructs an entity and assigns it default-initialized componentsauto another = registry.create<Position, Velocity>();// destroys an entity and all its componentsregistry.destroy(entity);Once an entity is deleted, the registry can freely reuse it internally with a slightly different identifier. In particular, the version of an entity is increased each and every time it's destroyed.
+A registry can be used both to construct and destroy entities, as well as to clone already existing entities:
+// constructs a naked entity with no components and returns its identifierauto entity = registry.create();// clones an entity and assigns all its components by copy to the newly created oneauto other = registry.clone(entity);// destroys an entity and all its componentsregistry.destroy(entity);Be aware that cloning an entity can lead to unexpected results under certain conditions. Please refer to the inline documentation for more details.
-
+ Once an entity is deleted, the registry can freely reuse it internally with a slightly different identifier. In particular, the version of an entity is increased each and every time it's destroyed.
In case entity identifiers are stored around, the registry offers all the functionalities required to test them and get out of the them all the information they carry:// returns true if the entity is still valid, false otherwisebool b = registry.valid(entity);// gets the version contained in the entity identifierauto version = registry.version(entity);// gets the actual version for the given entityauto curr = registry.current(entity);Components can be assigned to or removed from entities at any time with a few calls to member functions of the registry. As for the entities, the registry offers also a set of functionalities users can use to work with the components.
+// returns true if the entity is still valid, false otherwisebool b = registry.valid(entity);// gets the version contained in the entity identifierauto version = registry.version(entity);// gets the actual version for the given entityauto curr = registry.current(entity);Finally, there is also a sort of null identifier made available to users. It's treated as if it were a null pointer that doesn't identify any entity. A registry will reject this identifier in all cases because it isn't considered valid.
+
+ The rules that define a null identifier are a bit tricky to explain. However, beingEntitythe type of the entities (for example,std::uint32_t), users can easily construct a null identifier by flipping all the bits of the zero:using Entity = std::uint32_t;const auto null = ~Entity{};Components can be assigned to or removed from entities at any time with a few calls to member functions of the registry. As for the entities, the registry offers also a set of functionalities users can use to work with the components.
The
assignmember function template creates, initializes and assigns to an entity the given component. It accepts a variable number of arguments to construct the component itself if present:registry.assign<Position>(entity, 0., 0.);// ...Velocity &velocity = registry.assign<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;If an entity already has the given component, the
replacemember function template can be used to replace it:registry.replace<Position>(entity, 0., 0.);// ...Velocity &velocity = registry.replace<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;In case users want to assign a component to an entity, but it's unknown whether the entity already has it or not,
-accommodatedoes the work in a single call (there is a performance penalty to pay for this mainly due to the fact that it has to check if the entity already has the given component or not):registry.accommodate<Position>(entity, 0., 0.);// ...Velocity &velocity = registry.accommodate<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;Note that
+accommodateis a slightly faster alternative for the followingif/elsestatement and nothing more:registry.accommodate<Position>(entity, 0., 0.);// ...Velocity &velocity = registry.accommodate<Velocity>(entity);velocity.dx = 0.;velocity.dy = 0.;Note that
accommodateis a slightly faster alternative for the followingif/elsestatement and nothing more:if(registry.has<Comp>(entity)) {registry.replace<Comp>(entity, arg1, argN);} else {registry.assign<Comp>(entity, arg1, argN);}As already shown, if in doubt about whether or not an entity has one or more components, the
hasmember function template may be useful:bool b = registry.has<Position, Velocity>(entity);On the other side, if the goal is to delete a single component, the
removemember function template is the way to go when it's certain that the entity owns a copy of the component:registry.remove<Position>(entity);Otherwise consider to use the
@@ -324,23 +343,49 @@ The Registry, the Entity and the Component Single instance componentsresetmember function. It behaves similarly toremovebut with a strictly defined behavior (and a performance penalty is the price to pay for this). In particular it removes the component if and only if it exists, otherwise it returns safely to the caller:In those cases where all what is needed is a single instance component, tags are the right tool to achieve the purpose.
+ Actually, the same type can be used both as a tag and as a component and the registry will not complain about it. It is up to users to properly manage their own types. In some cases, the tag
Tags undergo the same requirements of components. They can be either plain old data structures or more complex and movable data structures with a proper constructor.
- Actually, the same type can be used both as a tag and as a component and the registry will not complain about it. It is up to the users to properly manage their own types.tag_tmust also be used in order to disambiguate overloads of member functions.Attaching tags to entities and removing them is trivial:
-auto player = registry.create();auto camera = registry.create();// attaches a default-initialized tag to an entityregistry.attach<PlayingCharacter>(player);// attaches a tag to an entity and initializes itregistry.attach<Camera>(camera, player);// removes tags from their ownersregistry.remove<PlayingCharacter>();registry.remove<Camera>();In case a tag already has an owner, its content can be updated by means of the
-setmember function template and the ownership of the tag can be transferred to another entity using themovemember function template:// replaces the content of the given tagPoint &point = registry.set<Point>(1.f, 1.f);// transfers the ownership of the tag to another entityentity_type prev = registry.move<Point>(next);If in doubt about whether or not a tag already has an owner, the
+hasmember function template may be useful:auto player = registry.create();auto camera = registry.create();// attaches a default-initialized tag to an entityregistry.assign<PlayingCharacter>(entt::tag_t{}, player);// attaches a tag to an entity and initializes itregistry.assign<Camera>(entt::tag_t{}, camera, player);// removes tags from their ownersregistry.remove<PlayingCharacter>();registry.remove<Camera>();In case a tag already has an owner, its content can be updated by means of the
+replacemember function template and the ownership of the tag can be transferred to another entity using themovemember function template:// replaces the content of the given tagPoint &point = registry.replace<Point>(entt::tag_t{}, 1.f, 1.f);// transfers the ownership of the tag to another entityentity_type prev = registry.move<Point>(next);If in doubt about whether or not a tag already has an owner, the
hasmember function template may be useful:bool b = registry.has<PlayingCharacter>();References to tags can be retrieved simply by doing this:
const auto &cregistry = registry;// either a non-const reference ...PlayingCharacter &player = registry.get<PlayingCharacter>();// ... or a const oneconst Camera &camera = cregistry.get<Camera>();The
getmember function template gives direct access to the tag as stored in the underlying data structures of the registry.As shown above, in almost all the cases the entity identifier isn't required. Since a single instance component can have only one associated entity, it doesn't make much sense to mention it explicitly.
To find out who the owner is, just do the following:auto player = registry.attachee<PlayingCharacter>();Note that iterating tags isn't possible for obvious reasons. Tags give direct access to single entities and nothing more.
+Observe changes
+Because of how the registry works internally, it stores a couple of signal handlers for each pool in order to notify some of its data structures on the construction and destruction of components.
+
+ These signal handlers are also exposed and made available to users. This is the basic brick to build fancy things like dependencies and reactive systems.To get a sink to be used to connect and disconnect listeners so as to be notified on the creation of a component, use the
+constructionmember function:// connects a free functionregistry.construction<Position>().connect<&MyFreeFunction>();// connects a member functionregistry.construction<Position>().connect<MyClass, &MyClass::member>(&instance);// disconnects a free functionregistry.construction<Position>().disconnect<&MyFreeFunction>();// disconnects a member functionregistry.construction<Position>().disconnect<MyClass, &MyClass::member>(&instance);To be notified when components are destroyed, use the
+destructionmember function instead.The function type of a listener is the same in both cases:
+void(Registry<Entity> &, Entity);In other terms, a listener is provided with the registry that triggered the notification and the entity affected by the change. Note also that:
++
+- Listeners are invoked after components have been assigned to entities.
+- Listeners are invoked before components have been removed from entities.
+- The order of invocation of the listeners isn't guaranteed in any case.
+There are also some limitations on what a listener can and cannot do. In particular:
++
+- Connecting and disconnecting other functions from within the body of a listener should be avoided. It can lead to undefined behavior in some cases.
+- Assigning and removing components and tags from within the body of a listener that observes the destruction of instances of a given type should be avoided. It can lead to undefined behavior in some cases. This type of listeners is intended to provide users with an easy way to perform cleanup and nothing more.
+To a certain extent, these limitations do not apply. However, it is risky to try to force them and users should respect the limitations unless they know exactly what they are doing. Subtle bugs are the price to pay in case of errors otherwise.
+In general, events and therefore listeners must not be used as replacements for systems. They should not contain much logic and interactions with a registry should be kept to a minimum, if possible. Note also that the greater the number of listeners, the greater the performance hit when components are created or destroyed.
++Who let the tags out?
+As an extension, signals are also provided with tags. Although they are not strictly required internally, it makes sense that a user expects signal support even when it comes to tags actually.
+
+ Signals for tags undergo exactly the same requirements of those introduced for components. Also the function type for a listener is the same and it's invoked with the same guarantees discussed above.To get the sinks for a tag just use tag
+tag_tto disambiguate overloads of member functions as in the following example:registry.construction<MyTag>(entt::tag_t{}).connect<&MyFreeFunction>();registry.destruction<MyTag>(entt::tag_t{}).connect<MyClass, &MyClass::member>(&instance);Listeners for tags and components are managed separately and do not influence each other in any case. Therefore, note that the greater the number of listeners for a type, the greater the performance hit when a tag of the given type is created or destroyed.
+Runtime components
Defining components at runtime is useful to support plugins and mods in general. However, it seems impossible with a tool designed around a bunch of templates. Indeed it's not that difficult.
Of course, some features cannot be easily exported into a runtime environment. As an example, sorting a group of components defined at runtime isn't for free if compared to most of the other operations. However, the basic functionalities of an entity-component system such asEnTTfit the problem perfectly and can also be used to manage runtime components if required.
All that is necessary to do it is to know the identifiers of the components. An identifier is nothing more than a number or similar that can be used at runtime to work with the type system.In
-EnTT, identifiers are easily accessible:entt::DefaultRegistry registry;// standard component identifierauto ctype = registry.component<Position>();// single instance component identifierauto ttype = registry.tag<PlayingCharacter>();Once the identifiers are made available, almost everything becomes pretty simple.
-+
entt::DefaultRegistry registry;// standard component identifierauto ctype = registry.component<Position>();// single instance component identifierauto ttype = registry.tag<PlayingCharacter>();Once the identifiers are made available, almost everything becomes pretty simple.
+A journey through a plugin
EnTTcomes with an example (actually a test) that shows how to integrate compile-time and runtime components in a stack based JavaScript environment. It usesDuktapeunder the hood, mainly because I wanted to learn how it works at the time I was writing the code.The code is not production-ready and overall performance can be highly improved. However, I sacrificed optimizations in favor of a more readable piece of code. I hope I succeeded.
@@ -349,80 +394,107 @@ A journey through a pluginThe basic idea is that of creating a compile-time component aimed to map all the runtime components assigned to an entity.
-
Identifiers come in use to address the right function from a map when invoked from the runtime environment and to filter entities when iterating.
With a bit of gymnastic, one can narrow views and improve the performance to some extent but it was not the goal of the example.+
Sorting: is it possible?
It goes without saying that sorting entities and components is possible with
EnTT.
In fact, there are two functions that respond to slightly different needs:-
- Components can be sorted directly:
+
-There exists also the possibility to use a custom sort function object, as long as it adheres to the requirements described in the inline documentation.
+
+ This is possible mainly because users can get much more with a custom sort function object if the pattern of usage is known. As an example, in case of an almost sorted pool, quick sort could be much, much slower than insertion sort.-
- Components can be sorted according to the order imposed by another component:
registry.sort<Movement, Physics>();In this case, instances of
-Movementare arranged in memory so that cache misses are minimized when the two components are iterated together.+
registry.sort<Movement, Physics>();In this case, instances of
+Movementare arranged in memory so that cache misses are minimized when the two components are iterated together.Snapshot: complete vs continuous
The
+ It doesn't convert components and tags to bytes directly, there wasn't the need of another tool for serialization out there. Instead, it accepts an opaque object with a suitable interface (namely an archive) to serialize its internal data structures and restore them later. The way types and instances are converted to a bunch of bytes is completely in charge to the archive and thus to final users.Registryclass offers basic support to serialization.
- It doesn't convert components and tags to bytes directly, there wasn't the need of another tool for serialization out there. Instead, it accepts an opaque object with a suitable interface (namely an archive) to serialize its internal data structures and restore them later. The way types and instances are converted to a bunch of bytes is completely in charge to the archive and thus to the users.The goal of the serialization part is to allow users to make both a dump of the entire registry or a narrower snapshot, that is to select only the components and the tags in which they are interested.
Intuitively, the use cases are different. As an example, the first approach is suitable for local save/restore functionalities while the latter is suitable for creating client-server applications and for transferring somehow parts of the representation side to side.To take a snapshot of the registry, use the
snapshotmember function. It returns a temporary object properly initialized to save the whole registry or parts of it.Example of use:
OutputArchive output;registry.snapshot().entities(output).destroyed(output).component<AComponent, AnotherComponent>(output).tag<MyTag>(output);It isn't necessary to invoke all these functions each and every time. What functions to use in which case mostly depends on the goal and there is not a golden rule to do that.
-The
entitiesmember function asks to the registry to serialize all the entities that are still in use along with their versions. On the other side, thedestroyedmember function tells to the registry to serialize the entities that have been destroyed and are no longer in use.
+The
entitiesmember function asks the registry to serialize all the entities that are still in use along with their versions. On the other side, thedestroyedmember function tells to the registry to serialize the entities that have been destroyed and are no longer in use.
These two functions can be used to save and restore the whole set of entities with the versions they had during serialization.The
componentmember function is a function template the aim of which is to store aside components. The presence of a template parameter list is a consequence of a couple of design choices from the past and in the present:-
-- First of all, there is no reason to force an user to serialize all the components at once and most of the times it isn't desiderable. As an example, in case the stuff for the HUD in a game is put into the registry for some reasons, its components can be freely discarded during a serialization step because probably the software already knows how to reconstruct the HUD correctly from scratch.
+- First of all, there is no reason to force a user to serialize all the components at once and most of the times it isn't desiderable. As an example, in case the stuff for the HUD in a game is put into the registry for some reasons, its components can be freely discarded during a serialization step because probably the software already knows how to reconstruct the HUD correctly from scratch.
- Furthermore, the registry makes heavy use of type-erasure techniques internally and doesn't know at any time what types of components it contains. Therefore being explicit at the call point is mandatory.
The
tagmember function is similar to the previous one, apart from the fact that it works with tags and not with components.
+There exists also another version of the
+componentmember function that accepts a range of entities to serialize. This version is a bit slower than the other one, mainly because it iterates the range of entities more than once for internal purposes. However, it can be used to filter out those entities that shouldn't be serialized for some reasons.
+ As an example:OutputArchive output;registry.snapshot().component<AComponent, AnotherComponent>(output, view.cbegin(), view.cend());The
tagmember function is similar to the previous one, apart from the fact that it works with tags and not with components.
Note also that bothcomponentandtagstore items along with entities. It means that they work properly without a call to theentitiesmember function.Once a snapshot is created, there exist mainly two ways to load it: as a whole and in a kind of continuous mode.
-
The following sections describe both loaders and archives in details.+
Snapshot loader
A snapshot loader requires that the destination registry be empty and loads all the data at once while keeping intact the identifiers that the entities originally had.
To do that, the registry offers a member function namedrestorethat returns a temporary object properly initialized to restore a snapshot.Example of use:
-InputArchive input;registry.restore().entities().destroyed().component<AComponent, AnotherComponent>(output).tag<MyTag>(output).orphans();It isn't necessary to invoke all these functions each and every time. What functions to use in which case mostly depends on the goal and there is not a golden rule to do that. For obvious reasons, what is important is that the data are restored in exactly the same order in which they were serialized.
+InputArchive input;registry.restore().entities(input).destroyed(input).component<AComponent, AnotherComponent>(input).tag<MyTag>(input).orphans();It isn't necessary to invoke all these functions each and every time. What functions to use in which case mostly depends on the goal and there is not a golden rule to do that. For obvious reasons, what is important is that the data are restored in exactly the same order in which they were serialized.
The
entitiesanddestroyedmember functions restore the sets of entities and the versions that the entities originally had at the source.The
componentmember function restores all and only the components specified and assigns them to the right entities. Note that the template parameter list must be exactly the same used during the serialization. The same applies to thetagmember function.The
-orphansmember function literally destroys those entities that have neither components nor tags. It's usually useless if the snapshot is a full dump of the source. However, in case all the entities are serialized but only few components and tags are saved, it could happen that some of the entities have neither components nor tags once restored. The best users can do to deal with them is to destroy those entities and thus update their versions.+
Continuous loader
-A continuous loader is designed to load data from a source registry to a (possibly) non-empty destination. The loader can accomodate in a registry more than one snapshot in a sort of continuous loading that updates the destination one step at a time.
+A continuous loader is designed to load data from a source registry to a (possibly) non-empty destination. The loader can accommodate in a registry more than one snapshot in a sort of continuous loading that updates the destination one step at a time.
Identifiers that entities originally had are not transferred to the target. Instead, the loader maps remote identifiers to local ones while restoring a snapshot. Because of that, this kind of loader offers a way to update automatically identifiers that are part of components or tags (as an example, as data members or gathered in a container).
Another difference with the snapshot loader is that the continuous loader does not need to work with the private data structures of a registry. Furthermore, it has an internal state that must persist over time. Therefore, there is no reason to create it by means of a registry, or to limit its lifetime to that of a temporary object.Example of use:
-entt::ContinuousLoader<entity_type> loader{registry};InputArchive input;loader.entities(input).destroyed(input).component<AComponent, AnotherComponent>(input).component<DirtyComponent>(input, &DirtyComponent::parent, &DirtyComponent::child).tag<MyTag>(input).tag<DirtyTag>(input, &DirtyTag::container).orphans().shrink();It isn't necessary to invoke all these functions each and every time. What functions to use in which case mostly depends on the goal and there is not a golden rule to do that. For obvious reasons, what is important is that the data are restored in exactly the same order in which they were serialized.
+entt::ContinuousLoader<entity_type> loader{registry};InputArchive input;loader.entities(input).destroyed(input).component<AComponent, AnotherComponent, DirtyComponent>(input, &DirtyComponent::parent, &DirtyComponent::child).tag<MyTag, DirtyTag>(input, &DirtyTag::container).orphans().shrink();It isn't necessary to invoke all these functions each and every time. What functions to use in which case mostly depends on the goal and there is not a golden rule to do that. For obvious reasons, what is important is that the data are restored in exactly the same order in which they were serialized.
The
entitiesanddestroyedmember functions restore groups of entities and map each entity to a local counterpart when required. In other terms, for each remote entity identifier not yet registered by the loader, the latter creates a local identifier so that it can keep the local entity in sync with the remote one.The
-componentandtagmember functions restore all and only the components and the tags specified and assign them to the right entities.
- In case the component or the tag contains entities itself (either as data members of typeentity_typeor as containers of entities), the loader can update them automatically. To do that, it's enough to specify the data members to update as shown in the example. If the component or the tag was in the middle of the template parameter list during serialization, multiple commands are required during a restore:registry.snapshot().component<ASimpleComponent, AnotherSimpleComponent, AMoreComplexComponent, TheLastComponent>();// ...loader.component<ASimpleComponent, AnotherSimpleComponent>(input).component<AMoreComplexComponent>(input, &AMoreComplexComponent::entity);.component<TheLastComponent>(input);The
+ In case the component or the tag contains entities itself (either as data members of typeorphansmember function literally destroys those entities that have neither components nor tags after a restore. It has exactly the same purpose described in the previous section and works the same way.entity_typeor as containers of entities), the loader can update them automatically. To do that, it's enough to specify the data members to update as shown in the example. +The
orphansmember function literally destroys those entities that have neither components nor tags after a restore. It has exactly the same purpose described in the previous section and works the same way.Finally,
-shrinkhelps to purge local entities that no longer have a remote conterpart. Users should invoke this member function after restoring each snapshot, unless they know exactly what they are doing.+
Archives
-Archives must publicly expose a predefined set of member functions. The API is straightforward and consists only of a group of function call operators that are invoked by the registry.
+Archives must publicly expose a predefined set of member functions. The API is straightforward and consists only of a group of function call operators that are invoked by the snapshot class and the loaders.
In particular:
-
- An output archive, the one used when creating a snapshot, must expose a function call operator with the following signature to store entities:
void operator()(Entity);Where
-Entityis the type of the entities used by the registry.
- In addition, it must accept the types of both the components and the tags to serialize. Therefore, given a typeT(either a component or a tag), it must contain a function call operator with the following signature:void operator()(const T &);The output archive can freely decide how to serialize the data. The register is not affected at all by the decision.
+void operator()(Entity);Where
+Entityis the type of the entities used by the registry. Note that all the member functions of the snapshot class make also an initial call to this endpoint to save the size of the set they are going to store.
+ In addition, an archive must accept a pair of entity and either component or tag for each type to be serialized. Therefore, given a typeT, the archive must contain a function call operator with the following signature:void operator()(Entity, const T &);The output archive can freely decide how to serialize the data. The register is not affected at all by the decision.
-
- An input archive, the one used when restoring a snapshot, must expose a function call operator with the following signature to load entities:
void operator()(Entity &);Where
-Entityis the type of the entities used by the registry. Each time the function is invoked, the archive must read the next element from the underlying storage and copy it in the given variable.
- In addition, it must accept the types of both the components and the tags to restore. Therefore, given a typeT(either a component or a tag), it must contain a function call operator with the following signature:void operator()(T &);Every time such an operator is invoked, the archive must read the next element from the underlying storage and copy it in the given variable.
-+
void operator()(Entity &);Where
+Entityis the type of the entities used by the registry. Each time the function is invoked, the archive must read the next element from the underlying storage and copy it in the given variable. Note that all the member functions of a loader class make also an initial call to this endpoint to read the size of the set they are going to load.
+ In addition, the archive must accept a pair of entity and either component or tag for each type to be restored. Therefore, given a typeT, the archive must contain a function call operator with the following signature:void operator()(Entity &, T &);Every time such an operator is invoked, the archive must read the next elements from the underlying storage and copy them in the given variables.
+One example to rule them all
EnTTcomes with some examples (actually some tests) that show how to integrate a well known library for serialization as an archive. It usesCereal C++under the hood, mainly because I wanted to learn how it works at the time I was writing the code.The code is not production-ready and it isn't neither the only nor (probably) the best way to do it. However, feel free to use it at your own risk.
The basic idea is to store everything in a group of queues in memory, then bring everything back to the registry with different loaders.
-+
+Prototype
+A prototype defines a type of an application in terms of its parts. They can be used to assign components to entities of a registry at once.
+
+ Roughly speaking, in most cases prototypes can be considered just as templates to use to initialize entities according to concepts. In fact, users can create how many prototypes they want, each one initialized differently from the others.The following is an example of use of a prototype:
+entt::DefaultPrototype prototype;prototype.set<Position>(100.f, 100.f);prototype.set<Velocity>(0.f, 0.f);// ...entt::DefaultRegistry registry;const auto entity = prototype(registry);To assign and remove components from a prototype, it offers two dedicated member functions named
+setandunset. Thehasmember function can be used to know if a given prototype contains one or more components and thegetmember function can be used to retrieve the components.Creating an entity from a prototype is straightforward:
++
+- To create a new entity from scratch and assign it a prototype, this is the way to go:
+It is equivalent to the following invokation:const auto entity = prototype(registry);- In case we want to initialize an already existing entity, we can provide the
+operator()directly with the entity identifier:It is equivalent to the following invokation:prototype(registry, entity);Note that existing components aren't overwritten in this case. Only those components that the entity doesn't own yet are copied over. All the other components remain unchanged.prototype.assign(registry, entity);- Finally, to assign or replace all the components for an entity, thus overwriting existing ones:
+prototype.accommodate(registry, entity);Prototypes are a very useful tool that can save a lot of typing sometimes. Furthermore, the codebase may be easier to maintain, since updating a prototype is much less error prone than jumping around in the codebase to update all the snippets copied and pasted around to initialize entities and components.
++Helpers
+The so called helpers are small classes and functions mainly designed to offer built-in support for the most basic functionalities.
+
+ The list of helpers will grow longer as time passes and new ideas come out.+Dependency function
+A dependency function is a predefined listener, actually a function template to use to automatically assign components to an entity when a type has a dependency on some other types.
+
+ The following adds componentsATypeandAnotherTypewheneverMyTypeis assigned to an entity:entt::dependency<AType, AnotherType>(registry.construction<MyType>());A component is assigned to an entity and thus default initialized only in case the entity itself hasn't it yet. It means that already existent components won't be overriden.
+
+ A dependency can easily be broken by means of the same function template:entt::dependency<AType, AnotherType>(entt::break_t{}, registry.construction<MyType>());View: to persist or not to persist?
First of all, it is worth answering an obvious question: why views?
Roughly speaking, they are a good tool to enforce single responsibility. A system that has access to a registry can create and destroy entities, as well as assign and remove components. On the other side, a system that has access to a view can only iterate entities and their components, then read or update the data members of the latter.
@@ -445,7 +517,7 @@ View: to persist or not to persist?Persistent views:
Pros:
- Once prepared, creating and destroying them isn't expensive at all because they don't have any type of initialization.
-- They are the best tool for iterating entities for mmultiple components and most entities have them all.
+- They are the best tool for iterating entities for multiple components when most entities have them all.
Cons:
- They have dedicated data structures and thus affect the memory usage to a minimal extent.
@@ -466,81 +538,86 @@ View: to persist or not to persist?To sum up and as a rule of thumb:
+
To sum up and as a rule of thumb:
+
- Use a raw view to iterate components only (no entities) for a given type.
-- Use a standard view to iterate entities for a single component.
-- Use a standard view to iterate entities for multiple components when a significantly low number of entities have one of the components.
+- Use a standard view to iterate entities and components for a single type.
+- Use a standard view to iterate entities and components for multiple types when the number of types is low. Standard views are really optimized and persistent views won't add much in this case.
+- Use a standard view to iterate entities and components for multiple types when a significantly low number of entities have one of the components.
- Use a standard view in all those cases where a persistent view would give a boost to performance but the iteration isn't performed frequently.
-- Prepare and use a persistent view in all the other cases.
+- Prepare and use a persistent view when you want to iterate only entities for multiple components.
+- Prepare and use a persistent view when you want to iterate entities for multiple components and each component is assigned to a great number of entities but the intersection between the sets of entities is small.
+- Prepare and use a persistent view in all the cases where a standard view wouldn't fit well otherwise.
To easily iterate entities and components, all the views offer the common
-beginandendmember functions that allow users to use a view in a typical range-for loop. Almost all the views offer also a more functionaleachmember function that accepts a callback for convenience.
- Continue reading for more details or refer to the official documentation.+ Continue reading for more details or refer to the inline documentation. +
Standard View
A standard view behaves differently if it's constructed for a single component or if it has been requested to iterate multiple components. Even the API is different in the two cases.
-
All that they share is the way they are created by means of a registry:// single component standard viewauto single = registry.view<Position>();// multi component standard viewauto multi = registry.view<Position, Velocity>();For all that remains, it's worth discussing them separately.
+// single component standard viewauto single = registry.view<Position>();// multi component standard viewauto multi = registry.view<Position, Velocity>();For all that remains, it's worth discussing them separately.
-
+
Single component standard view
Single component standard views are specialized in order to give a boost in terms of performance in all the situation. This kind of views can access the underlying data structures directly and avoid superfluous checks.
+ Refer to the inline documentation for all the details.
They offer a bunch of functionalities to get the number of entities they are going to return and a raw access to the entity list as well as to the component list. It's also possible to ask a view if it contains a given entity.
- Refer to the official documentation for all the details.There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
-beginorendare invoked.
To iterate a single component standard view, either use it in range-for loop:auto view = registry.view<Renderable>();for(auto entity: view) {Renderable &renderable = view.get(entity);// ...}Or rely on the
-eachmember function to iterate entities and get all their components at once:Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
+auto view = registry.view<Renderable>();for(auto entity: view) {Renderable &renderable = view.get(entity);// ...}Or rely on the
+eachmember function to iterate entities and get all their components at once:registry.view<Renderable>().each([](auto entity, auto &renderable) {// ...});Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
Note: prefer the
-getmember function of a view instead of thegetmember function template of a registry during iterations, if possible. However, keep in mind that it works only with the components of the view itself.+
Multi component standard view
Multi component standard views iterate entities that have at least all the given components in their bags. During construction, these views look at the number of entities available for each component and pick up a reference to the smallest set of candidates in order to speed up iterations.
+ They offer fewer functionalities than their companion views for single component. In particular, a multi component standard view exposes utility functions to get the estimated number of entities it is going to return and to know whether it's empty or not. It's also possible to ask a view if it contains a given entity.
- They offer fewer functionalities than their companion views for single component. In particular, a multi component standard view exposes utility functions to reset its internal state (optimization purposes) and to get the estimated number of entities it is going to return. It's also possible to ask a view if it contains a given entity.
- Refer to the official documentation for all the details.
+ Refer to the inline documentation for all the details.There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
-beginorendare invoked.
To iterate a multi component standard view, either use it in range-for loop:auto view = registry.view<Position, Velocity>();for(auto entity: view) {// a component at a time ...Position &position = view.get<Position>(entity);Velocity &velocity = view.get<Velocity>(entity);// ... or multiple components at oncestd::tuple<Position &, Velocity &> tup = view.get<Position, Velocity>(entity);// ...}Or rely on the
-eachmember function to iterate entities and get all their components at once:// ...});Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
+auto view = registry.view<Position, Velocity>();for(auto entity: view) {// a component at a time ...Position &position = view.get<Position>(entity);Velocity &velocity = view.get<Velocity>(entity);// ... or multiple components at oncestd::tuple<Position &, Velocity &> tup = view.get<Position, Velocity>(entity);// ...}Or rely on the
+eachmember function to iterate entities and get all their components at once:registry.view<Position, Velocity>().each([](auto entity, auto &position, auto &velocity) {// ...});Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
Note: prefer the
-getmember function of a view instead of thegetmember function template of a registry during iterations, if possible. However, keep in mind that it works only with the components of the view itself.+
Persistent View
A persistent view returns all the entities and only the entities that have at least the given components. Moreover, it's guaranteed that the entity list is tightly packed in memory for fast iterations.
-
In general, persistent views don't stay true to the order of any set of components unless users explicitly sort them.Persistent views can be used only to iterate multiple components. Create them as it follows:
-auto view = registry.persistent<Position, Velocity>();There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
beginorendare invoked.
+Persistent views can be used only to iterate multiple components. To create this kind of views, the tag
+persistent_tmust also be used in order to disambiguate overloads of theviewmember function:auto view = registry.view<Position, Velocity>(entt::persistent_t{});There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
-beginorendare invoked.
That being said, persistent views perform an initialization step the very first time they are constructed and this could be quite costly. To avoid it, consider asking to the registry to prepare them when no entities have been created yet:registry.prepare<Position, Velocity>();If the registry is empty, preparation is extremely fast. Moreover the
+preparemember function template is idempotent. Feel free to invoke it even more than once: if the view has been already prepared before, the function returns immediately and does nothing.registry.prepare<Position, Velocity>();If the registry is empty, preparation is extremely fast. Moreover the
preparemember function template is idempotent. Feel free to invoke it even more than once: if the view has been already prepared before, the function returns immediately and does nothing.A persistent view offers a bunch of functionalities to get the number of entities it's going to return, a raw access to the entity list and the possibility to sort the underlying data structures according to the order of one of the components for which it has been constructed. It's also possible to ask a view if it contains a given entity.
+ Refer to the inline documentation for all the details.
- Refer to the official documentation for all the details.To iterate a persistent view, either use it in range-for loop:
-auto view = registry.persistent<Position, Velocity>();for(auto entity: view) {// a component at a time ...Position &position = view.get<Position>(entity);Velocity &velocity = view.get<Velocity>(entity);// ... or multiple components at oncestd::tuple<Position &, Velocity &> tup = view.get<Position, Velocity>(entity);// ...}Or rely on the
-eachmember function to iterate entities and get all their components at once:// ...});Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
+auto view = registry.view<Position, Velocity>(entt::persistent_t{});for(auto entity: view) {// a component at a time ...Position &position = view.get<Position>(entity);Velocity &velocity = view.get<Velocity>(entity);// ... or multiple components at oncestd::tuple<Position &, Velocity &> tup = view.get<Position, Velocity>(entity);// ...}Or rely on the
+eachmember function to iterate entities and get all their components at once:registry.view<Position, Velocity>(entt::persistent_t{}).each([](auto entity, auto &position, auto &velocity) {// ...});Performance are more or less the same. The best approach depends mainly on whether all the components have to be accessed or not.
Note: prefer the
-getmember function of a view instead of thegetmember function template of a registry during iterations, if possible. However, keep in mind that it works only with the components of the view itself.+
Raw View
-Raw views return all the components of a given type. This kind of views can access components directly and avoid extra indirections as if components were accessed via an entity identifier.
+Raw views return all the components of a given type. This kind of views can access components directly and avoid extra indirections like when components are accessed via an entity identifier.
-
They offer a bunch of functionalities to get the number of instances they are going to return and a raw access to the entity list as well as to the component list.
- Refer to the official documentation for all the details.There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
+beginorendare invoked.
+ Refer to the inline documentation for all the details.Raw views can be used only to iterate components for a single type. To create this kind of views, the tag
+raw_tmust also be used in order to disambiguate overloads of theviewmember function:auto view = registry.view<Renderable>(entt::raw_t{});There is no need to store views around for they are extremely cheap to construct, even though they can be copied without problems and reused freely. In fact, they return newly created and correctly initialized iterators whenever
-beginorendare invoked.
To iterate a raw view, use it in range-for loop:Note: raw views don't have the
-eachnor thegetmember function for obvious reasons. The former would only return the components and therefore it would be redundant, the latter isn't required at all.+
Note: raw views don't have the
+eachnor thegetmember function for obvious reasons. The former would only return the components and therefore it would be redundant, the latter isn't required at all.Give me everything
Views are narrow windows on the entire list of entities. They work by filtering entities according to their components.
-
In some cases there may be the need to iterate all the entities still in use regardless of their components. The registry offers a specific member function to do that:It returns to the caller all the entities that are still in use by means of the given function.
+registry.each([](auto entity) {// ...});It returns to the caller all the entities that are still in use by means of the given function.
As a rule of thumb, consider using a view if the goal is to iterate entities that have a determinate set of components. A view is usually much faster than combining this function with a bunch of custom tests.
In all the other cases, this is the way to go.There exists also another member function to use to retrieve orphans. An orphan is an entity that is still in use and has neither assigned components nor tags.
-
The signature of the function is the same ofeach:To test the orphanity of a single entity, use the member function
+orphaninstead. It accepts a valid entity identifer as an argument and returns true in case the entity is an orphan, false otherwise.registry.orphans([](auto entity) {// ...});To test the orphanity of a single entity, use the member function
orphaninstead. It accepts a valid entity identifer as an argument and returns true in case the entity is an orphan, false otherwise.In general, all these functions can result in poor performance.
-
eachis fairly slow because of some checks it performs on each and every entity. For similar reasons,orphanscan be even slower. Both functions should not be used frequently to avoid the risk of a performance hit.+
This kind of entity-component systems can be used in single threaded applications as well as along with async stuff. Moreover, typical thread based models for ECS don't require a fully thread safe registry to work. Actually one could reach the goal with the registry as it is while working with most of the common models, after all.Side notes
- Entity identifiers are numbers and nothing more. They are not classes and they have no member functions at all. As already mentioned, do no try to inspect or modify an entity descriptor in any way.
- As shown in the examples above, the preferred way to get references to the components while iterating a view is by using the view itself. It's a faster alternative to the
-getmember function template that is part of the API of theRegistry. This is because the registry must ensure that a pool for the given component exists before to use it; on the other side, views force the construction of the pools for all their components and access them directly, thus avoiding all the checks.Most of the ECS available out there have an annoying limitation (at least from my point of view): entities and components cannot be created and/or destroyed during iterations.
+Most of the ECS available out there have some annoying limitations (at least from my point of view): entities and components cannot be created and/or destroyed during iterations.
EnTTpartially solves the problem with a few limitations:
- Creating entities and components is allowed during iterations.
- Deleting an entity or removing its components is allowed during iterations if it's the one currently returned by a view. For all the other entities, destroying them or removing their components isn't allowed and it can result in undefined behavior.
@@ -558,11 +635,11 @@ Side notes
Because of the few reasons mentioned above and many others not mentioned, users are completely responsible for synchronization whether required.+
Crash Course: core functionalities
The
-EnTTframework comes with a bunch of core functionalities mostly used by the other parts of the library itself.
Hardly users of the framework will include these features in their code, but it's worth describing whatEnTToffers so as not to reinvent the wheel in case of need.+
Compile-time identifiers
Sometimes it's useful to be able to give unique identifiers to types at compile-time.
@@ -570,37 +647,37 @@ Compile-time identifiers
There are plenty of different solutions out there and I could have used one of them. However, I decided to spend my time to define a compact and versatile tool that fully embraces what the modern C++ has to offer.#include <ident.hpp>// defines the identifiers for the given typesconstexpr auto identifiers = entt::ident<AType, AnotherType>;// ...switch(aTypeIdentifier) {case identifers.get<AType>():// ...break;case identifers.get<AnotherType>():// ...break;default:// ...}This is all what the variable has to offer: a
getmember function that returns a numerical identifier for the given type. It can be used in any context where constant expressions are required.As long as the list remains unchanged, identifiers are also guaranteed to be the same for every run. In case they have been used in a production environment and a type has to be removed, one can just use a placeholder to left the other identifiers unchanged:
template<typename> struct IgnoreType {};constexpr auto identifiers = entt::ident<ATypeStillValid,IgnoreType<ATypeNoLongerValid>,AnotherTypeStillValid>;A bit ugly to see, but it works at least.
-+
Runtime identifiers
Sometimes it's useful to be able to give unique identifiers to types at runtime.
There are plenty of different solutions out there and I could have used one of them. In fact, I adapted the most common one to my requirements and used it extensively within the entire framework.It's the
Familyclass. Here is an example of use directly from the entity-component system:using component_family = entt::Family<struct InternalRegistryComponentFamily>;// ...template<typename Component>component_type component() const noexcept {return component_family::type<Component>();}This is all what a family has to offer: a
typemember function that returns a numerical identifier for the given type.Please, note that identifiers aren't guaranteed to be the same for every run. Indeed it mostly depends on the flow of execution.
-+
Hashed strings
A hashed string is a zero overhead resource identifier. Users can use human-readable identifiers in the codebase while using their numeric counterparts at runtime, thus without affecting performance.
The class has an implicitconstexprconstructor that chews a bunch of characters. Once created, all what one can do with it is getting back the original string or converting it into a number.
The good part is that a hashed string can be used wherever a constant expression is required and no string-to-number conversion will take place at runtime if used carefully.Example of use:
-auto load(entt::HashedString::hash_type resource) {// uses the numeric representation of the resource to load and return it}+
auto load(entt::HashedString::hash_type resource) {// uses the numeric representation of the resource to load and return it}Conflicts
The hashed string class uses internally FNV-1a to compute the numeric counterpart of a string. Because of the pigeonhole principle, conflicts are possible. This is a fact.
-
There is no silver bullet to solve the problem of conflicts when dealing with hashing functions. In this case, the best solution seemed to be to give up. That's all.
After all, human-readable resource identifiers aren't something strictly defined and over which users have not the control. Choosing a slightly different identifier is probably the best solution to make the conflict disappear in this case.+
Crash Course: service locator
Usually service locators are tightly bound to the services they expose and it's hard to define a general purpose solution. This template based implementation tries to fill the gap and to get rid of the burden of defining a different specific locator for each application.
This class is tiny, partially unsafe and thus risky to use. Moreover it doesn't fit probably most of the scenarios in which a service locator is required. Look at it as a small tool that can sometimes be useful if the user knows how to handle it.The API is straightforward. The basic idea is that services are implemented by means of interfaces and rely on polymorphism.
The locator is instantiated with the base type of the service if any and a concrete implementation is provided along with all the parameters required to initialize it. As an example:// the service has no base type, a locator is used to treat it as a kind of singletonentt::ServiceLocator<MyService>::set(params...);// sets up an opaque serviceentt::ServiceLocator<AudioInterface>::set<AudioImplementation>(params...);// resets (destroys) the serviceThe locator can also be queried to know if an active service is currently set and to retrieve it if necessary (either as a pointer or as a reference):
-// no service currently setauto empty = entt::ServiceLocator<AudioInterface>::empty();// gets a (possibly empty) shared pointer to the service ...std::shared_ptr<AudioInterface> ptr = entt::ServiceLocator<AudioInterface>::get();// ... or a reference, but it's undefined behaviour if the service isn't set yetAudioInterface &ref = entt::ServiceLocator<AudioInterface>::ref();A common use is to wrap the different locators in a container class, creating aliases for the various services:
-struct Locator {using Camera = entt::ServiceLocator<CameraInterface>;using Audio = entt::ServiceLocator<AudioInterface>;// ...};// ...void init() {Locator::Camera::set<CameraNull>();Locator::Audio::set<AudioImplementation>(params...);// ...}+
// no service currently setauto empty = entt::ServiceLocator<AudioInterface>::empty();// gets a (possibly empty) shared pointer to the service ...std::shared_ptr<AudioInterface> ptr = entt::ServiceLocator<AudioInterface>::get();// ... or a reference, but it's undefined behaviour if the service isn't set yetAudioInterface &ref = entt::ServiceLocator<AudioInterface>::ref();A common use is to wrap the different locators in a container class, creating aliases for the various services:
+struct Locator {using Camera = entt::ServiceLocator<CameraInterface>;using Audio = entt::ServiceLocator<AudioInterface>;// ...};// ...void init() {Locator::Camera::set<CameraNull>();Locator::Audio::set<AudioImplementation>(params...);// ...}Crash Course: cooperative scheduler
Sometimes processes are a useful tool to work around the strict definition of a system and introduce logic in a different way, usually without resorting to the introduction of other components.
The
-EnTTframework offers a minimal support to this paradigm by introducing a few classes that users can use to define and execute cooperative processes.+
The process
A typical process must inherit from the
Processclass template that stays true to the CRTP idiom. Moreover, derived classes must specify what's the intended type for elapsed times.A process should expose publicly the following member functions whether required (note that it isn't required to define a function unless the derived class wants to override the default behavior):
@@ -623,7 +700,7 @@ The processDerived classes can also change the internal state of a process by invoking
succeedandfail, as well aspauseandunpausethe process itself. All these are protected member functions made available to be able to manage the life cycle of a process from a derived class.Here is a minimal example for the sake of curiosity:
-struct MyProcess: entt::Process<MyProcess, std::uint32_t> {using delta_type = std::uint32_t;void update(delta_type delta, void *) {remaining = delta > remaining ? delta_type{] : (remaining - delta);// ...if(!remaining) {succeed();}}void init(void *data) {remaining = *static_cast<delta_type *>(data);}private:delta_type remaining;};+
struct MyProcess: entt::Process<MyProcess, std::uint32_t> {using delta_type = std::uint32_t;void update(delta_type delta, void *) {remaining = delta > remaining ? delta_type{] : (remaining - delta);// ...if(!remaining) {succeed();}}void init(void *data) {remaining = *static_cast<delta_type *>(data);}private:delta_type remaining;};Adaptor
Lambdas and functors can't be used directly with a scheduler for they are not properly defined processes with managed life cycles.
@@ -637,7 +714,7 @@ Adaptor
This class helps in filling the gap and turning lambdas and functors into full featured processes usable by a scheduler.Both
succeedandfailaccept no parameters at all.Note that usually users shouldn't worry about creating adaptors at all. A scheduler creates them internally each and every time a lambda or a functor is used as a process.
-+
The scheduler
A cooperative scheduler runs different processes and helps managing their life cycles.
Each process is invoked once per tick. If it terminates, it's removed automatically from the scheduler and it's never invoked again. Otherwise it's a good candidate to run once more the next tick.
@@ -655,13 +732,13 @@ The scheduler As a minimal example of use:// schedules a task in the form of a lambda functionscheduler.attach([](auto delta, void *, auto succeed, auto fail) {// ...})// appends a child in the form of another lambda function.then([](auto delta, void *, auto succeed, auto fail) {// ...})// appends a child in the form of a process class.then<MyProcess>();To update a scheduler and thus all its processes, the
updatemember function is the way to go:// updates all the processes, no user data are providedscheduler.update(delta);// updates all the processes and provides them with custom datascheduler.update(delta, &data);In addition to these functions, the scheduler offers an
-abortmember function that can be used to discard all the running processes at once:// aborts all the processes abruptly ...scheduler.abort(true);// ... or gracefully during the next tickscheduler.abort();+
// aborts all the processes abruptly ...scheduler.abort(true);// ... or gracefully during the next tickscheduler.abort();Crash Course: resource management
Resource management is usually one of the most critical part of a software like a game. Solutions are often tuned to the particular application. There exist several approaches and all of them are perfectly fine as long as they fit the requirements of the piece of software in which they are used.
Examples are loading everything on start, loading on request, predictive loading, and so on.The
-EnTTframework doesn't pretend to offer a one-fits-all solution for the different cases. Instead, it offers a minimal and perhaps trivial cache that can be useful most of the time during prototyping and sometimes even in a production environment.
For those interested in the subject, the plan is to improve it considerably over time in terms of performance, memory usage and functionalities. Hoping to make it, of course, one step at a time.+
The resource, the loader and the cache
There are three main actors in the model: the resource, the loader and the cache.
The resource is whatever the user wants it to be. An image, a video, an audio, whatever. There are no limits.
@@ -688,7 +765,7 @@ The resource, the loader and the cache Note that thereloadmember function is a kind of alias of the following snippet:cache.discard(identifier);cache.load<MyLoader>(identifier, 42);Where the
discardmember function is used to get rid of a resource if loaded. In case the cache doesn't contain a resource for the given identifier, the function does nothing and returns immediately.So far, so good. Resources are finally loaded and stored within the cache.
+ They are returned to users in the form of handles. To get one of them:
- They are returned to the users in the form of handles. To get one of them:auto handle = cache.handle("my/identifier");The idea behind a handle is the same of the flyweight pattern. In other terms, resources aren't copied around. Instead, instances are shared between handles. Users of a resource owns a handle and it guarantees that a resource isn't destroyed until all the handles are destroyed, even if the resource itself is removed from the cache.
Handles are tiny objects both movable and copyable. They returns the contained resource as a const reference on request:@@ -701,59 +778,31 @@ The resource, the loader and the cache
- Through the dereference operator:
const auto &resource = *handle;The resource can also be accessed directly using the arrow operator if required:
-auto value = handle->value;To test if a handle is still valid, the cast operator to
+boolallows the users to use it in a guard:auto value = handle->value;To test if a handle is still valid, the cast operator to
boolallows users to use it in a guard:if(handle) {// ...}Finally, in case there is the need to load a resource and thus to get a handle without storing the resource itself in the cache, users can rely on the
tempmember function template.
The declaration is similar to the one ofloadbut for the fact that it doesn't return a boolean value. Instead, it returns a (possibly invalid) handle for the resource:auto handle = cache.temp<MyLoader>("another/identifier", 42);Do not forget to test the handle for validity. Otherwise, getting the reference to the resource it points may result in undefined behavior.
-+
Crash Course: events, signals and everything in between
Signals are usually a core part of games and software architectures in general.
Roughly speaking, they help to decouple the various parts of a system while allowing them to communicate with each other somehow.The so called _modern C++_ comes with a tool that can be useful in these terms, the
std::function. As an example, it can be used to create delegates.
However, there is no guarantee that anstd::functiondoes not perform allocations under the hood and this could be problematic sometimes. Furthermore, it solves a problem but may not adapt well to other requirements that may arise from time to time.In case that the flexibility and potential of an
-std::functionare not required or where you are looking for something different, theEnTTframework offers a full set of classes to solve completely different problems.+
Signals
-There are two types of signal handlers in
-EnTT, internally called managed and unmanaged.
- They differ in the way they work around the tradeoff between performance, memory usage and safety. Managed listeners must be wrapped in anstd::shared_ptrand the sink will take care of disconnecting them whenever they die. Unmanaged listeners can be any kind of objects and the client is in charge of connecting and disconnecting them from a sink to avoid crashes due to different lifetimes.-Managed signal handler
-A managed signal handler works with weak pointers to classes and pointers to member functions as well as pointers to free functions. References are automatically removed when the instances to which they point are freed.
-
- In other terms, users can simply connect a listener and forget about it, thus getting rid of the burden of controlling its lifetime. The drawback is that listeners must be allocated on the dynamic storage and wrapped into anstd::shared_ptr. Performance and memory management can suffer from this in real world softwares.To create an instance of this type of handler, the function type is all what is needed:
-entt::Signal<void(int, char)> signal;From now on, free functions and member functions that respect the given signature can be easily connected to and disconnected from the signal:
-void foo(int, char) { /* ... */ }struct S {void bar(int, char) { /* ... */ }};// ...auto instance = std::make_shared<S>();signal.connect<&foo>();signal.connect<S, &S::bar>(instance);// ...signal.disconnect<&foo>();// disconnect a specific member function of an instance ...signal.disconnect<S, &S::bar>(instance);// ... or an instance as a wholesignal.disconnect(instance);Once listeners are attached (or even if there are no listeners at all), events and data in general can be published through a signal by means of the
-publishmember function:signal.publish(42, 'c');This is more or less all what a managed signal handler has to offer.
-
- A bunch of other member functions are exposed actually. As an example, there is a method to use to know how many listeners a managed signal handler contains (size) or if it contains at least a listener (empty), to reset it to its initial state (clear) and even to swap two handlers (swap).
- Refer to the official documentation for all the details.-Unmanaged signal handler
-An unmanaged signal handler works with naked pointers to classes and pointers to member functions as well as pointers to free functions. Removing references when the instances to which they point are freed is in charge to the users.
-
- In other terms, users must explicitly disconnect a listener before to delete the class to which it belongs, thus taking care of the lifetime of each instance. On the other side, performance shouldn't be affected that much by the presence of such a signal handler.The API of an unmanaged signal handler is similar to the one of a managed signal handler.
- The most important difference is that it comes in two forms: with and without a collector. In case it is associated with a collector, all the values returned by the listeners can be literally collected and used later by the caller.
+Signal handlers work with naked pointers, function pointers and pointers to member functions. Listeners can be any kind of objects and the user is in charge of connecting and disconnecting them from a signal to avoid crashes due to different lifetimes. On the other side, performance shouldn't be affected that much by the presence of such a signal handler.
+
+ A signal handler can be used as a private data member without exposing any publish functionality to the clients of a class. The basic idea is to impose a clear separation between the signal itself and its sink class, that is a tool to be used to connect and disconnect listeners on the fly.The API of a signal handler is straightforward. The most important thing is that it comes in two forms: with and without a collector. In case a signal is associated with a collector, all the values returned by the listeners can be literally collected and used later by the caller. Otherwise it works just like a plain signal that emits events from time to time.
Note: collectors are allowed only in case of function types whose the return type isn't
-voidfor obvious reasons.To create instances of this type of handler there exist mainly two ways:
-// no collector typeentt::SigH<void(int, char)> signal;// explicit collector typeentt::SigH<void(int, char), MyCollector<bool>> collector;As expected, an unmanaged signal handler offers all the basic functionalities required to know how many listeners it contains (
-size) or if it contains at least a listener (empty), to reset it to its initial state (clear) and even to swap two handlers (swap).Besides them, there are member functions to use both to connect and disconnect listeners in all their forms:
-void foo(int, char) { /* ... */ }struct S {void bar(int, char) { /* ... */ }};// ...S instance;signal.connect<&foo>();signal.connect<S, &S::bar>(&instance);// ...signal.disconnect<&foo>();// disconnect a specific member function of an instance ...signal.disconnect<S, &S::bar>(&instance);// ... or an instance as a wholesignal.disconnect(&instance);Once listeners are attached (or even if there are no listeners at all), events and data in general can be published through a signal by means of the
+publishmember function:To create instances of signal handlers there exist mainly two ways:
+// no collector typeentt::SigH<void(int, char)> signal;// explicit collector typeentt::SigH<void(int, char), MyCollector<bool>> collector;As expected, they offer all the basic functionalities required to know how many listeners they contain (
+size) or if they contain at least a listener (empty) and even to swap two signal handlers (swap).Besides them, there are member functions to use both to connect and disconnect listeners in all their forms by means of a sink::
+void foo(int, char) { /* ... */ }struct S {void bar(int, char) { /* ... */ }};// ...S instance;signal.sink().connect<&foo>();signal.sink().connect<S, &S::bar>(&instance);// ...// disconnects a free functionsignal.sink().disconnect<&foo>();// disconnect a specific member function of an instance ...signal.sink().disconnect<S, &S::bar>(&instance);// ... or an instance as a wholesignal.sink().disconnect(&instance);// discards all the listeners at oncesignal.sink().disconnect();Once listeners are attached (or even if there are no listeners at all), events and data in general can be published through a signal by means of the
publishmember function:signal.publish(42, 'c');To collect data, the
-collectmember function should be used instead. Below is a minimal example to show how to use it:struct MyCollector {std::vector<int> vec{};bool operator()(int v) noexcept {vec.push_back(v);return true;}};int f() { return 0; }int g() { return 1; }// ...entt::SigH<int(), MyCollector<int>> signal;signal.connect<&f>();signal.connect<&g>();MyCollector collector = signal.collect();assert(collector.vec[0] == 0);assert(collector.vec[1] == 1);As shown above, a collector must expose a function operator that accepts as an argument a type to which the return type of the listeners can be converted. Moreover, it has to return a boolean value that is false to stop collecting data, true otherwise. This way one can avoid calling all the listeners in case it isn't necessary.
--Compile-time event bus
-A bus can be used to create a compile-time backbone for event management.
-
- The intended use is as a base class, which is the opposite of what the signals are meant for. Internally it uses either managed or unmanaged signal handlers, that is why there exist both a managed and an unmanaged event bus.The API of a bus is a kind of subset of the one of a signal. First of all, it requires that all the types of events are specified when the bus is declared:
-struct AnEvent { int value; };struct AnotherEvent {};// define a managed bus that works with std::shared_ptr/std::weak_ptr// define an unmanaged bus that works with naked pointersentt::UnmanagedBus<AnEvent, AnotherEvent> unmanaged;For the sake of brevity, below is described the interface of the sole unmanaged bus. The interface of the managed bus is almost the same but for the fact that it accepts smart pointers instead of naked pointers.
-In order to register an instance of a class to a bus, its type must expose one or more member functions named
-receiveof which the return types arevoidand the argument lists areconst E &, for each type of eventE.
- Theregmember function is the way to go to register such an instance:struct Listener{void receive(const AnEvent &) { /* ... */ }void receive(const AnotherEvent &) { /* ... */ }};// ...Listener listener;bus.reg(&listener);To disconnect an instance of a class from a bus, use the
-unregmember function instead:bus.unreg(&listener);Each function that respects the accepted signature is automatically registered and/or unregistered. Note that invoking
-unregwith an instance of a class that hasn't been previously registered is a perfectly valid operation.Free functions can be registered and unregistered as well by means of the dedicated member functions, namely
-connectanddisconnect:void foo(const AnEvent &) { /* ... */ }void bar(const AnotherEvent &) { /* ... */ }// ...bus.connect<AnEvent, &foo>();bus.connect<AnotherEvent, &bar>();// ...bus.disconnect<AnEvent, &foo>();bus.disconnect<AnotherEvent, &bar>();Whenever the need to send an event arises, it can be done through the
-publishmember function:bus.publish<AnEvent>(42);bus.publish<AnotherEvent>();Finally, there are another few functions to use to query the internal state of a bus like
-emptyandsizewhose meaning is quite intuitive.+
struct MyCollector {std::vector<int> vec{};bool operator()(int v) noexcept {vec.push_back(v);return true;}};int f() { return 0; }int g() { return 1; }// ...entt::SigH<int(), MyCollector<int>> signal;signal.sink().connect<&f>();signal.sink().connect<&g>();MyCollector collector = signal.collect();assert(collector.vec[0] == 0);assert(collector.vec[1] == 1);As shown above, a collector must expose a function operator that accepts as an argument a type to which the return type of the listeners can be converted. Moreover, it has to return a boolean value that is false to stop collecting data, true otherwise. This way one can avoid calling all the listeners in case it isn't necessary.
+Delegate
A delegate can be used as general purpose invoker with no memory overhead for free functions and member functions provided along with an instance on which to invoke them.
@@ -764,23 +813,20 @@ Delegate
It does not claim to be a drop-in replacement for anstd::function, so do not expect to use it whenever anstd::functionfits well. However, it can be used to send opaque delegates around to be used to invoke functions as needed.int f(int i) { return i; }struct MyStruct {int f(int i) { return i }};// bind a free function to the delegatedelegate.connect<&f>();// bind a member function to the delegateMyStruct instance;delegate.connect<MyStruct, &MyStruct::f>(&instance);It hasn't a
disconnectcounterpart. Instead, there exists aresetmember function to clear it.
Finally, to invoke a delegate, the function call operator is the way to go as usual:auto ret = delegate(42);Probably too much small and pretty poor of functionalities, but the delegate class can help in a lot of cases and it has shown that it is worth keeping it within the framework.
-+
Event dispatcher
The event dispatcher class is designed so as to be used in a loop. It allows users both to trigger immediate events or to queue events to be published all together once per tick.
-
- Internally it uses either managed or unmanaged signal handlers, that is why there exist both a managed and an unmanaged event dispatcher.This class shares part of its API with the one of the signals, but it doesn't require that all the types of events are specified when declared:
-// define a managed dispatcher that works with std::shared_ptr/std::weak_ptrentt::Dispatcher<entt::Signal> managed{};// define an unmanaged dispatcher that works with naked pointersentt::Dispatcher<entt::SigH> unmanaged{};Actually there exist two aliases for the classes shown in the previous example:
-entt::ManagedDispatcherandentt::UnmanagedDispatcher.For the sake of brevity, below is described the interface of the sole unmanaged dispatcher. The interface of the managed dispatcher is almost the same but for the fact that it accepts smart pointers instead of naked pointers.
-In order to register an instance of a class to a dispatcher, its type must expose one or more member functions of which the return types are
-voidand the argument lists areconst E &, for each type of eventE.
- To ease the development, member functions that are namedreceiveare automatically detected and have not to be explicitly specified when registered. In all the other cases, the name of the member function aimed to receive the event must be provided to theconnectmember function:struct AnEvent { int value; };struct AnotherEvent {};struct Listener{void receive(const AnEvent &) { /* ... */ }void method(const AnotherEvent &) { /* ... */ }};// ...Listener listener;dispatcher.connect<AnEvent>(&listener);dispatcher.connect<AnotherEvent, Listener, &Listener::method>(&listener);The
-disconnectmember function follows the same pattern and can be used to selectively remove listeners:dispatcher.disconnect<AnEvent>(&listener);dispatcher.disconnect<AnotherEvent, Listener, &Listener::method>(&listener);The
+triggermember function serves the purpose of sending an immediate event to all the listeners registered so far. It offers a convenient approach that relieves the user from having to create the event itself. Instead, it's enough to specify the type of event and provide all the parameters required to construct it.
+ This class shares part of its API with the one of the signal handler, but it doesn't require that all the types of events are specified when declared:// define a general purpose dispatcher that works with naked pointersentt::Dispatcher dispatcher{};In order to register an instance of a class to a dispatcher, its type must expose one or more member functions of which the return types are
+voidand the argument lists areconst E &, for each type of eventE.
+ To ease the development, member functions that are namedreceiveare automatically detected and have not to be explicitly specified when registered. In all the other cases, the name of the member function aimed to receive the event must be provided to theconnectmember function of the sink bound to the specific event:struct AnEvent { int value; };struct AnotherEvent {};struct Listener{void receive(const AnEvent &) { /* ... */ }void method(const AnotherEvent &) { /* ... */ }};// ...Listener listener;dispatcher.sink<AnEvent>().connect(&listener);dispatcher.sink<AnotherEvent>().connect<Listener, &Listener::method>(&listener);The
+disconnectmember function follows the same pattern and can be used to selectively remove listeners:dispatcher.sink<AnEvent>().disconnect(&listener);dispatcher.sink<AnotherEvent>().disconnect<Listener, &Listener::method>(&listener);The
triggermember function serves the purpose of sending an immediate event to all the listeners registered so far. It offers a convenient approach that relieves the user from having to create the event itself. Instead, it's enough to specify the type of event and provide all the parameters required to construct it.
As an example:dispatcher.trigger<AnEvent>(42);dispatcher.trigger<AnotherEvent>();Listeners are invoked immediately, order of execution isn't guaranteed. This method can be used to push around urgent messages like an is terminating notification on a mobile app.
On the other hand, the
enqueuemember function queues messages together and allows to maintain control over the moment they are sent to listeners. The signature of this method is more or less the same oftrigger:dispatcher.enqueue<AnEvent>(42);dispatcher.enqueue<AnotherEvent>();Events are stored aside until the
-updatemember function is invoked, then all the messages that are still pending are sent to the listeners at once:dispatcher.update();This way users can embed the dispatcher in a loop and literally dispatch events once per tick to their systems.
-+
// emits all the events of the given type at oncedispatcher.update<MyEvent>();// emits all the events queued so far at oncedispatcher.update();This way users can embed the dispatcher in a loop and literally dispatch events once per tick to their systems.
+Event emitter
A general purpose event emitter thought mainly for those cases where it comes to working with asynchronous stuff.
@@ -808,22 +854,46 @@ Event emitter
Originally designed to fit the requirements ofuvw(a wrapper forlibuvwritten in modern C++), it was adapted later to be included in this library.// removes all the listener for the specific eventemitter.clear<MyEvent>();// removes all the listeners registered so faremitter.clear();To send an event to all the listeners that are interested in it, the
publishmember function offers a convenient approach that relieves the user from having to create the event:struct MyEvent { int i; };// ...emitter.publish<MyEvent>(42);Finally, the
emptymember function tests if there exists at least either a listener registered with the event emitter or to a given type of event:bool empty;// checks if there is any listener registered for the specific eventempty = emitter.empty<MyEvent>();// checks it there are listeners registered with the event emitterempty = emitter.empty();In general, the event emitter is a handy tool when the derived classes wrap asynchronous operations, because it introduces a nice-to-have model based on events and listeners that kindly hides the complexity behind the scenes. However it is not limited to such uses.
-+
+Packaging Tools
++
EnTTis available for some of the most known packaging tools. In particular:+
+- +
vcpkg, Microsoft VC++ Packaging Tool.- +
Homebrew, the missing package manager for macOS.
+ Available as a homebrew formula. Just type the following to install it:brew install skypjack/entt/enttConsider this list a work in progress and help me to make it longer.
++EnTT in Action
++
EnTTis widely used in private and commercial applications. I cannot even mention most of them because of some signatures I put on some documents time ago.
+ Fortunately, there are also people who took the time to implement open source projects based on EnTT and did not hold back when it came to documenting them.Below an incomplete list of projects and articles:
++
+- EnttPong: example game for
+EnTTframework.- ECS_SpaceBattle: huge space battle built on
+UE4.- Experimenting with ECS in UE4: interesting article about
+UE4andEnTT.- Implementing ECS architecture in UE4: giant space battle.
+- MatchOneEntt: port of Match One for
+Entitas-CSharp.- Randballs: simple
+SFMLandEnTTplayground.- ...
+If you know of other resources out there that are about
+EnTT, feel free to open an issue or a PR and I'll be glad to add them to the list.Contributors
-If you want to contribute, please send patches as pull requests against the branch
-master.
- See the contributors list to know who has participated so far.+
If you want to participate, please see the guidelines for contributing before to create issues or pull requests.
+
+ Take also a look at the contributors list to know who has participated so far.License
Code and documentation Copyright (c) 2018 Michele Caini.
-
Code released under the MIT license. Docs released under Creative Commons.+
Support
-+
Donation
Developing and maintaining
-EnTTtakes some time and lots of coffee. I'd like to add more and more functionalities in future and turn it in a full-featured framework.
If you want to support this project, you can offer me an espresso. I'm from Italy, we're used to turning the best coffee ever in code. If you find that it's not enough, feel free to support me the way you prefer.
Take a look at the donation button at the top of the page for more details or just click here.+
Hire me
If you start using
diff --git a/inherit_graph_0.map b/inherit_graph_0.map index 92ca4571c..751b92afa 100644 --- a/inherit_graph_0.map +++ b/inherit_graph_0.map @@ -1,3 +1,3 @@ diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 index 1ef930eec..e7d691c45 100644 --- a/inherit_graph_0.md5 +++ b/inherit_graph_0.md5 @@ -1 +1 @@ -9c56884eba7b0e2f748835f4e6877a08 \ No newline at end of file +d098eb332a613eb34c2d188029c17c79 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png index 1ea51e44f5cdec9132742cf948e352298cc65fef..370273d378d4701eaabceb5443eb8f0d92fb60ee 100644 GIT binary patch literal 1607 zcmV-N2Dtf&P)EnTTand need help, if you want a new feature and want me to give it the highest priority, if you have any other reason to contact me: do not hesitate. I'm available for hiring.
Feel free to take a look at my profile and contact me by mail.*<-Z484D0)hWNd;WF;0?|Pbk|zj4@&rLho`BOE!^6WbUcC5Q zsR;ZLckkX+C=^t4$BMLAEWN$GaZgF$kLm60wOB0l9-Qse)6)~Ld;}r{!!SmVa7OY3 zK}en;2+0!!A$h{TDCFbEk1-5;_Uu{whsFZI<;I1D1&*FEB8EaPEiH+~VzwO?tyY_! zp03quxyO$p!^6XCJK>UmNF-`$X^CA{VF~c@BU+FoX|vhbc4!EKn3 !o`!GKvGgtdwYBAvI 3WVS}9;5o1%*YPILiox5=1LQYPOPNzeie!su1tt~x0 zJtZZjy1Lrwbh2YQoz5FKZivNVnM|fut34hMiu~!*r(?&C8I49p6*img=g*(qs}5Zt zRRz7Xp`qdC&70` &cTRQRnmL&-3!~ zOePaS5QT+>YPFgjv!bG+q@-kVagiX1yu7>z4;~ Jpa%>78G`d`V7D_W67e!nbeVQsq#5{P 54-5>PK7AU6{`~nfgwX5t0s!Xc=R*h?jM352ef##=?RE&^ z#KZ&uz+^H(2v3|i@!`V< i0SouaU7qXo<_~SzP`-NOyoci1nP9V-EZE! zDJ(3M%jKP&opfpG6BO)O=U5=U)9?4Erlt-K4nhb^OG}?Veaaqjb#=9^txYDAUA}y| zzrUX($*{8oqa|cQLIS-`kw}C>&(6+L!$c -ECl&wfo!&Dhvjhy+mP!7gzrkWuOF+qYFJmCa_`zkk2QVhJ{`*X!-+ z=_xKQ&d$yb;YLq}A!H y#tdZsn_c}Iy$I5?cTk6=-HA= zrOV69$ZcwB>dBKQjC&;#36A57i;Jkau&|JpmWFH`#{mFhu{bw3cW7wHXf!$;j>s~M zpulU_t{Dsly l*Hmg)BN>nN) zj^kxzWep7t%gf8t)6=c3trZm&^fXSLIyE>rXfPPQefyS`l~q?)hqi7u>+9>*orInZ zdV%cD;^Jbz-~aI8!^+A^wi|?SU|`_Nl`BO>MI=cYjmCHH-X$d^g&r|5^ySHMYjwNb zjg5^*jvP63=umZaH9BknZBs(F&*xJp6bBC;gb>ng#{NUu_4V}^FJ5Gfm64Ir($eDb zc+_fjT3VV&BvLAs8yg$!m>U}#RaI5V$;ncww5h4d Zv9d00006VoOIv0RI60 z0RN!9r;`8x2m47xK~#90?VE2%Q(qXz&uT)gUaWLZr^{wjG<4CZbdV-!g!n=fO_-V$ z1qLEwTEYZNqhUyb7KLcOh-@?4defU$77JSvlro)U^Us)ROU*eIotrzq7l$s_yE)hL z&u+i_dG*}qp7WgN+^_eX>v@z0Ap{iUVaIkSK=Ef#f{_eLFp@zDMl$I53ynr|_wL>8 zN`=BDrKP1JkqEn7^@bUZ#*U7TEl-JJO*%R{j7B5gLw9cU?Af!e%7 xZVf!jq0eLqi_6{7W`bu#u4w7K`O eAaIi4u@lEYRcJmk5;Q47#Mi<>Qzcg z%C~RdA|fI@iNArcSS&W1?MX{~0{;H~QmJ(FvcmA@4YS+r5{ZP%zV3WZQ8WHOmGH8lW$`1p7LKyYv{!3L`r5W-?2lgUnQMVS#~x1qB7Ov$M`IXJ= CdK^ATMGai9kT*F!3mW@Tj=jYh3jD-;UL z%F0kt?d;jJX0y4uxfuX3Jw2`0>#=Bf8$vicJKNmc>}*2_!^6XynwlVlm6eq-F)_$l zS63Gs8{5~{r`2lX;^NB7%bjE9<>jTMqzn%aYqi?g*w~vlZ=wdNsi|_ge13i&Yx(KZ zr}O8}2L=XCOiU1_1_0>o?VVo@cFU6q;+<->Iv^mxZnr}SpFDYjO~-Qp0CKr}l?Q*} zp plVJd 008K8@ApNSOlGs${Qdngk6bRVuC6v1417Kxd7`4CqN1V*9Ze>a-EKd0=n%T( z^Z8?AV_16tz?(O3a&vQ2Q&Sro8;>79?j{GlUXR5g@TU{pv13POW~M@+5C{aXU%!6% z@S%qt-Np2x4~N6i>-9)*v)TOd<3}vNze&a6aJ09#*Vor$YthxKSJ6w);c!MrM^Urh z-rn1{Zxi~m*=#zUK0G{(E{BGOLPA22jh-)y#X5ZW@P`i{y1Kf|X0vx0dNIN5>}-WX z(ca#E^5n_T&`|HjU6q3ueZ*q%wQJW#Mn-fxU0PaNLqmg`#`E*@&bGy3X=!O8*ze!J zHGYhOoZ{l*(b3WV{{G6! z%DlWhd>R6QptG}6p-_DN`ZY2#^77@&XvuYEa&pqN8uw2FKS5__LPEmI%1U*0b$)(6 zcDJRa#bU9z54$G#_0hvUY-wq!q@*M$C}`ileFX&tXfpr+V6Ppr?RL9JB-*=oFN6?p z6Bc^RE-WlObLI?TEIyxKQBh&FTFcAJLqbBBOr}^Yo|&0(jyW?kbMD-^fPerFhf`Ko zX0=+^+BnT-bA5e1pU*cK49 xwt&RM#Odkjjg3jYVI;%X z1;dv)csyP~L4o_D)h#P?Y!|*R82DZ9`2PKSYip~;Vi5|3= mi3DqgPB z(ChV5skFGbcxGk>AG5c&m&fB>zkVHm=;fP`PcVo(Kx%Dmy?5_kXlQ6mOiXQUtxBbG z*=5(RU0SWSp`n4p;qZ7o0Kl(bzwix`las%E`NCi@5)%{C)6-Qd74+4An rM`HyVpMrdX zJ$UdSEiDb%YZZD3EH5u-WMq_-lxQ@X`}gm=32ri(bUNMG*x1pdM|bbuz46)qH6#!W z)jP(=$JJ_eMn=ZS$Vh2vDY~_8p$C;Y78Vv37Z>St`r_hZRaF%LU~X;>-wZ;iQmHaC zGvnjq9S%oVSJ%_0Pw{nB9|C_8?1QKE_*4%ZIFOf@_w(mZ?5=a6XRR`aR4QdMnLHk^ zsi{dU7PHxG{3y?#KNpEaZEbDK%gb9iyLACndBr6*n{B&OaE-HIBv=x+fWP@Wlr4r5 zjAT%Pkqk;Ol0gYZGAO}F1|=BDaPc{tot?e)c~E%BsyB?w 0JFscKK&+!nE(I)07*qoM6N<$f{#%CV*mgE diff --git a/inherit_graph_1.map b/inherit_graph_1.map index bd707f7d0..d5e5f4163 100644 --- a/inherit_graph_1.map +++ b/inherit_graph_1.map @@ -1,3 +1,3 @@ diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 index 9b886c99b..506a340bf 100644 --- a/inherit_graph_1.md5 +++ b/inherit_graph_1.md5 @@ -1 +1 @@ -01d8d5f0e87fecc8a379dbccbaa8621a \ No newline at end of file +e5a0fa55439a5d6d778240f24edc868d \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png index ccd49527b10768e82ffd6808fd2249b794223f6d..8adaf45d5f7e9372d963b677e2120c27fa94c949 100644 GIT binary patch delta 1043 zcmV+u1nm2s43`KYiBL{Q4GJ0x0000DNk~Le0001K0000b2m$~A0M2?)dXXU%e*?@( zL_t(&f$f=3NFq@j$A7cvq3B?NWl~t776e6}@)(_>Q!ph6(Vriwk zj7~+4QI~EV@={856QWX)n4%6DW+S5}y* >K#6cclapY;iGtmPZ4<+jYbKAD7LBc@E5&{ z#bR2mR;r7NLK6Fn-o3xSKRrE3bx~1BVmRLAa=H2W`TF|$s;Vl7!;#Hqe*u6Xi2eP2 zi^ZbRXqJ|i0HCw8698&!YegD<-czFewX?HhG#aa`t4BviS(fFl9v>e!G&G!?oXCbg zI5=o)Yb!4=Hy8}7tE-}Hr>3SlIy&O x z$w}@d;K0B@B9ZWTJOB`nf5#({2tS)pBZOXFUOXO;NONPlySu~T@Y&g!*=(Mjo#i@v zdV0KGFT*g>(8**{tyT{Y58vP4Z*Ok{!1MDnAI{}+amIbL7Exk(AW4!WNnsC;cV@Hs z@$r$ tE*Hh zg%CPDJr#zYo}LDP>+9=JgMPYXB v2&}EG38y+dJX~L2-`(By z`~8I{CIx4;cDvo>a>Zh?%gf8&-rkj!l{|wPhLP%IGP$|ADb)ZlF) nk_7tgOsrGR@4)jEszAe=?b0O!7AnZs1?6cj 2&IJy2{GRp`js$VGu$9z~2#^&gF7etF@w{0wE;SqAJ5{PWXI2qtU3 +U zqsB7KZ*}J6-h2MJ|CxIyGr rL3Fj+2;nNRr9Dn!j-E~Rf zxCk iKYk3lB#w)+xVVVpI6cGnY&1MP94tK?mqT%JF(bq6uk3{L zm7Q?DvJ=i%cJgoeiqVLTjV&uHJ2*H9PU+3fO$@_=Q!5Bup|3ifP9zd}#{R)^++Z;5 z?d?rZPwRBL>gwvNQ^;bx{LZ;7TrQW Q`QmIl?Q{&^~D=I3?W;3J9*w|Qh zc6LNWL~3ekTU(o-T4xb(c08p94x;hl!v{vjE6vT#a=Bcu*RQRuNhFdNFJ4eDaZ5@{ zOeRxTR~G>M`t?hz)w)Nc#|R;_+1%CD gp; sI=McCclRjE`dDJca71=G{hXB_Zyd=&@;^w}2*g$N-4`1bAF|ASt@SFKh{ z#ee?%X>4q~efu_}`}gnP-SP7Ba(Q`qTwL7Kr%$P~iaO<$O68X?U;OA-tJRDoy~Nbi z)T2j_q*7^RWu;q^XDwgJi*tN@JUl#{mzS5BnW@+7|JvTu*Fg5yq@*PG?3+xc#l=M` z9};qzch>@e;Q90CTU%Q{fBvL0CnqNWu(Pv69op@7o6XkS+e;9HQmK6M &%b~FJ~lSi&-D6)e(|1h9k$!;H8nK}2?;lE z-mIvopf)g|EumEGbUI}+S!84+LWmwCANwUby}$B!yqugI9LK4TR4P?;baZBB=H%q0 zyZykxKw4T_czF2z`}Zd%CKx(RCR0mG%bh!Se*E}B&mSEf)z#JAx^+t^6e<*ogM$Nx zjOONMp-`BXme$$XsZc1yVzIAUUXz|v;XigWGBP5Q$p!}p9S+A|U7+K+4rBD$92y!b zEiFat`iCMy$mMeJc)Xxh#4v1se?KlR?z|nHPA8uq$P)$XJstf8>%a9J@hZSDESRPO zKwe&60Hy*!V5WM7{k{gDxw*OPmcaSSQaE4P3Fj+2;e2H$oUiP}%Z>HW&`|Joa9o7# z?d{~`WO~Mnucf7>!P3KVX~^Yr`XR=$r%N0Z-2Tc=IA7Tb=PNtmd}Sy90f!+Z*##Lo Qj{pDw07*qoM6N<$f_nxJg#Z8m diff --git a/inherit_graph_10.map b/inherit_graph_10.map index ed3bfca0e..083843f3f 100644 --- a/inherit_graph_10.map +++ b/inherit_graph_10.map @@ -1,3 +1,3 @@ diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 index c5a8451da..b88f7ce0c 100644 --- a/inherit_graph_10.md5 +++ b/inherit_graph_10.md5 @@ -1 +1 @@ -820ea685d52a50407520850e381b91f8 \ No newline at end of file +448f5f138376e0a71e7cc0def9a0dc84 \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png index 486514c535864eda7fee17137517a8e97ca8b778..b2cac474661feab20cb090b3b5f746b9979d12c9 100644 GIT binary patch delta 1951 zcmV;Q2VnU055EtPHh*+UL_t(|ob8)!NK;=N$Ir}J%hjf0bJDP(ES vIbMpX>+h*%dL$$cm6N# zpUZXk?!i5H{r|n6SHFAqyT5aGzTR{0{oYA~5CRHPNg;ax6n~TkYXC|E@}V>!pH%FD z!C<&`>lRr |Cp~%cWVOb#9yxO4 zNKgy4ACM2F0r^lGkPoE+`A`}xV`5^0Mx(8Ar%BXcYHBJwI~yOba^)3u&1SQ&UcI`~ zv*IL)8Uz9XyMNt|k5{?!in`9q%2KIRD?KYtV$s0w_ct^&@OZq;%uJ GSyj05lq{ zzrSB1k+9k9mX;O(fK)040C2h7pcpK_ D#L=Ti9S(;^qX7W?`t{3fHlx+BF@(_RbZRsjd>nseJow~_ii*Cz zKC9JAr_;}#Jv%oyr`2i!0Kb3#Mw78;xm>Qaw6xC7&iVQI`}gnD>2$Z-jqT#&$Bzny zV%xTDR)4EC;_S)ga=BcNZHYw#fj}@nKaa%2!^2{+7(xgDc=zrdgm7_j5ddH|n^!bb z$*YV{9vd5j5c+(+A3uH|vpG6C8dMp3mec9nv}u!CtwxevE>|EBfDn4U-kzSGJ$v>@ zB$BSKE|<#{@e4vC4G6r7h*&I^oSYo=kj-WzL4R&;E&w1kHI|ymu8gIyun+)1r_-mW zr j%jGIAE)J8wb?erVk&(8xw&v#M-Me>RyLPR-y!`d+*C$S#sHmt=tJP&?W$}zB zmi-_%H`i=7BN{p!4x`cdZ>^MgclhL0#)4?+^Z5=RK3r2%V=x%*+_@7b-|O{yJf80E zZhxE2rcfyM?c3*cI DoIij5^MB{h;l~gX?7|e~e&F?bYieq8a&j^ guYluI6w!XhKj~ ztyatD^EYnXSX^8@Ffb6*g~Q=!ZEY RIDg_Ww$QH9ps&pw=StAx(oA zTw+p; MMvdht`% kB%95in3#yZR8mQ<28nfm zQDZrpzBC%m-Me?STJ6Zlh{ FX@#DvxPUor(J0gkH0B`VO9bgDyM@NTH zDBQATi%cd%Y%&nS$Bx(--p~dB+`fIgwY9ahw6vt8M5ohLR#qbISFT)%Xzzsb!((@+ z!-IWbi}E>{5JH0&`&`=I-p=80bUK~YY8@IH+P-}|@)4nrP52; V3NkY@6$*vJ;eZeh3=D|HVq_lCXKy^Ayx3Q-UU4`a#7&89mSCd1YeEPOUhJ1C zEG&HR-~pQ7)6)~CuV^#~V`y6}768DZLx;>}v&m#CFE2lH=FH5@43EeA{{1^#?tg^u zJ&2z_e>OEW@p!z02M@k{`F|2Iu~!6MgM_U`h{5~e!-u@Qy#4$4fBN((=pJTfW@gu} zUFe}mB#N>!3~|>V#?VerPX_>Wc6R3H=L-aa8#itY4h~jTRn^zm^LRYB+YJD4yWPlp zx)s6YavK{PCnqOQojTRh(o$4ZG&?)H(jq}5OanrL7n{K6^S^xgf`1-<{rWXx&84L! z0KnYb9O0*74DF1J3^tpMPVv&x5`)2b|Ni}@OP82TCX>ko0EornhK7bHz8L{Fn{9l2 ze0FxWw6v7LV8m7gC6RkF-rz;r5eHbQRMyqi4Gs?4Y_=CKUR=L^9r={d$7Zou0D$i9 z?uCVg@D6qmsM~z*+<& `+12{UDSd{_NQ^ znN0TZ;X|L#7xOGp-gR8~{r>phr&8W^TqNp+c5vBb6#Wme7VPfzuEAPZc&W9Bd?*db zhthz2C=JMmU{A*X;~+%>F&d4CH;%IGI^gkma=CnUhqUgHN~JQH4BJ9m3pZ!$9BMxx lA4&uAp)?>LN*Dw3`3KW!es%T-)d>Iq002ovPDHLkV1jLO&zJxJ delta 2004 zcmV;_2P^o$5A+X^Hh-x}L_t(|ob8)$NK@Y*$IsN6mbvAhHdn*eA9JlN7t#hnkBZDF zilt#zqX?h)VAy}GW=Ra9Kj 1KdT0%(CklVi z(a~}H_HC-VvT%?}rNza?*x_H#fyrd5udfe#mlhTVgQ26N178zG40`tLS-ASM5IJ<{ zkVg%@9#9Xh0rk)tP!FvE_0Ssp#rN;u84O048=XT9`uqEnlaq<%FlU}s(`+{T!i5X7 zy(&oNPy@HyZGW@bh~+S6o>kL{iHRzeYPMGeNgx_bO-+@Ql<@idgoK2mq9Ui$2>@U) z7>$jMVzHRbW|x(f0RSWt2>>7^CB>r*{(j`~<=`_D!3UsiwY9aaTD3~A*Xwk;jEs!M zix;P+rmEFyd}ln;K7amv)22 2B8AnehlgVT RxU0RZpby@L?CTrL2B z(P*62NX=blVsKAS4}{R^bbkH%6&=m?_I8iV_^U=oM`L1Q)M_;vj39{H?S>FePEKmI z+HKpmiN)foswxCQX1qa2rU8jpF(W3EiOc0;hktA~8!hm7JODscR3JI$Iy0X1^mG6K zlgS(y7$_<#LJ&kG68VUakB|TG;X`?O`PHjew{G2f@#4iDJ9fNz^XABrBiY&6YPC8m zD=V1(1hO9Rcs!%gh-zrJ+YJW8|8hkHyTZ?1W<02tPN(z0fddMKqNAhZ-o1N1;wL93 z9e)moMx(J>t#Y}1*REZoqoc{m$s0CoXm4-V>-BcKJ(&Ika&P(h`RC4^>+kRH>+8$O z$*HKQ@DYq42(dgiHum7b17bP&%>D$UOiWBT9FC}{D2KzLR4M@g X%P?*Lbux;85!w24E3(@9|&l#B4jWaj2Q(WB{VyYd4e~qXP!UV|0xaT`B-~{ zo{Ol5G7SQ7i77Fb!@%5X5LyQqGnV~n%jI$v7Z xgsMY-@kv4R(5uFve|6X8}UemF+4o{=g*&j#|I@ez9}iB1}}cpDk>^C9F9(> zvsf%GEiEfou0&6f`q=(x;KR_yn4X?CnM?|WV(;F))6>)FJ2rai)~#DPIXR^F;?0YF z{rWYB!$IAYz(xtqsRpD5FMs}K($mu)J$i)2YqeS*ZTX{t4?`Q{=FOV`fTc^9;#~v; zK`vdov~JzH-rn9BTle7CuV1C5rF=er-@bjXUcEw1>{&t7AY|(SYVdY;cBZDL?%ut- ztE #pSD;mxw*Lo1qEnLeSdwuNF*8_9yS;Z zzAbA~Qc_ZsO689qKaL(fT2@vj6bj8|^K6rN5Hbx&4PJbJKp^=1`7?Id+uJ*1>oC z0KnkjAn94(hPGTT|MKMv0D#No78VwwO_!IKU%7JS#fuk}m6Ztz34YubIaaH+udmN+ zHfLsL#>U15oChV8`+p*$!Hd?T4scOX(b= -G94Po5+uCi>q!a_|#VkozK{!Hai*-EQ~YyMK3uLgA7nOR}=E^m;w; zz6F91mX?;XSgiHy*SEB^5F>$4LmNV9x7+jb@;Dq$Vq#)mUY^BbL0j~3`xxH*@P>v4 zsZ{#-@nfgc8Sp64-gQt+O-%*=J(c#ZgCbNPv^~?#Mbdu}^TF<3=o-w2iI<*>sE5{o zdT0%(ht`04NKMvc;y(`3gb;(lfc~f( iGwT{Bkx - + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 index b88f7ce0c..9d8243a80 100644 --- a/inherit_graph_11.md5 +++ b/inherit_graph_11.md5 @@ -1 +1 @@ -448f5f138376e0a71e7cc0def9a0dc84 \ No newline at end of file +b73da3bdeb56ed8b3261b9f6de7dc7ed \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png index b2cac474661feab20cb090b3b5f746b9979d12c9..3eb1597c1b28f28e5a5889d2540a691b5b317808 100644 GIT binary patch delta 1819 zcmV+$2juv_54#SKHGc;1Nkl O~KT zP$aX!5lI#lt&)hSB(j1=Z;BdG4BHEHhFYs$^r9>aX>L+PBuME*WTg&f?2*lF?)2jH zzZ`d`&OO{~fA8nj?;d{lch1h&bI$JfP9B61aIi`W+XLX>G=G=_a2l`=rvdw<;ul7v z@%HW8Yz<}pAd|_?ojXTePFe>Ri{ 0P6PJgG+-Z21NPxGn8d)q0FTFGxYHzRFgQ3!k|aH5xbm#JCJ5r<#f!7OD^8NA zK`0cm*=+Qf;eX1r>N+bcOQllH_O3XIMT1~4SXWmk6bhFuTc%Vh{eC|HfXCzM^?Hd! zLJ-7_8#e#|QmGUGke8Pi7K6!49*^U%Ob1UueZ7DGe$}c~27}@G^XDZcB^enRD_5>m ztJU~m!pgpQ@uIl6SRfD-6cjWyHAU>mX0v&{-WcW+K!1#umX@%Vh^SO5xm<3sSbBPT zBofK_^XJh^h=T_Y+U@p+h6Vt@*w~oaY^JK=F@(_Ja5OYD(Bt?k)1fDqm6f%$w2X|5 z@cI0jnwnp~e(7{N0Ko6xzo}&WF1OpAmX`ML;lt6 4JpYQSG$6L2 `RW4}SniO^u~yvMb}PUAq k?%g|uLQz&$rdF%BY}pdecw#vZ z^7He}W;4>zZnv9EroXjP;yvM$R~ZLs>G%5&95_&0TWd5L@87>aO}@|P^Lo9Fjg3~T zwST(0de5Fc4u^vz$#v`2b#-+a3 fuFTZ#1-ZaT> zx0@b2oz6#(9?|3YD@T)z@OV64uQxR{)$8?My?PY@;BvX9x@-6D-AzqRR;$%!v!$e@ zq@|^ml$3OIbm;Z^A3uH+6%`#ne*DXqFMrdIVM_3gDa!M}=kwLp*5>BsE?v6x$dMyx z9|QnUf5IpZ27@x0Z1Lj75JEhTxJM_dG95f2?C?;jR0KhYL?VqwQ&m-!laoUwgq79l zbRv-`Jw0747QcM?GOP=`-G1lJoz<&X4-E~?ID7Q-fCsVPRkXIY9y)Xga=)~Q34aJ- zC=^<-V8Qfh$h*d05O7{a!r<|EGYSxq#C+43BTQxW%<+}|ztUii&-GMrdlCC^8n92& zHDJ;N{zpl=227g3|0qe<05^fpoH=vs*fG@Z@pu+3TJ-hnS7aBzdi6>y7H4N?E0xOe z@o^Bfj|~8zThJ)8v9YnZxR@l#n}0WN>U6q-f`TPWmRz}V1tmnRPZ7Hj9Rv6STa?eq zvjTrK?d RjCLW`Ni1l%XhllIy>xDw$zJ2@Nym^EC>iA(< z0|?=%Q>T G-0D!)}zQ05NZ#G}Q ze!XkgE~!*nQ&WR$5au$4#eWg&(+LCuZEbC(rKM}utU&{g6S@XWe>bhHtkmoEt*x!w zwryLnVg=RS-`|gdzP>*6wjfF$J9-N`jH&8}VYOO&dwYNW{JC-C#xU6u1w$H8CU9wK z>BPju_3PIUA3lsHoIQJXU|`_$=g*ffUsfm-AZi~w8Vfoi)7OU(wtu&`S5#C;rP5F+ zWH1<>Jb99pl@-HhpBa2nBx5h4d&?(Jp3KO|a5|mn675A=tyUxwktBKg^l7v&Md@S1 zNEY-|nRpzrKE< -+vfL)Vu3wVDwDx?(W{adGpbuM|bYrNi}9>W}Y~4g2`dbH5gq7 z+qZ8Y8ygF2BuVnYg9l6wW3IvZrtHIMz&@M??89lmJ`v7j`aceGBoLFyg#3JpN$Wr; z6w2jtW`{KIkV>U8nGA24^cyb@R^ZM9_Te;OA5H`I;WS{MKNJcfzhD356SV*U002ov JPDHLkV1h^slotR1 delta 1952 zcmV;R2VeNR4!;kOHGc VvqpI5(o_Pf7xcD~+o?)~0LgAf7=Qb{3u0Dlye25SIH1M;CXAfHt1 zfx%$7b?X*cLs>t_WU|`YTJ&()bzrero<4oL>O)#z7>!1Q!GLW^#V0*^@?^EfvmQBe z *`^7He1dwU5xvfJ$*kAEkI`2-L{UteEP3n40%N-mdM zES9mcF^NQS`SNAtCB)IAM;#7_Mxy}${QC9FY&N6SurY+t>2zu|8hjjoWjy%gii(Q9 zzCNqfN~hD$o;^D^H>cHV0RX>$|3;IsXSrOiw6wI&&d&My`TO_p)9G}#+l}qw B)lrOV|iE-ns}zjf=@k&%(MwzlTx=H0t@U%Pg#yuAGN>(?hvoT#X%P^;BtWo7Y< zCzkynH#gU8HX|B391f$=_;0P0cz5{ZRmOs7>GSyxA3j`DQ)4g~?%cT(Cg1DzdOV)) z?tgBZ&8AQ&_U+r}bUL%MvxP$8=;)|kuXi{c@r);y?^a!1U0+{6H8nLpK7Qc9f%f+H zFv%{L3m^aa^XJ~Zd-yp1%F!evxZQ4#$CH|x>hX9Q8yf)t3kwUO&f2?oZ*Om}&1SRP z?I|fKX=!O9k?75vH~sznCX-1Z5S%}M{(tl5&*8@q670eh<$mDxdTVNGa&mGqGBQq| zK8>t{008t)7>WIUzf2}$GMNxUY)rUDC#o_YY(miHp;D>XY&M_I@9OHRuCC^AIA}sp zS*=#f=kqsi+*n*(JTNd2)P=+0Xl-pRC@7eoo{l(s`2BzeF~6&L{P^*)W5*!%OMi=) zfDi@(fejlrgik}fYwQaG%Bx5iG#V|U0E8swPGgM_%IaC;SN8u(gEc VH^21|y zr^ADNV2koOnGiyQ7yDe=-rmmPaCADI)oL9Y8rr^nJMs~sk4^X>jco*B4S#K)&qt%t z+S=L*3JNkaGZhMj!{LAs4h#&4#bRV0(PwWwp}g2vuU>ID9K=nDZI)o7ylX-T4PNY* zDJ(2}@ZbTO-_z3*rmtu;2xDklEEWL3p+kqvX0yp;DlacTbLPy<%nXmm`~LkqT<(8_ z?>&g0KYungHSu`7g9i`3e1G{8F|k(!UW0_KMTo)s;lqc#yuAJU_ka5IDd-+%W@cvB zu3hM%NF<7~G7NFoAI8v5PfrH`bar;;=jRIqf*Ut(3=R%fRaMp3*YkKhx7!T>aJ${e zd%6|D<#HPv8z(0xPn|l|($Z2?R5Uv~yV4>-BuoQBgBP2?=kvdO`G0~Qe*OA2V$G$c zB>=$O+#KPjVGQkzj0`rLjZX2>(h`Hgc>n(WrAwEXOeT}b1OSM|;)aHXD83m1Hk)mH ze0+9xwzRaA!C=Hz1SOGsGTz`t+7Sm>sZ`e0)eQ~~+HAHLFJ4@~ejWLg(8p%6SO9?T z?(T(!h42n`5UAUH?tk353l}b!&E{|4zSY&$RaI3jE-s>%KLEgNHs8E?Gn!H;5W?Z% z;mXQNsZ<&W1oV3SqeqXjva+Hd9x>R3DW3fR5*fT$2RIN2baZqS6&0nYr GgVm zTjjBFQ&SU*#oD=Z=g`m)J`;pBv>}9EulM4`iyRJz%jMSA)_;1vUhGgo*!>`sAO7sw zGnq{G@Zm$B&lmG7QQmc2`2GI)-=|XEbzCIsg?4b+WEA}mu@>y^^{&BMSa_+mh ^k7_cyhUXb%(U>kV>U8nGD-PTMIX5>l|u7 mARkHt@}V>!9~nvm^7#kTX?}I~2h|Ax0000 - + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 index 9d8243a80..c9dce4020 100644 --- a/inherit_graph_12.md5 +++ b/inherit_graph_12.md5 @@ -1 +1 @@ -b73da3bdeb56ed8b3261b9f6de7dc7ed \ No newline at end of file +09580e735d0e3bb01d18b482b6830ac0 \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png index 3eb1597c1b28f28e5a5889d2540a691b5b317808..00a1590bc4e382dd03469b55bfefa68b5ae33a85 100644 GIT binary patch delta 1335 zcmV-71<3ll4!8;-iBL{Q4GJ0x0000DNk~Le0001m0000b2m$~A0OO>+g^?i?e+2DG zL_t(&f$f`LD7#-A$IqDLPZ={akwldI$x^m5xp1e5hMGjig-DX5mWZ<4P~>Lef<`vx z#*IHMt=Lc^wGc_0e>Ix@X|sRld-42!>#=7x=HH_|udDZScFy^HcHYnVoM&4jK?nf> zZV3791PES1_<=77Kkx 18Pu-WYH?r!(xtNo$TXqK0ke>|n& zMWs?Hl}dCA8QV!JmHt#d!A?z0jYkV{e&7qj4}3xRfiDO@@CCm7AbBIOsV*-sk+E*^ zC-_D`uCA_VG#Xa>MyXWZzb3Hg6bhxUuP?B%zlfLT-LJysa_MwBto99!e@3Iz>7S2I zrBa1L;pgZ1VFKA74u?Y^5TvA}#KpyRbadEkHUI#LM3Tv5OeT{;p$rcX0{~bo765?3 zV0dWox`w=`o~*8}=H=x@Mn yB8?;xX>M*VH#e6?qm7J=h{fXc^z@jRnEw8L zuhVvRcDA&%Alhs;M@2;)e;plRW9f7{i^cNMH3@8#7a)qIr6rFRuLy-gE|;s(XiiQ} zm`r9*PY?1VN^NbeUay~?o(2FsK0aPtT)1aLYY5@<^YirdG*$xuj*pK`C>#!l!C(jr z3*+ gxTYxLhum%SE>Y;zwp?=KcLW zqBl1;^Yil|gaCl;?QIC5-EIc}TwGlE@Z&A8x69hvn$2cAJv}v>%@D%f-CbmIq_aYy za7RRIbac0HI-Lv#e?u;pLkP>u%ST5?k)T$qb$))nsHlj^WQs&0lgZ>aPp{nG-VP29 zrlh1)R8(wiY`9!5zeB#pkBEo}^pa616bK;z;Qajjzezvg2eQ^4tgo+^m6fqrEIyx) z_QTy7tFeAS2;1A+J32aaI$d~pxJILa|KHb5O-=jz`+n1Ve-C!MT`HAwIGn7kEF^>v zuzmz`ek3I&x!=5AuUDy5NP9@gw>+)cY__VZs;;gsrBXRHHT9XPYHDg^GMPjoDK0Kf zPEG~@&}g*m?Cjm$-JP8sy t1T!f@VIf`Lm(^2 W()>{Z|w#`xVgDmU0uy$v0N_K&d$!_;v$tw z{cwut&GOEAWwlzny1Eh*6Jujz8yg#uf(tMe!{KnSf7$Hl=x7KbTEo{h1g*gv^-3rd zQYe(Pv^0@O#N+Ykbh_7wXzjILK?vL0+9D$(4F&@?ie9fDA0N-i$hf|~_B+4F*p-zP zHk-Y$uwb*<{4SuIuQ@;dGy;L3zP{c^2bar*JcE4*yWJi@GFU&p@$(?wczJoby}g~C zon2U1fAG pz2ApF1=gdh0gAM2!EDv{S{4HW P0qEW-NXlb;HHpuEl4~S4Cv%nEa z78I?Lh^Qp8f<|wO8c__}3v-5At6ub?EDLFFQbZ(3=|p6u4rc6;&28@V;`F~9cc;!h z+-raD=hg2Xe)o6I&ewC!?)Od}gb;ABN($Qp;NUcv18^F!52pe9q~aGwqw)6b+iVSG z{vead&Ye3)T~1mD7K`QS)2ECNX?|fcnT$pw-jYgBYHMp_YCQ9i%F4>H7VbP?A5H`I z;WS_$P6PJgG?>J|zyOcOW4O~KYA`rBNRlKyX1MaKx+VzX;>C-zy(> N+bcOQllH_O3XIMT1~4SXWmk6bhFuTc%Vh{eC|HfXCzM^?Hd!LJ-7_8#e#| zQmGUGke8Pi7K6!49*^U%Ob1UueZ7DGe$}c~27}@G^XDZcB^enRD_5>mtJU~m!pgpQ z@uIl6SRfD-6cjWyHAU>mX0v&{-WcW+K#Z1_mavwHs8lMsTyC*gdU|>!63O}V=g~`u zg9i`V?e>O-1^~d=*qGUDrmEpFgwWw|G&D5O m9@0AjEs!%`TUxinqR+u z>2x{(!0+F`sbu^vx7(eTmiF-B!_m=EtyatD^F1C9-o>X+pQ@{?v$L~DMn-0wJ-J*i zm&@^%STraqDjFRfMR9w3`-Tl0AcO#b4<9~22m^rt0KjZE&uXTUSDBvN)6)YX^!xqa zzkf%w+11q*RvEv`;czTmxKOQDqhz<+9SVgYgg&3|@#Du^w{De4BpQvz?RL-j0bwK! zB6t-uVzF3qb91Rnf*??kpPvr^NKK8UX0j{etX;bn0Kn(-hlYlfN~PQF7K_Ex 18t>n~KTW>R=kt2Kjg5^~tF^kide5Fc4u^vz z$#v`2b#-+a3 fuFTZ#1-ZaT>x0@b2oz6#(9?|3Y zD@T)z@OV64uQxR{)$8?My?PY@;BvX9x@-6D-AzqRR;$%!v!$e@q@|^ml$3OIbm;Z^ zA3uH+6%`#ne*DXqFVl} ~gEE 9XuiI@KC8#1VM;IB8^5 U6sG>(^5Wd-v|`@9*#K?k+4Wtgo+!QTy0Vr;~0$qs)qm3YW`;jFA2N_q$v!jYfm+ znyNm<+qZ9Xa&nMylGq7JjCVaNa1ACVCi3#~IyyQagyrSsw{G2nll^2ghQh)^7`2Zb z(Sk;qot>RjCLW`Ni1l%XhllIy>xDw$zJ2@Nym^EC>iA(<0|?=%Q>T G-0D!)}zQ05NZ#G}Qe!XkgE~!*nQ&WR$5au$4 z#S!b%2?PRdZEdBcrEAu#K?9Bxx&};tH?6F!)a&)Ft*zU(ZCkNo1=Zf)-;aX6zCQG} zAW9!QdJ8&?sp^MewOV_7dw>4?xpCvhFxe6XLmE&faA|4j#Kgq)>(>t-K8z=vJ$rUw zVBquT&zCP>Rwxu8Y9Biq3pygx*M|_cx3^bRR7j=LP$* JW5Y-m^i-L69I-ydvuDp_GFfwT zv)}Je?1Zpz9?+?)t5YZx)Mb>fni(b#2qdX;V%{gm%=q~D@bIu!t8H#>X0qQHNYuOQ zXkheA?(Xj1ym|A{qepk{+(|WNW@er^ae~QV%rzKY2iv!A9~&DBYa~hX!Gi}(4r8vt z`KIi{X}~_52JFLWz&;VqWcoi2awHIw$%OoTib?B0C=|-&a%P7#?~qERGMNl-ne-bk p4p!jK1NPxGU>{Bc_Te;OpFavAzhD356SV*U002ovPDHLkV1gB5mzMwl diff --git a/inherit_graph_13.map b/inherit_graph_13.map index eb27d4bf3..c694a417c 100644 --- a/inherit_graph_13.map +++ b/inherit_graph_13.map @@ -1,3 +1,3 @@ diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 index c9dce4020..db47bd787 100644 --- a/inherit_graph_13.md5 +++ b/inherit_graph_13.md5 @@ -1 +1 @@ -09580e735d0e3bb01d18b482b6830ac0 \ No newline at end of file +767a37ccf50cdbc3532e1a834ba5df4d \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png index 00a1590bc4e382dd03469b55bfefa68b5ae33a85..b050192aef1a7e71623f55c2117a8413b5426c0a 100644 GIT binary patch literal 1633 zcmV-n2A=teP) zwJ){ zbN^;uIG aV-*dkA{?6f!Q3xR*%zIM)wg5t05TC>W@ktyIpTvQL->}>57cN}* zTT%#oG#btE xl_C3+ zI3PZW1LBi7AU=tM`Q;NuQ7)Hj=1gMa#DmM_q9_Ug0)fD(Q>WIhT`QBx^78WP>gqzF zP&^%zM-qJ+9v)t`YLzga|5Q~~y?pud{{8!-qod8u%^e*bH8nLb{VZsjuC1+2s-z_P z#Imf{>lMcHADhi~{`~n(n>MXnxw53B#AGr(eE1NipT&w5D~v{CQY9tgQzQ~G7z}IH ztXaN%d1Yl~I2;B5ilVGmt6Ht5X}Z3?9sss%*#ZEoSFetW;rBujf6-`fZ^QGMOwl zH@Bgo0Vi!X+s2I>7cXACZr!@p)>iJ~r%#_Ml}ehX&z(Croos|qV`F1MK|y+Yx<;dU z@!|!(lBVg)moNK#KHMxRDf#s2Q`9W5?4F(;xm@1T(!xzaxDEhdHk%6z3o|k@wr<_p z+1Z&$kwiQ!7E4qnCPt%CtJS*Q?xCR}wOW1h 2&)2{zZ!xH8eEfJi{<7%i?kR`uY$;EX#5u2xaHz=U=~mo%{A1H*RnuS(bhM`nAz$ zEG{mVN~O1N-$t=~8X6jk$_v*)rBdCzd6WB=Teof{;8P-X&+T?+Wo1zmMNw2)S=q?Q z2+n6`X9Ivl660M|{NObeIwzG%M@B~W?AfEyXquawaWW$# Njd05CN*WwBTgLTa_TwzhU~aL`~d;B$nK{QP`jGHM-M zE>~e;A@^xPK|un`l88^)+1cD``h33r{{CNMr6loG5)Oy=?b}yfU2V79FI~EXlc7*3 z7!0 lJK zb&$*D@7}%Rnjb!Vh=11qj+sCoold9M>xYMj-@kvqYu7H5$uz^oc#nySCnqPlXM!Kk zKp+qZ27?lbBp3|V)ztyO_wU~UpscK{wYAmb@p!%7l$4az)YSN8S5{Wm)YNozba*_T zuCA`rr%wYwT3XtnLx;-C%O5{}>~uP @<;oSEPM4XPi4baQYf~r`3l}cjuwlc42M>h3xL7EgW!c8YMx|1@ zWXY1vn>Rmy{v0cbL?UO-oZ*g<27}?pj~`L9h-V61+|<;hR4UWc(@RTBZ8qD|rAudC z;XiYZAk2!+&Q6EJ!8L6*n^LKqxyzq9M-XPkn>TL`9y~ZWI2a5D2L=WV2E*aQhi5y; z|2mry;z6(1Pfbnj-Mjbe*ROK9yrQCl|ATs*5TBCHf&~le>+8996Ny3Uo;V;ri38%3 zI3PZWgBa(CJ9qBPy$%AOv9U4y@}47xPvzz1bEStcEn2OX-=q-v|C1OX`;#~zK8XY3 flQ u delta 1335 zcmV-71<3m047ds*iBL{Q4GJ0x0000DNk~Le0001m0000b2m$~A0OO>+g^?i?e+2DG zL_t(&f$f`LD7#-A$IqDLPZ={akwldI$x^m5xp1e5hMGjig-DX5mWZ<4P~>Lef<`vx z#*IHMt=Lc^wGc_0e>Ix@X|sRld-42!>#=7x=HH_|udDZScFy^HcHYnVoM&4jK?nf> zZV3791PES1_<=77Kkx 18Pu-WYH?r!(xtNo$TXqK0ke>|n& zMWs?Hl}dCA8QV!JmHt#d!A?z0jYkV{e&7qj4}3xRfiDO@@CCm7AbBIOsV*-sk+E*^ zC-_D`uCA_VG#Xa>MyXWZzb3Hg6bhxUuP?B%zlfLT-LJysa_MwBto99!e@3Iz>7S2I zrBa1L;pgZ1VFKA74u?Y^5TvA}#KpyRbadEkHUI#LM3Tv5OeT{;p$rcX0{~bo765?3 zV0dWox`w=`o~*8}=H=x@Mn yB8?;xX>M*VH#e6?qm7J=h{fXc^z@jRnEw8L zuhVvRcDA&%Alhs;M@2;)e;plRW9f7{i^cNMH3@8#7a)qIr6rFRuLy-gE|;s(XiiQ} zm`r9*PY?1VN^NbeUay~?o(2FsK0aPtT)1aLYY5@<^YirdG*$xuj*pK`C>#!l!C(jr z3*+ gxTYxLhum%SE>Y;zwp?=KcLW zqBl1;^Yil|gaCl;?QIC5-EIc}TwGlE@Z&A8x69hvn$2cAJv}v>%@D%f-CbmIq_aYy za7RRIbac0HI-Lv#e?u;pLkP>u%ST5?k)T$qb$))nsHlj^WQs&0lgZ>aPp{nG-VP29 zrlh1)R8(wiY`9!5zeB#pkBEo}^pa616bK;z;Qajjzezvg2eQ^4tgo+^m6fqrEIyx) z_QTy7tFeAS2;1A+J32aaI$d~pxJILa|KHb5O-=jz`+n1Ve-C!MT`HAwIGn7kEF^>v zuzmz`ek3I&x!=5AuUDy5NP9@gw>+)cY__VZs;;gsrBXRHHT9XPYHDg^GMPjoDK0Kf zPEG~@&}g*m?Cjm$-JP8sy t1T!f@VIf`Lm(^2 W()>{Z|w#`xVgDmU0uy$v0N_K&d$!_;v$tw z{cwut&GOEAWwlzny1Eh*6Jujz8yg#uf(tMe!{KnSf7$Hl=x7KbTEo{h1g*gv^-3rd zQYe(Pv^0@O#N+Ykbh_7wXzjILK?vL0+9D$(4F&@?ie9fDA0N-i$hf|~_B+4F*p-zP zHk-Y$uwb*<{4SuIuQ@;dGy;L3zP{c^2bar*JcE4*yWJi@GFU&p@$(?wczJoby}g~C zon2U1fAG pz2ApF1=gdh0gAM2!EDv{S{4HW - + diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 index db47bd787..693a576ce 100644 --- a/inherit_graph_14.md5 +++ b/inherit_graph_14.md5 @@ -1 +1 @@ -767a37ccf50cdbc3532e1a834ba5df4d \ No newline at end of file +346d632c706916a7b10653e1b85bd7a5 \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png index b050192aef1a7e71623f55c2117a8413b5426c0a..7956e292e8d0fc1d8190d5a71c20d7897e51ff6a 100644 GIT binary patch delta 1279 zcmV Gm12moOv z3BO$cgb|nxdx6=o7nluuL8%?1f6+KKHT7GiK&q>&2L}hk-8b{b>2$8Gt^IgO5C8x; zIyy2Mjnok|`k>X-)t{;d@;}YZ%@HGTzhN&h8} 33_wOSDb z`RuQro}NZVMv97xI2?{pC>$Rj_xXI^QC ZvQY;Yc7|oe^e?ztI*fi zcY1odzP^5Yd#lxIx3{+y3dLuw }(OV*miKSS(*vz^ANZz~k|b zkB`IMgM)+o{QNJsmP(~ksgybr&%6l+gDRCuAP}Udr}y^uzP`Q!01yN*7z|>un9Jo( zPEG; s16birJ&t%Hwa_8sgy9_VzFE y^m_f} %~mn(cC(IQON?-D(4;>kuR6uRARvc0>zD-wywv)bR^CkP@C2#|mA zKdx!ff*6J+CnwL&f6kJT;5Z%%g=p&`?Mx;U!LYOj0s$07&1N$>zOk`UT3SkLN*)jj zh0f2<)oOKRWo2Sw;_~t`lL(XbyL`=>=5#u -BnqAjD#^QmMSSxKOE7 t=C!TEhe17 32DC&pEhm6e5}sLf_0yH=|;H#e8oG!zQ8wzghfU4=&^5(zo0 zVu*an1sc!4f7#mFIy^jVx7)9;ubY~hW@ct$9E{_5bo=q~QLEKPx8J3 k5bab@6y`9!EH8r)PqeCW>?d o zFf=sO*4FlMkqGNgKwaQIxZn7EzJY;(?CfkFkJr`Je}&^X5w%rVES6v}SY2J6nwm-w z1hvhy2hfT{w3n8a3JVMW{P|N}UcR-p#Z(VflWI*Je|UK4?Ci|Q$l&w&a=F~^_cNIW zgTb+}vGDz&N~IzXrWIkbewXO|1|cZl*{rOr$Ye4CetGj7knaenFKF2H%mzXQX2V`! zHtYpvRl{CjHtYpv!(L!E?1kph!ph3Z&({HQxm zwJ){ zbN^;uIG