Rename DefaultCameraView (#17235)
				
					
				
			# Objective The name `DefaultCameraView` is confusing and misleading: * It isn't the default UI camera, which is either the camera with the `IsDefaultUiCamera` marker component or, if no such camera is found, the camera with the highest order which has the primary window as its render target. * It doesn't make sense to call it a "default", every active 2d and 3d camera is given its own `DefaultCameraView`. * The name doesn't make it clear that it's UI specific component. ## Solution Rename `DefaultCameraView` to `UiCameraView`, add a doc comment for it and rename a few other fields and variables. ## Migration Guide `DefaultCameraView` has been renamed to `UiCameraView`
This commit is contained in:
		
							parent
							
								
									020d082617
								
							
						
					
					
						commit
						e896c364dc
					
				| @ -137,7 +137,7 @@ pub fn build_ui_render(app: &mut App) { | |||||||
|         .add_systems( |         .add_systems( | ||||||
|             ExtractSchedule, |             ExtractSchedule, | ||||||
|             ( |             ( | ||||||
|                 extract_default_ui_camera_view, |                 extract_ui_camera_view, | ||||||
|                 extract_uinode_background_colors.in_set(RenderUiSystem::ExtractBackgrounds), |                 extract_uinode_background_colors.in_set(RenderUiSystem::ExtractBackgrounds), | ||||||
|                 extract_uinode_images.in_set(RenderUiSystem::ExtractImages), |                 extract_uinode_images.in_set(RenderUiSystem::ExtractImages), | ||||||
|                 extract_uinode_borders.in_set(RenderUiSystem::ExtractBorders), |                 extract_uinode_borders.in_set(RenderUiSystem::ExtractBorders), | ||||||
| @ -532,10 +532,11 @@ const UI_CAMERA_FAR: f32 = 1000.0; | |||||||
| const UI_CAMERA_TRANSFORM_OFFSET: f32 = -0.1; | const UI_CAMERA_TRANSFORM_OFFSET: f32 = -0.1; | ||||||
| 
 | 
 | ||||||
| #[derive(Component)] | #[derive(Component)] | ||||||
| pub struct DefaultCameraView(pub Entity); | /// Entity id of the temporary render entity with the corresponding extracted UI view.
 | ||||||
|  | pub struct UiCameraView(pub Entity); | ||||||
| 
 | 
 | ||||||
| /// Extracts all UI elements associated with a camera into the render world.
 | /// Extracts all UI elements associated with a camera into the render world.
 | ||||||
| pub fn extract_default_ui_camera_view( | pub fn extract_ui_camera_view( | ||||||
|     mut commands: Commands, |     mut commands: Commands, | ||||||
|     mut transparent_render_phases: ResMut<ViewSortedRenderPhases<TransparentUi>>, |     mut transparent_render_phases: ResMut<ViewSortedRenderPhases<TransparentUi>>, | ||||||
|     query: Extract< |     query: Extract< | ||||||
| @ -553,13 +554,13 @@ pub fn extract_default_ui_camera_view( | |||||||
| ) { | ) { | ||||||
|     live_entities.clear(); |     live_entities.clear(); | ||||||
| 
 | 
 | ||||||
|     for (entity, camera, ui_anti_alias, shadow_samples) in &query { |     for (render_entity, camera, ui_anti_alias, shadow_samples) in &query { | ||||||
|         // ignore inactive cameras
 |         // ignore inactive cameras
 | ||||||
|         if !camera.is_active { |         if !camera.is_active { | ||||||
|             commands |             commands | ||||||
|                 .get_entity(entity) |                 .get_entity(render_entity) | ||||||
|                 .expect("Camera entity wasn't synced.") |                 .expect("Camera entity wasn't synced.") | ||||||
|                 .remove::<(DefaultCameraView, UiAntiAlias, BoxShadowSamples)>(); |                 .remove::<(UiCameraView, UiAntiAlias, BoxShadowSamples)>(); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -573,7 +574,7 @@ pub fn extract_default_ui_camera_view( | |||||||
|                 0.0, |                 0.0, | ||||||
|                 UI_CAMERA_FAR, |                 UI_CAMERA_FAR, | ||||||
|             ); |             ); | ||||||
|             let default_camera_view = commands |             let ui_camera_view = commands | ||||||
|                 .spawn(( |                 .spawn(( | ||||||
|                     ExtractedView { |                     ExtractedView { | ||||||
|                         clip_from_view: projection_matrix, |                         clip_from_view: projection_matrix, | ||||||
| @ -594,18 +595,18 @@ pub fn extract_default_ui_camera_view( | |||||||
|                 )) |                 )) | ||||||
|                 .id(); |                 .id(); | ||||||
|             let mut entity_commands = commands |             let mut entity_commands = commands | ||||||
|                 .get_entity(entity) |                 .get_entity(render_entity) | ||||||
|                 .expect("Camera entity wasn't synced."); |                 .expect("Camera entity wasn't synced."); | ||||||
|             entity_commands.insert(DefaultCameraView(default_camera_view)); |             entity_commands.insert(UiCameraView(ui_camera_view)); | ||||||
|             if let Some(ui_anti_alias) = ui_anti_alias { |             if let Some(ui_anti_alias) = ui_anti_alias { | ||||||
|                 entity_commands.insert(*ui_anti_alias); |                 entity_commands.insert(*ui_anti_alias); | ||||||
|             } |             } | ||||||
|             if let Some(shadow_samples) = shadow_samples { |             if let Some(shadow_samples) = shadow_samples { | ||||||
|                 entity_commands.insert(*shadow_samples); |                 entity_commands.insert(*shadow_samples); | ||||||
|             } |             } | ||||||
|             transparent_render_phases.insert_or_clear(entity); |             transparent_render_phases.insert_or_clear(render_entity); | ||||||
| 
 | 
 | ||||||
|             live_entities.insert(entity); |             live_entities.insert(render_entity); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| use core::ops::Range; | use core::ops::Range; | ||||||
| 
 | 
 | ||||||
| use super::{ImageNodeBindGroups, UiBatch, UiMeta}; | use super::{ImageNodeBindGroups, UiBatch, UiMeta}; | ||||||
| use crate::DefaultCameraView; | use crate::UiCameraView; | ||||||
| use bevy_ecs::{ | use bevy_ecs::{ | ||||||
|     prelude::*, |     prelude::*, | ||||||
|     system::{lifetimeless::*, SystemParamItem}, |     system::{lifetimeless::*, SystemParamItem}, | ||||||
| @ -19,23 +19,24 @@ use bevy_render::{ | |||||||
| use tracing::error; | use tracing::error; | ||||||
| 
 | 
 | ||||||
| pub struct UiPassNode { | pub struct UiPassNode { | ||||||
|     ui_view_query: QueryState<(&'static ViewTarget, &'static ExtractedCamera), With<ExtractedView>>, |     camera_view_query: | ||||||
|     default_camera_view_query: QueryState<&'static DefaultCameraView>, |         QueryState<(&'static ViewTarget, &'static ExtractedCamera), With<ExtractedView>>, | ||||||
|  |     ui_camera_view_query: QueryState<&'static UiCameraView>, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl UiPassNode { | impl UiPassNode { | ||||||
|     pub fn new(world: &mut World) -> Self { |     pub fn new(world: &mut World) -> Self { | ||||||
|         Self { |         Self { | ||||||
|             ui_view_query: world.query_filtered(), |             camera_view_query: world.query_filtered(), | ||||||
|             default_camera_view_query: world.query(), |             ui_camera_view_query: world.query(), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Node for UiPassNode { | impl Node for UiPassNode { | ||||||
|     fn update(&mut self, world: &mut World) { |     fn update(&mut self, world: &mut World) { | ||||||
|         self.ui_view_query.update_archetypes(world); |         self.camera_view_query.update_archetypes(world); | ||||||
|         self.default_camera_view_query.update_archetypes(world); |         self.ui_camera_view_query.update_archetypes(world); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn run( |     fn run( | ||||||
| @ -56,19 +57,20 @@ impl Node for UiPassNode { | |||||||
|             return Ok(()); |             return Ok(()); | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         let Ok((target, camera)) = self.ui_view_query.get_manual(world, input_view_entity) else { |         let Ok((target, camera)) = self.camera_view_query.get_manual(world, input_view_entity) | ||||||
|  |         else { | ||||||
|             return Ok(()); |             return Ok(()); | ||||||
|         }; |         }; | ||||||
|         if transparent_phase.items.is_empty() { |         if transparent_phase.items.is_empty() { | ||||||
|             return Ok(()); |             return Ok(()); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // use the "default" view entity if it is defined
 |         // use the UI view entity if it is defined
 | ||||||
|         let view_entity = if let Ok(default_view) = self |         let view_entity = if let Ok(ui_camera_view) = self | ||||||
|             .default_camera_view_query |             .ui_camera_view_query | ||||||
|             .get_manual(world, input_view_entity) |             .get_manual(world, input_view_entity) | ||||||
|         { |         { | ||||||
|             default_view.0 |             ui_camera_view.0 | ||||||
|         } else { |         } else { | ||||||
|             input_view_entity |             input_view_entity | ||||||
|         }; |         }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ickshonpe
						ickshonpe