Skip to content

Commit 58b1121

Browse files
authored
Update 16372_Add_Immutable_Component_Support.md (#2304)
1 parent 45dca87 commit 58b1121

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

release-content/0.16/release-notes/16372_Add_Immutable_Component_Support.md

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,35 @@ pub struct SumMe(pub u32);
2525
struct TotalSum(u32);
2626

2727
// This observer will trigger when spawning or inserting a SumMe component
28-
fn add_when_inserting(mut trigger: Trigger<OnInsert, SumMe>, query: Query<&SumMe>, mut total_sum: ResMut<TotalSum>){
29-
let sum_me = query.get(trigger.target());
30-
total_sum.0 += sum_me.0;
28+
fn add_when_inserting(
29+
trigger: Trigger<OnInsert, SumMe>,
30+
query: Query<&SumMe>,
31+
mut total_sum: ResMut<TotalSum>,
32+
) {
33+
if let Ok(sum_me) = query.get(trigger.target()) {
34+
total_sum.0 += sum_me.0;
35+
}
3136
}
3237

3338
// This observer will trigger when despawning or removing a SumMe component
34-
fn subtract_when_removing(mut trigger: Trigger<OnRemove, SumMe>, query: Query<&SumMe>, mut total_sum: ResMut<TotalSum>){
35-
let sum_me = query.get(trigger.target());
36-
total_sum.0 -= sum_me.0;
39+
fn subtract_when_removing(
40+
trigger: Trigger<OnRemove, SumMe>,
41+
query: Query<&SumMe>,
42+
mut total_sum: ResMut<TotalSum>,
43+
) {
44+
if let Ok(sum_me) = query.get(trigger.target()) {
45+
total_sum.0 -= sum_me.0;
46+
}
3747
}
3848

3949
// Changing this to `&mut SumMe` would fail to compile!
40-
fn modify_values(mut commands: Commands, query: Query<(Entity, &SumMe)>){
41-
for (entity, sum_me) in query.iter(){
50+
fn modify_values(mut commands: Commands, query: Query<(Entity, &SumMe)>) {
51+
for (entity, sum_me) in query.iter() {
4252
// We can read the value, but not write to it.
4353
let current_value = sum_me.0;
4454
// This will overwrite: indirectly mutating the value
4555
// and triggering both observers: removal first, then insertion
46-
commands.entity(entity).insert(sum_me.0 + 1);
56+
commands.entity(entity).insert(SumMe(current_value + 1));
4757
}
4858
}
4959
```

0 commit comments

Comments
 (0)