Skip to content

Commit 49c71f0

Browse files
committed
Return to TemporaryRenderEntity
1 parent b5d65fe commit 49c71f0

13 files changed

Lines changed: 43 additions & 44 deletions

File tree

crates/bevy_extract/src/extract_plugin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ impl<L: AppLabel + Default + Clone + Eq + Copy> Plugin for ExtractPlugin<L> {
7777
// This set applies the commands from the extract schedule while the sub schedule
7878
// is running in parallel with the main app.
7979
apply_extract_commands.in_set(self.extract_set),
80-
despawn_temporary_sub_entities.in_set(self.despawn_set),
80+
despawn_temporary_sub_entities::<L>.in_set(self.despawn_set),
8181
),
8282
);
8383

crates/bevy_extract/src/sync_world.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ pub type MainEntityHashSet = HashSet<MainEntity, EntityHash>;
205205
/// Marker component that indicates that its entity needs to be despawned at the end of the frame.
206206
#[derive(Component, Copy, Clone, Debug, Default, Reflect)]
207207
#[reflect(Component, Default, Clone)]
208-
pub struct TemporarySubEntity;
208+
pub struct TemporarySubEntity<L: AppLabel + Clone + Eq + Copy + Default>(PhantomData<L>);
209209

210210
/// A record enum to what entities with [`SyncToSubWorld`] have been added or removed.
211211
#[derive(Debug)]
@@ -269,9 +269,9 @@ pub(crate) fn entity_sync_system<L: AppLabel + Default + Clone + Eq + Copy>(
269269
});
270270
}
271271

272-
pub(crate) fn despawn_temporary_sub_entities(
272+
pub(crate) fn despawn_temporary_sub_entities<L: AppLabel + Clone + Eq + Copy + Default>(
273273
world: &mut World,
274-
state: &mut SystemState<Query<Entity, With<TemporarySubEntity>>>,
274+
state: &mut SystemState<Query<Entity, With<TemporarySubEntity<L>>>>,
275275
mut local: Local<Vec<Entity>>,
276276
) {
277277
let query = state.get(world);

crates/bevy_gizmos_render/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ use {
6969
use bevy_render::{
7070
extract_resource::{ExtractResource, ExtractResourcePlugin},
7171
render_resource::{BindGroupLayoutDescriptor, PipelineCache, VertexAttribute, VertexStepMode},
72-
sync_world::TemporarySubEntity,
72+
sync_world::TemporaryRenderEntity,
7373
};
7474

7575
use bevy_gizmos::{
@@ -212,7 +212,7 @@ fn extract_gizmo_data(
212212
// The immediate mode API does not have a main world entity to refer to,
213213
// but we do need MainEntity on this render entity for the systems to find it.
214214
MainEntity::from(Entity::PLACEHOLDER),
215-
TemporarySubEntity,
215+
TemporaryRenderEntity::default(),
216216
));
217217
}
218218
}

crates/bevy_gizmos_render/src/retained.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::LineGizmoUniform;
44
use bevy_camera::visibility::RenderLayers;
55
use bevy_gizmos::retained::Gizmo;
66
use bevy_math::{Affine3, Affine3Ext};
7-
use bevy_render::sync_world::{MainEntity, TemporarySubEntity};
7+
use bevy_render::sync_world::{MainEntity, TemporaryRenderEntity};
88
use bevy_utils::once;
99
use tracing::warn;
1010
use {
@@ -75,7 +75,7 @@ pub(crate) fn extract_linegizmos(
7575
handle: gizmo.handle.clone(),
7676
},
7777
MainEntity::from(entity),
78-
TemporarySubEntity,
78+
TemporaryRenderEntity::default(),
7979
));
8080
}
8181
*previous_len = values.len();

crates/bevy_render/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ pub mod sync_world {
9393
};
9494

9595
pub type RenderEntity = bevy_extract::sync_world::SubEntity<crate::RenderApp>;
96-
pub type TemporaryRenderEntity = TemporarySubEntity;
96+
pub type TemporaryRenderEntity = TemporarySubEntity<crate::RenderApp>;
9797
pub type SyncToRenderWorld = bevy_extract::sync_world::SyncToSubWorld<crate::RenderApp>;
9898

9999
pub type SyncWorldPlugin = bevy_extract::sync_world::SyncWorldPlugin<crate::RenderApp>;

