Skip to content

Commit

Permalink
Add QueryState related operations
Browse files Browse the repository at this point in the history
  • Loading branch information
james7132 committed Sep 21, 2023
1 parent e3246d2 commit dfed1a1
Show file tree
Hide file tree
Showing 14 changed files with 6,950 additions and 1 deletion.
24 changes: 24 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,30 @@ crate-type = ["lib"]
name = "query_get_sparse"
crate-type = ["lib"]

[[example]]
name = "query_state_iter"
crate-type = ["lib"]

[[example]]
name = "query_state_iter_sparse"
crate-type = ["lib"]

[[example]]
name = "query_state_for_each"
crate-type = ["lib"]

[[example]]
name = "query_state_for_each_sparse"
crate-type = ["lib"]

[[example]]
name = "query_state_get"
crate-type = ["lib"]

[[example]]
name = "query_state_get_sparse"
crate-type = ["lib"]

[[example]]
name = "world_get"
crate-type = ["lib"]
Expand Down
14 changes: 14 additions & 0 deletions examples/query_state_for_each.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use bevy_ecs::prelude::*;

#[derive(Component)]
pub struct A(f32);

#[derive(Component)]
pub struct B(f32);

#[no_mangle]
fn query_state_for_each(mut query: QueryState<(&mut A, &B)>, world: &mut World) {
query.for_each_mut(world, |(mut a, b)| {
a.0 += b.0;
})
}
16 changes: 16 additions & 0 deletions examples/query_state_for_each_sparse.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use bevy_ecs::prelude::*;

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct A(f32);

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct B(f32);

#[no_mangle]
fn query_for_each(mut query: QueryState<(&mut A, &B)>, world: &mut World) {
query.for_each_mut(world, |(mut a, b)| {
a.0 += b.0;
})
}
13 changes: 13 additions & 0 deletions examples/query_state_get.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
use bevy_ecs::prelude::*;
use std::hint::black_box;

#[derive(Component)]
pub struct A(f32);

#[derive(Component)]
pub struct B(f32);

#[no_mangle]
fn query_get(mut query: QueryState<(&mut A, &B)>, entity: Entity, world: &mut World) {
let _ = black_box(query.get_mut(world, entity));
}
15 changes: 15 additions & 0 deletions examples/query_state_get_sparse.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use bevy_ecs::prelude::*;
use std::hint::black_box;

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct A(f32);

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct B(f32);

#[no_mangle]
fn query_get(mut query: QueryState<(&mut A, &B)>, entity: Entity, world: &mut World) {
let _ = black_box(query.get_mut(world, entity));
}
14 changes: 14 additions & 0 deletions examples/query_state_iter.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use bevy_ecs::prelude::*;

#[derive(Component)]
pub struct A(f32);

#[derive(Component)]
pub struct B(f32);

#[no_mangle]
fn query_iter(mut query: QueryState<(&mut A, &B)>, world: &mut World) {
for (mut a, b) in query.iter_mut(world) {
a.0 += b.0;
}
}
16 changes: 16 additions & 0 deletions examples/query_state_iter_sparse.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use bevy_ecs::prelude::*;

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct A(f32);

#[derive(Component)]
#[component(storage = "SparseSet")]
pub struct B(f32);

#[no_mangle]
fn query_iter(mut query: QueryState<(&mut A, &B)>, world: &mut World) {
for (mut a, b) in query.iter_mut(world) {
a.0 += b.0;
}
}
Loading

0 comments on commit dfed1a1

Please sign in to comment.