bevy/crates
poopy 3a66d88c83
command based entry api with EntityCommands::entry (#15274)
# Objective

It's convenient to be able to modify a component if it exist, and insert
a default value if it doesn't. You can already do most of this with
`EntityCommands::insert_if_new`, and all of this using a custom command.
However, that does not spark joy in my opinion.

Closes #10669

## Solution

Introduce a new commands type `EntityEntryCommands`, along with a method
to access it, `EntityCommands::entry`.

`EntityEntryCommands` exposes a subset of the entry API (`and_modify`,
`or_insert`, etc), however it's not an enum so it doesn't allow pattern
matching. Also, `or_insert` won't return the component because it's all
based on commands.

## Testing

Added a new test `entity_commands_entry`.

---

## Showcase

```rust
commands
    .entity(player)
    .entry::<Level>()
    .and_modify(|mut lvl| lvl.0 += 1)
    .or_default();
```

---------

Co-authored-by: Jan Hohenheim <jan@hohenheim.ch>
2024-09-19 15:20:13 +00:00
..
bevy_a11y Reflected traits for resources and components: bevy_a11y (#15192) 2024-09-14 01:43:16 +00:00
bevy_animation Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
bevy_app Unify crate-level preludes (#15080) 2024-09-08 17:10:57 +00:00
bevy_asset Add basic docs explaining what asset processing is and where to look (#15058) 2024-09-17 22:59:12 +00:00
bevy_audio Reflect derived traits on all components and resources: bevy_audio (#15211) 2024-09-15 14:24:00 +00:00
bevy_color Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
bevy_core Unify crate-level preludes (#15080) 2024-09-08 17:10:57 +00:00
bevy_core_pipeline Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
bevy_derive Remove deprecated bevy_dynamic_plugin (#14534) 2024-07-30 15:31:08 +00:00
bevy_dev_tools Implement enabled flag for fps overlay (#15246) 2024-09-17 15:16:28 +00:00
bevy_diagnostic Apply unused_qualifications lint (#14828) 2024-08-21 12:29:33 +00:00
bevy_dylib Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org (#12965) 2024-07-29 23:10:16 +00:00
bevy_ecs command based entry api with EntityCommands::entry (#15274) 2024-09-19 15:20:13 +00:00
bevy_encase_derive Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org (#12965) 2024-07-29 23:10:16 +00:00
bevy_gilrs Update gilrs requirement from 0.10.1 to 0.11.0 (#15245) 2024-09-16 23:34:04 +00:00
bevy_gizmos Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
bevy_gltf Reflect derived traits on all components and resources: bevy_gltf (#15218) 2024-09-15 14:47:43 +00:00
bevy_hierarchy Rename Add to Queue for methods with deferred semantics (#15234) 2024-09-17 00:17:49 +00:00
bevy_input Use of deprecated function in example for ButtonInput (#15221) 2024-09-15 15:22:39 +00:00
bevy_internal Remove all existing system order ambiguities in DefaultPlugins (#15031) 2024-09-03 20:24:34 +00:00
bevy_log Unify crate-level preludes (#15080) 2024-09-08 17:10:57 +00:00
bevy_macro_utils Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org (#12965) 2024-07-29 23:10:16 +00:00
bevy_math Fix floating point math (#15239) 2024-09-16 23:28:12 +00:00
bevy_mikktspace Fix underflow panic in InitTriInfo (#14893) 2024-08-25 14:13:23 +00:00
bevy_pbr Implement percentage-closer soft shadows (PCSS). (#13497) 2024-09-18 18:07:17 +00:00
bevy_picking Reflect derived traits on all components and resources: bevy_picking (#15225) 2024-09-15 16:17:39 +00:00
bevy_ptr Remove redundent information and optimize dynamic allocations in Table (#12929) 2024-09-16 22:52:05 +00:00
bevy_reflect bevy_reflect: Add Reflectable trait (#5772) 2024-09-18 00:36:41 +00:00
bevy_render Enable clippy::check-private-items so that missing_safety_doc will apply to private functions as well (#15161) 2024-09-18 15:28:41 +00:00
bevy_scene Rename push children to add children (#15196) 2024-09-16 23:16:04 +00:00
bevy_sprite Use FloatOrd for sprite Z comparison and ignore sprites with NaN (#15267) 2024-09-17 23:27:53 +00:00
bevy_state Throw real error messages on all failed attempts to get StateTransition schedule (#15284) 2024-09-18 13:43:06 +00:00
bevy_tasks Unify crate-level preludes (#15080) 2024-09-08 17:10:57 +00:00
bevy_text Reflect derived traits on all components and resources: bevy_text (#15229) 2024-09-15 17:21:02 +00:00
bevy_time Unify crate-level preludes (#15080) 2024-09-08 17:10:57 +00:00
bevy_transform Rename Add to Queue for methods with deferred semantics (#15234) 2024-09-17 00:17:49 +00:00
bevy_ui Enable/disable UI anti-aliasing (#15170) 2024-09-16 23:06:23 +00:00
bevy_utils Allow bevy_utils in no_std Contexts (#15279) 2024-09-18 16:00:03 +00:00
bevy_window Reflect derived traits on all components and resources: bevy_window (#15233) 2024-09-15 17:49:00 +00:00
bevy_winit Remove ReceivedCharacter (#15126) 2024-09-10 00:22:06 +00:00