crates/bevy_sprite_render/src/text2d/mod.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ use bevy_ecs::{
99
query::Has,
1010
system::{Commands, Query, ResMut},
1111
};
12-
use bevy_extract::TemporarySubEntity;
1312
use bevy_math::{Vec2, Vec3};
14-
use bevy_render::Extract;
13+
use bevy_render::{Extract, sync_world::TemporaryRenderEntity};
1514
use bevy_sprite::{Anchor, Text2dShadow};
1615
use bevy_text::{
1716
ComputedTextBlock, PositionedGlyph, Strikethrough, StrikethroughColor, TextBackgroundColor,
@@ -82,7 +81,7 @@ pub fn extract_text2d_sprite(
8281
let Ok(text_background_color) = text_background_colors_query.get(section_entity) else {
8382
continue;
8483
};
85-
let render_entity = commands.spawn(TemporarySubEntity).id(); // using TemporaryRenderEntity fails with expected value, found type alias `TemporaryRenderEntity`
84+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
8685
let offset = run.bounds.center();
8786
let transform = *global_transform
8887
* GlobalTransform::from_translation(top_left.extend(0.))
@@ -131,7 +130,7 @@ pub fn extract_text2d_sprite(
131130
.get(i + 1)
132131
.is_none_or(|info| info.atlas_info.texture != atlas_info.texture)
133132
{
134-
let render_entity = commands.spawn(TemporarySubEntity).id();
133+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
135134
extracted_sprites.sprites.push(ExtractedSprite {
136135
main_entity,
137136
render_entity,
@@ -159,7 +158,7 @@ pub fn extract_text2d_sprite(
159158
};
160159

161160
if has_strikethrough {
162-
let render_entity = commands.spawn(TemporarySubEntity).id();
161+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
163162
let offset = run.strikethrough_position();
164163
let transform =
165164
shadow_transform * GlobalTransform::from_translation(offset.extend(0.));
@@ -181,7 +180,7 @@ pub fn extract_text2d_sprite(
181180
}
182181

183182
if has_underline {
184-
let render_entity = commands.spawn(TemporarySubEntity).id();
183+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
185184
let offset = run.underline_position();
186185
let transform =
187186
shadow_transform * GlobalTransform::from_translation(offset.extend(0.));
@@ -241,7 +240,7 @@ pub fn extract_text2d_sprite(
241240
if text_layout_info.glyphs.get(i + 1).is_none_or(|info| {
242241
info.span_index != current_span || info.atlas_info.texture != atlas_info.texture
243242
}) {
244-
let render_entity = commands.spawn(TemporarySubEntity).id();
243+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
245244
extracted_sprites.sprites.push(ExtractedSprite {
246245
main_entity,
247246
render_entity,
@@ -277,7 +276,7 @@ pub fn extract_text2d_sprite(
277276
.map(|c| c.0)
278277
.unwrap_or(text_color.0)
279278
.to_linear();
280-
let render_entity = commands.spawn(TemporarySubEntity).id();
279+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
281280
let offset = run.strikethrough_position();
282281
let transform = *global_transform
283282
* GlobalTransform::from_translation(top_left.extend(0.))
@@ -305,7 +304,7 @@ pub fn extract_text2d_sprite(
305304
.map(|c| c.0)
306305
.unwrap_or(text_color.0)
307306
.to_linear();
308-
let render_entity = commands.spawn(TemporarySubEntity).id();
307+
let render_entity = commands.spawn(TemporaryRenderEntity::default()).id();
309308
let offset = run.underline_position();
310309
let transform = *global_transform
311310
* GlobalTransform::from_translation(top_left.extend(0.))

crates/bevy_ui_render/src/box_shadow.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use bevy_ecs::{
1717
use bevy_image::BevyDefault as _;
1818
use bevy_math::{vec2, Affine2, FloatOrd, Rect, Vec2};
1919
use bevy_mesh::VertexBufferLayout;
20-
use bevy_render::sync_world::{MainEntity, TemporarySubEntity};
20+
use bevy_render::sync_world::{MainEntity, TemporaryRenderEntity};
2121
use bevy_render::{
2222
render_phase::*,
2323
render_resource::{binding_types::uniform_buffer, *},
@@ -281,7 +281,7 @@ pub fn extract_shadows(
281281
};
282282

283283
extracted_box_shadows.box_shadows.push(ExtractedBoxShadow {
284-
render_entity: commands.spawn(TemporarySubEntity).id(),
284+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
285285
stack_index: uinode.stack_index,
286286
transform: Affine2::from(transform) * Affine2::from_translation(offset),
287287
color: drop_shadow.color.into(),

crates/bevy_ui_render/src/debug_overlay.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use bevy_math::Affine2;
2121
use bevy_math::Rect;
2222
use bevy_math::Vec2;
2323
use bevy_reflect::Reflect;
24-
use bevy_render::sync_world::TemporarySubEntity;
24+
use bevy_render::sync_world::TemporaryRenderEntity;
2525
use bevy_render::Extract;
2626
use bevy_sprite::BorderRect;
2727
use bevy_ui::ui_transform::UiGlobalTransform;
@@ -215,7 +215,7 @@ pub fn extract_debug_overlay(
215215
}
216216

217217
extracted_uinodes.uinodes.push(ExtractedUiNode {
218-
render_entity: commands.spawn(TemporarySubEntity).id(),
218+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
219219
// Keep all overlays above UI, and nudge each type slightly in Z so ordering is stable.
220220
z_order,
221221
clip: maybe_clip

crates/bevy_ui_render/src/gradient.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ pub fn extract_gradients(
417417
node_type,
418418
},
419419
main_entity: entity.into(),
420-
render_entity: commands.spawn(TemporarySubEntity).id(),
420+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
421421
});
422422
continue;
423423
}
@@ -441,7 +441,7 @@ pub fn extract_gradients(
441441
);
442442

443443
extracted_gradients.items.push(ExtractedGradient {
444-
render_entity: commands.spawn(TemporarySubEntity).id(),
444+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
445445
stack_index: uinode.stack_index,
446446
transform: transform.into(),
447447
stops_range: range_start..extracted_color_stops.0.len(),
@@ -491,7 +491,7 @@ pub fn extract_gradients(
491491
);
492492

493493
extracted_gradients.items.push(ExtractedGradient {
494-
render_entity: commands.spawn(TemporarySubEntity).id(),
494+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
495495
stack_index: uinode.stack_index,
496496
transform: transform.into(),
497497
stops_range: range_start..extracted_color_stops.0.len(),
@@ -547,7 +547,7 @@ pub fn extract_gradients(
547547
);
548548

549549
extracted_gradients.items.push(ExtractedGradient {
550-
render_entity: commands.spawn(TemporarySubEntity).id(),
550+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
551551
stack_index: uinode.stack_index,
552552
transform: transform.into(),
553553
stops_range: range_start..extracted_color_stops.0.len(),

crates/bevy_ui_render/src/lib.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use bevy_camera::visibility::InheritedVisibility;
2323
use bevy_camera::{Camera, Camera2d, Camera3d, Hdr, RenderTarget};
2424
use bevy_reflect::prelude::ReflectDefault;
2525
use bevy_reflect::Reflect;
26-
use bevy_render::sync_world::TemporarySubEntity;
26+
use bevy_render::sync_world::TemporaryRenderEntity;
2727
use bevy_shader::load_shader_library;
2828
use bevy_sprite_render::SpriteAssetEvents;
2929
use bevy_ui::widget::{ImageNode, TextShadow, ViewportNode};
@@ -421,7 +421,7 @@ pub fn extract_uinode_background_colors(
421421

422422
if !background_color.is_fully_transparent() {
423423
extracted_uinodes.uinodes.push(ExtractedUiNode {
424-
render_entity: commands.spawn(TemporarySubEntity).id(),
424+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
425425
z_order: uinode.stack_index as f32 + stack_z_offsets::BACKGROUND_COLOR,
426426
clip: clip.map(|clip| clip.clip),
427427
image: AssetId::default(),
@@ -448,7 +448,7 @@ pub fn extract_uinode_background_colors(
448448
&& !outer_color.0.is_fully_transparent()
449449
{
450450
extracted_uinodes.uinodes.push(ExtractedUiNode {
451-
render_entity: commands.spawn(TemporarySubEntity).id(),
451+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
452452
z_order: uinode.stack_index as f32 + stack_z_offsets::BACKGROUND_COLOR,
453453
clip: clip.map(|clip| clip.clip),
454454
image: AssetId::default(),
@@ -537,7 +537,7 @@ pub fn extract_uinode_images(
537537

538538
extracted_uinodes.uinodes.push(ExtractedUiNode {
539539
z_order: uinode.stack_index as f32 + stack_z_offsets::IMAGE,
540-
render_entity: commands.spawn(TemporarySubEntity).id(),
540+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
541541
clip: clip.map(|clip| clip.clip),
542542
image: image.image.id(),
543543
extracted_camera_entity,
@@ -654,7 +654,7 @@ pub fn extract_uinode_borders(
654654
node_type: NodeType::Border(border_flags),
655655
},
656656
main_entity: entity.into(),
657-
render_entity: commands.spawn(TemporarySubEntity).id(),
657+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
658658
});
659659
}
660660
}
@@ -668,7 +668,7 @@ pub fn extract_uinode_borders(
668668
let outline_size = computed_node.outlined_node_size();
669669
extracted_uinodes.uinodes.push(ExtractedUiNode {
670670
z_order: computed_node.stack_index as f32 + stack_z_offsets::BORDER,
671-
render_entity: commands.spawn(TemporarySubEntity).id(),
671+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
672672
image,
673673
clip: maybe_clip.map(|clip| clip.clip),
674674
extracted_camera_entity,
@@ -796,7 +796,7 @@ pub fn extract_ui_camera_view(
796796
},
797797
// Link to the main camera view.
798798
UiViewTarget(render_entity),
799-
TemporarySubEntity,
799+
TemporaryRenderEntity::default(),
800800
))
801801
.id();
802802

@@ -860,7 +860,7 @@ pub fn extract_viewport_nodes(
860860

861861
extracted_uinodes.uinodes.push(ExtractedUiNode {
862862
z_order: uinode.stack_index as f32 + stack_z_offsets::IMAGE,
863-
render_entity: commands.spawn(TemporarySubEntity).id(),
863+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
864864
clip: clip.map(|clip| clip.clip),
865865
image: image.id(),
866866
extracted_camera_entity,
@@ -967,7 +967,7 @@ pub fn extract_text_sections(
967967
{
968968
extracted_uinodes.uinodes.push(ExtractedUiNode {
969969
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT,
970-
render_entity: commands.spawn(TemporarySubEntity).id(),
970+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
971971
image: atlas_info.texture,
972972
clip: clip.map(|clip| clip.clip),
973973
extracted_camera_entity,
@@ -1054,7 +1054,7 @@ pub fn extract_text_shadows(
10541054
extracted_uinodes.uinodes.push(ExtractedUiNode {
10551055
transform: node_transform,
10561056
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT,
1057-
render_entity: commands.spawn(TemporarySubEntity).id(),
1057+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
10581058
image: atlas_info.texture,
10591059
clip: clip.map(|clip| clip.clip),
10601060
extracted_camera_entity,
@@ -1077,7 +1077,7 @@ pub fn extract_text_shadows(
10771077
if has_strikethrough {
10781078
extracted_uinodes.uinodes.push(ExtractedUiNode {
10791079
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT,
1080-
render_entity: commands.spawn(TemporarySubEntity).id(),
1080+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
10811081
clip: clip.map(|clip| clip.clip),
10821082
image: AssetId::default(),
10831083
extracted_camera_entity,
@@ -1103,7 +1103,7 @@ pub fn extract_text_shadows(
11031103
if has_underline {
11041104
extracted_uinodes.uinodes.push(ExtractedUiNode {
11051105
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT,
1106-
render_entity: commands.spawn(TemporarySubEntity).id(),
1106+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
11071107
clip: clip.map(|clip| clip.clip),
11081108
image: AssetId::default(),
11091109
extracted_camera_entity,
@@ -1192,7 +1192,7 @@ pub fn extract_text_decorations(
11921192
if let Some(text_background_color) = text_background_color {
11931193
extracted_uinodes.uinodes.push(ExtractedUiNode {
11941194
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT,
1195-
render_entity: commands.spawn(TemporarySubEntity).id(),
1195+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
11961196
clip: clip.map(|clip| clip.clip),
11971197
image: AssetId::default(),
11981198
extracted_camera_entity,
@@ -1222,7 +1222,7 @@ pub fn extract_text_decorations(
12221222

12231223
extracted_uinodes.uinodes.push(ExtractedUiNode {
12241224
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT_STRIKETHROUGH,
1225-
render_entity: commands.spawn(TemporarySubEntity).id(),
1225+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
12261226
clip: clip.map(|clip| clip.clip),
12271227
image: AssetId::default(),
12281228
extracted_camera_entity,
@@ -1252,7 +1252,7 @@ pub fn extract_text_decorations(
12521252

12531253
extracted_uinodes.uinodes.push(ExtractedUiNode {
12541254
z_order: uinode.stack_index as f32 + stack_z_offsets::TEXT_STRIKETHROUGH,
1255-
render_entity: commands.spawn(TemporarySubEntity).id(),
1255+
render_entity: commands.spawn(TemporaryRenderEntity::default()).id(),
12561256
clip: clip.map(|clip| clip.clip),
12571257
image: AssetId::default(),
12581258
extracted_camera_entity,

0 commit comments

Comments
 (0)