Skip to content

Commit 8872517

Browse files
committed
Cut edict paragraph
1 parent ab889a0 commit 8872517

File tree

1 file changed

+23
-45
lines changed

1 file changed

+23
-45
lines changed

content/news/037/index.md

Lines changed: 23 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -192,62 +192,40 @@ that expands traditional ECS feature set.
192192

193193
New version 0.2 is getting [ready for release].
194194

195-
This ECS is based on archetypes (aka SOA storage) to allow fast cache-friendly
195+
This ECS is based on archetypes for fast cache-friendly
196196
iteration. And there are quite a few novel features:
197197

198-
[Edict] allows users to express relations between entities using [`Relation`]
199-
trait. Conceptually they are components that gets attached to a pair of
200-
entities - origin and target. Relation is automatically removed when one of the entity
201-
is despawned. Additionally relation may be "owned", automatically triggering
202-
despawn for "owned" entities when last owner is despawned. Relation may be
203-
declared as "exclusive" so that it is replaces old relation on origin entity.
204-
Provided out of the box relation [`ChildOf`] is exactly this - "exclusive" and
205-
"owned" - and can be used to define entity hierarchies.
206-
207-
User may define hooks for components and relations to trigger arbitrary actions
208-
when component is dropped or replaced, or if relation target is dropped.
209-
Hooks can be defined in [`Component`] trait implementation.
210-
Also [`WorldBuilder`] allows to dynamically override hooks for the component
211-
type.
212-
213-
Unlike most ECS with [`Component`] trait [Edict] allows using component types
214-
that do not implement [`Component`]. Component inserting methods
215-
(spawn, insert etc) can be used only with components that implement
216-
[`Component`].
217-
Each such method has [`*_external`] counterpart that allows for [`!Component`]
218-
types but require explicit registration.
219-
220-
Built-in change tracking with fast and flexible queries for modified components
221-
can be used to implement complex use cases. For example incremental saves can
222-
fetch all components modified since previous save. For netcode components
223-
modified since last ACK can be fetched as efficiently.
224-
225-
Another novel feature is type-agnostic component borrowing.
226-
Component type may define list of types that can be borrowed from it. Important
227-
use case is borrowing [`dyn Traits`].
228-
Editor implementation may borrow some `dyn EditorComponent` and use it to show
229-
widget for recognized components. Borrowing can be used with runtime-known
230-
[`TypeId`] as well as without one.
198+
[Edict] allows to express relations between entities using [`Relation`]
199+
trait. Relations are linked to a pair of
200+
entities - origin and target. This opens a wide range of opportunities to create
201+
entity graphs with custom logic.
202+
203+
Custom hooks for components and relations to trigger actions
204+
when component is dropped/replaced, or when relation target is dropped.
205+
206+
Optional [`Component`] trait. [Edict] allows using component types that
207+
do not implement [`Component`] with some restrictions.
208+
209+
Change tracking with flexible queries for modified components
210+
suitable for complex use cases. E.g. incremental saves can
211+
fetch all components modified since previous save.
212+
213+
Type-agnostic component borrowing.
214+
Component type may define list of types that can be borrowed from it.
215+
Important use case is borrowing [`dyn Traits`].
231216

232217
[Edict] supports parallel execution.
233-
There's [`System`] trait that works with built-in [`Scheduler`].
234-
Functions with certain argument types can be transformed into [`System`]s
235-
similarly to [`bevy_ecs`].
236-
The [`Scheduler`] is very easy to configure and use. Any conflicting pair of
237-
system define implicit dependency from system that was added earlier to a system
238-
that was added later. This way multi-threaded execution runs the same way as
239-
single-threaded would.
240-
[`Scheduler`] uses external executor using [`ScopedExecutor`] trait. Implemented
241-
for [`std::thread::Scope`] and [`rayon::Scope`] under "rayon" feature.
242-
[`Scheduler::run`] returns an iterator or [`ActionEncoder`]s that should be
243-
executed with mutable access to [`World`].
218+
Built-in scheduler uses systems that implement [`System`] trait.
219+
Functions can be safely transformed into systems similarly to [`bevy_ecs`].
244220

245221
[Edict]: https://github.com/zakarumych/edict
246222
[@zakarumych]: https://github.com/zakarumych
247223
[ready for release]: https://docs.rs/edict/0.2.0-rc.3/edict/
248224
[`Relation`]: https://docs.rs/edict/0.2.0-rc.3/edict/relation/trait.Relation.html
249225
[`ChildOf`]: https://docs.rs/edict/0.2.0-rc.3/edict/relation/struct.ChildOf.html
250226
[`Component`]: https://docs.rs/edict/0.2.0-rc.3/edict/component/trait.Component.html
227+
[`WorldBuilder`]: https://docs.rs/edict/0.2.0-rc.3/edict/world/struct.WorldBuilder.html
228+
[`!Component`]: https://docs.rs/edict/0.2.0-rc.3/edict/component/trait.Component.html
251229
[`*_external`]: https://docs.rs/edict/0.2.0-rc.3/edict/world/struct.World.html#method.spawn_external
252230
[`dyn Traits`]: https://doc.rust-lang.org/book/ch17-02-trait-objects.html
253231
[`TypeId`]: https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html

0 commit comments

Comments
 (0)