Skip to content

Commit 5f736e7

Browse files
committed
cleanup
1 parent 08ac9d1 commit 5f736e7

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

crates/bevy_ecs/src/bundle.rs

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,7 +1035,7 @@ impl<'w> BundleInserter<'w> {
10351035
change_tick: Tick,
10361036
) -> Self {
10371037
// SAFETY: We will not make any accesses to the command queue, component or resource data of this world
1038-
let mut bundle_info = world.bundles.get_unchecked(bundle_id);
1038+
let bundle_info = world.bundles.get_unchecked(bundle_id);
10391039
let bundle_id = bundle_info.id();
10401040
let (new_archetype_id, is_new_created) = bundle_info.insert_bundle_into_archetype(
10411041
&mut world.archetypes,
@@ -1045,12 +1045,7 @@ impl<'w> BundleInserter<'w> {
10451045
archetype_id,
10461046
);
10471047

1048-
if is_new_created {
1049-
world.trigger(ArchetypeCreated(new_archetype_id));
1050-
bundle_info = world.bundles.get_unchecked(bundle_id);
1051-
}
1052-
1053-
if new_archetype_id == archetype_id {
1048+
let inserter = if new_archetype_id == archetype_id {
10541049
let archetype = &mut world.archetypes[archetype_id];
10551050
// SAFETY: The edge is assured to be initialized when we called insert_bundle_into_archetype
10561051
let archetype_after_insert = unsafe {
@@ -1110,7 +1105,15 @@ impl<'w> BundleInserter<'w> {
11101105
world: world.as_unsafe_world_cell(),
11111106
}
11121107
}
1108+
};
1109+
1110+
if is_new_created {
1111+
inserter
1112+
.world
1113+
.into_deferred()
1114+
.trigger(ArchetypeCreated(new_archetype_id));
11131115
}
1116+
inserter
11141117
}
11151118

11161119
/// # Safety
@@ -1426,7 +1429,7 @@ impl<'w> BundleRemover<'w> {
14261429
bundle_id: BundleId,
14271430
require_all: bool,
14281431
) -> Option<Self> {
1429-
let mut bundle_info = world.bundles.get_unchecked(bundle_id);
1432+
let bundle_info = world.bundles.get_unchecked(bundle_id);
14301433
// SAFETY: Caller ensures archetype and bundle ids are correct.
14311434
let (new_archetype_id, is_new_created) = unsafe {
14321435
bundle_info.remove_bundle_from_archetype(
@@ -1444,11 +1447,6 @@ impl<'w> BundleRemover<'w> {
14441447
return None;
14451448
}
14461449

1447-
if is_new_created {
1448-
world.trigger(ArchetypeCreated(new_archetype_id));
1449-
bundle_info = world.bundles.get_unchecked(bundle_id);
1450-
}
1451-
14521450
let (old_archetype, new_archetype) =
14531451
world.archetypes.get_2_mut(archetype_id, new_archetype_id);
14541452

@@ -1462,13 +1460,20 @@ impl<'w> BundleRemover<'w> {
14621460
Some((old.into(), new.into()))
14631461
};
14641462

1465-
Some(Self {
1463+
let remover = Self {
14661464
bundle_info: bundle_info.into(),
14671465
new_archetype: new_archetype.into(),
14681466
old_archetype: old_archetype.into(),
14691467
old_and_new_table: tables,
14701468
world: world.as_unsafe_world_cell(),
1471-
})
1469+
};
1470+
if is_new_created {
1471+
remover
1472+
.world
1473+
.into_deferred()
1474+
.trigger(ArchetypeCreated(new_archetype_id));
1475+
}
1476+
Some(remover)
14721477
}
14731478

14741479
/// This can be passed to [`remove`](Self::remove) as the `pre_remove` function if you don't want to do anything before removing.
@@ -1689,7 +1694,7 @@ impl<'w> BundleSpawner<'w> {
16891694
bundle_id: BundleId,
16901695
change_tick: Tick,
16911696
) -> Self {
1692-
let mut bundle_info = world.bundles.get_unchecked(bundle_id);
1697+
let bundle_info = world.bundles.get_unchecked(bundle_id);
16931698
let (new_archetype_id, is_new_created) = bundle_info.insert_bundle_into_archetype(
16941699
&mut world.archetypes,
16951700
&mut world.storages,
@@ -1698,20 +1703,22 @@ impl<'w> BundleSpawner<'w> {
16981703
ArchetypeId::EMPTY,
16991704
);
17001705

1701-
if is_new_created {
1702-
world.trigger(ArchetypeCreated(new_archetype_id));
1703-
bundle_info = world.bundles.get_unchecked(bundle_id);
1704-
}
1705-
17061706
let archetype = &mut world.archetypes[new_archetype_id];
17071707
let table = &mut world.storages.tables[archetype.table_id()];
1708-
Self {
1708+
let spawner = Self {
17091709
bundle_info: bundle_info.into(),
17101710
table: table.into(),
17111711
archetype: archetype.into(),
17121712
change_tick,
17131713
world: world.as_unsafe_world_cell(),
1714+
};
1715+
if is_new_created {
1716+
spawner
1717+
.world
1718+
.into_deferred()
1719+
.trigger(ArchetypeCreated(new_archetype_id));
17141720
}
1721+
spawner
17151722
}
17161723

17171724
#[inline]

0 commit comments

Comments
 (0)