doc: snapshot (close #984)
This commit is contained in:
@@ -1097,9 +1097,8 @@ than one snapshot in a sort of _continuous loading_ that updates the destination
|
||||
one step at a time.<br/>
|
||||
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 (as an example, as data
|
||||
members or gathered in a container).<br/>
|
||||
snapshot. Wrapping the archive is a conveninent way of updating identifiers that
|
||||
are part of components automatically (see the example below).<br/>
|
||||
Another difference with the snapshot loader is that the continuous loader has an
|
||||
internal state that must persist over time. Therefore, there is no reason to
|
||||
limit its lifetime to that of a temporary object:
|
||||
@@ -1108,11 +1107,20 @@ limit its lifetime to that of a temporary object:
|
||||
entt::continuous_loader loader{registry};
|
||||
input_archive input;
|
||||
|
||||
auto archive = [&loader, &input](auto &value) {
|
||||
input(value);
|
||||
|
||||
if constexpr(std::is_same_v<std::remove_reference_t<decltype(value)>, dirty_component>) {
|
||||
value.parent = loader.map(value.parent);
|
||||
value.child = loader.map(value.child);
|
||||
}
|
||||
};
|
||||
|
||||
loader
|
||||
.get<entt::entity>(input)
|
||||
.get<a_component>(input)
|
||||
.get<another_component>(input)
|
||||
.get<dirty_component, &dirty_component::parent, &dirty_component::child>(input)
|
||||
.get<dirty_component>(input)
|
||||
.orphans();
|
||||
```
|
||||
|
||||
@@ -1125,11 +1133,9 @@ When _getting_ an entity type, a loader restores groups of entities and maps
|
||||
each entity to a local counterpart when required. For each remote identifier not
|
||||
yet registered by the loader, a local identifier is created so as to keep the
|
||||
local entity in sync with the remote one.<br/>
|
||||
In all other cases, entities and components are restored in a given storage. In
|
||||
case the component contains entities itself (either as data members of type
|
||||
`entt::entity` or in a container), the loader can update them automatically.
|
||||
To do that, it's enough to specify the data members to update as shown in the
|
||||
example. Named pools are supported too:
|
||||
In all other cases, entities and components are restored in a given storage. If
|
||||
the registry doesn't contain the entity, it's also tracked accordingly. As for
|
||||
the snapshot class, named pools are supported too:
|
||||
|
||||
```cpp
|
||||
loader.get<a_component>(input, "other"_hs);
|
||||
|
||||
Reference in New Issue
Block a user