From 0367716ff343910972b49b931a87f9e12700a2d2 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Thu, 22 Oct 2020 12:14:43 -0700 Subject: [PATCH] ecs: ergonomic query.iter(), remove locks, add QuerySets --- crates/bevy_core/src/label.rs | 4 +- crates/bevy_core/src/time/timer.rs | 2 +- crates/bevy_ecs/hecs/macros/src/lib.rs | 75 ++- crates/bevy_ecs/hecs/src/access.rs | 364 +++++++++++++ crates/bevy_ecs/hecs/src/archetype.rs | 7 +- crates/bevy_ecs/hecs/src/lib.rs | 11 +- crates/bevy_ecs/hecs/src/query.rs | 508 ++++++------------ crates/bevy_ecs/hecs/src/query_one.rs | 144 ----- crates/bevy_ecs/hecs/src/world.rs | 121 ++--- crates/bevy_ecs/hecs/tests/tests.rs | 96 ++-- crates/bevy_ecs/src/lib.rs | 4 +- .../bevy_ecs/src/resource/resource_query.rs | 34 +- .../src/schedule/parallel_executor.rs | 56 +- crates/bevy_ecs/src/schedule/schedule.rs | 2 +- crates/bevy_ecs/src/system/commands.rs | 4 +- crates/bevy_ecs/src/system/into_system.rs | 276 +++++++--- crates/bevy_ecs/src/system/query.rs | 451 ---------------- crates/bevy_ecs/src/system/query/mod.rs | 203 +++++++ crates/bevy_ecs/src/system/query/query_set.rs | 25 + crates/bevy_ecs/src/system/system.rs | 129 +---- .../bevy_pbr/src/render_graph/lights_node.rs | 5 +- .../bevy_render/src/camera/active_cameras.rs | 4 +- crates/bevy_render/src/camera/camera.rs | 12 +- .../src/camera/visible_entities.rs | 6 +- crates/bevy_render/src/draw.rs | 22 +- crates/bevy_render/src/mesh/mesh.rs | 2 +- .../src/pipeline/render_pipelines.rs | 2 +- .../src/render_graph/nodes/pass_node.rs | 8 +- .../nodes/render_resources_node.rs | 10 +- crates/bevy_render/src/shader/shader_defs.rs | 6 +- crates/bevy_sprite/src/sprite.rs | 2 +- .../bevy_transform/src/hierarchy/hierarchy.rs | 13 +- .../hierarchy/hierarchy_maintenance_system.rs | 12 +- .../src/transform_propagate_system.rs | 20 +- crates/bevy_ui/src/flex/mod.rs | 18 +- crates/bevy_ui/src/focus.rs | 8 +- crates/bevy_ui/src/update.rs | 14 +- crates/bevy_ui/src/widget/image.rs | 2 +- crates/bevy_ui/src/widget/text.rs | 52 +- examples/2d/sprite_sheet.rs | 2 +- examples/3d/parenting.rs | 2 +- examples/3d/spawner.rs | 2 +- examples/3d/z_sort_debug.rs | 6 +- examples/ecs/ecs_guide.rs | 10 +- examples/ecs/hierarchy.rs | 16 +- examples/ecs/parallel_query.rs | 6 +- examples/game/breakout.rs | 12 +- examples/scene/scene.rs | 4 +- examples/ui/button.rs | 4 +- examples/ui/font_atlas_debug.rs | 2 +- examples/ui/text.rs | 2 +- 51 files changed, 1313 insertions(+), 1489 deletions(-) create mode 100644 crates/bevy_ecs/hecs/src/access.rs delete mode 100644 crates/bevy_ecs/hecs/src/query_one.rs delete mode 100644 crates/bevy_ecs/src/system/query.rs create mode 100644 crates/bevy_ecs/src/system/query/mod.rs create mode 100644 crates/bevy_ecs/src/system/query/query_set.rs diff --git a/crates/bevy_core/src/label.rs b/crates/bevy_core/src/label.rs index 16de6edd39744..e01aa170a536d 100644 --- a/crates/bevy_core/src/label.rs +++ b/crates/bevy_core/src/label.rs @@ -70,10 +70,10 @@ pub(crate) fn entity_labels_system( mut entity_labels: ResMut, // TODO: use change tracking when add/remove events are added // mut query: Query<(Entity, Changed)>, - mut query: Query<(Entity, &Labels)>, + query: Query<(Entity, &Labels)>, ) { let entity_labels = entity_labels.deref_mut(); - for (entity, labels) in &mut query.iter() { + for (entity, labels) in query.iter() { let current_labels = entity_labels .entity_labels .entry(entity) diff --git a/crates/bevy_core/src/time/timer.rs b/crates/bevy_core/src/time/timer.rs index 7ba5d5c61daf3..4a9df0da96662 100644 --- a/crates/bevy_core/src/time/timer.rs +++ b/crates/bevy_core/src/time/timer.rs @@ -57,7 +57,7 @@ impl Timer { } pub(crate) fn timer_system(time: Res