Skip to content

Commit

Permalink
doc: more about the reactive mixin
Browse files Browse the repository at this point in the history
  • Loading branch information
skypjack committed Oct 2, 2024
1 parent 4f0b7d3 commit c9d7fec
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
2 changes: 0 additions & 2 deletions TODO
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,4 @@ TODO:
* refine the storage fallback mechanism for views (ie alloc?)
* sigh_mixin: automatic signal registration
* sigh_mixin: change cb signature from reg/entt to storage/entt (breaking for the good)
* reactive_mixin: note about no-auto-disconnect mechanism
* reactive_mixin: in-code and md doc about callback signature
* don't pass reactive storage by default to callback
23 changes: 17 additions & 6 deletions docs/md/entity.md
Original file line number Diff line number Diff line change
Expand Up @@ -489,8 +489,8 @@ storage.bind(registry);

In this case, it must be provided with a reference registry for subsequent
operations.<br/>
Alternatively, when using the value type provided directly by `EnTT`, it's also
possible to create a reactive storage directly inside a registry:
Alternatively, when using the value type provided by `EnTT`, it's also possible
to create a reactive storage directly inside a registry:

```cpp
entt::registry registry{};
Expand Down Expand Up @@ -622,10 +622,21 @@ for(auto [entity, pos]: storage.view<position>(entt::exclude<velocity>).each())
The registry used in this case is the one associated with the storage and also
available via the `registry` function.

Finally, it should be noted that a reactive storage never deletes its entities
(and elements, if any).<br/>
To process and then discard entities at regular intervals, refer to the `clear`
function available by default for each storage type.
It should be noted that a reactive storage never deletes its entities (and
elements, if any). To process and then discard entities at regular intervals,
refer to the `clear` function available by default for each storage type.<br/>
Similarly, the reactive mixin doesn't disconnect itself from observed storages
upon destruction. Therefore, users have to do this themselves:

```cpp
entt::registry = storage.registry();

registry.on_construct<position>().disconnect(&storage);
registry.on_construct<velocity>().disconnect(&storage);
```

Destroying a reactive storage without disconnecting it from observed pools will
result in undefined behavior.

## Sorting: is it possible?

Expand Down

0 comments on commit c9d7fec

Please sign in to comment.