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( | ||||
|             ExtractSchedule, | ||||
|             ( | ||||
|                 extract_default_ui_camera_view, | ||||
|                 extract_ui_camera_view, | ||||
|                 extract_uinode_background_colors.in_set(RenderUiSystem::ExtractBackgrounds), | ||||
|                 extract_uinode_images.in_set(RenderUiSystem::ExtractImages), | ||||
|                 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; | ||||
| 
 | ||||
| #[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.
 | ||||
| pub fn extract_default_ui_camera_view( | ||||
| pub fn extract_ui_camera_view( | ||||
|     mut commands: Commands, | ||||
|     mut transparent_render_phases: ResMut<ViewSortedRenderPhases<TransparentUi>>, | ||||
|     query: Extract< | ||||
| @ -553,13 +554,13 @@ pub fn extract_default_ui_camera_view( | ||||
| ) { | ||||
|     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
 | ||||
|         if !camera.is_active { | ||||
|             commands | ||||
|                 .get_entity(entity) | ||||
|                 .get_entity(render_entity) | ||||
|                 .expect("Camera entity wasn't synced.") | ||||
|                 .remove::<(DefaultCameraView, UiAntiAlias, BoxShadowSamples)>(); | ||||
|                 .remove::<(UiCameraView, UiAntiAlias, BoxShadowSamples)>(); | ||||
|             continue; | ||||
|         } | ||||
| 
 | ||||
| @ -573,7 +574,7 @@ pub fn extract_default_ui_camera_view( | ||||
|                 0.0, | ||||
|                 UI_CAMERA_FAR, | ||||
|             ); | ||||
|             let default_camera_view = commands | ||||
|             let ui_camera_view = commands | ||||
|                 .spawn(( | ||||
|                     ExtractedView { | ||||
|                         clip_from_view: projection_matrix, | ||||
| @ -594,18 +595,18 @@ pub fn extract_default_ui_camera_view( | ||||
|                 )) | ||||
|                 .id(); | ||||
|             let mut entity_commands = commands | ||||
|                 .get_entity(entity) | ||||
|                 .get_entity(render_entity) | ||||
|                 .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 { | ||||
|                 entity_commands.insert(*ui_anti_alias); | ||||
|             } | ||||
|             if let Some(shadow_samples) = 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 super::{ImageNodeBindGroups, UiBatch, UiMeta}; | ||||
| use crate::DefaultCameraView; | ||||
| use crate::UiCameraView; | ||||
| use bevy_ecs::{ | ||||
|     prelude::*, | ||||
|     system::{lifetimeless::*, SystemParamItem}, | ||||
| @ -19,23 +19,24 @@ use bevy_render::{ | ||||
| use tracing::error; | ||||
| 
 | ||||
| pub struct UiPassNode { | ||||
|     ui_view_query: QueryState<(&'static ViewTarget, &'static ExtractedCamera), With<ExtractedView>>, | ||||
|     default_camera_view_query: QueryState<&'static DefaultCameraView>, | ||||
|     camera_view_query: | ||||
|         QueryState<(&'static ViewTarget, &'static ExtractedCamera), With<ExtractedView>>, | ||||
|     ui_camera_view_query: QueryState<&'static UiCameraView>, | ||||
| } | ||||
| 
 | ||||
| impl UiPassNode { | ||||
|     pub fn new(world: &mut World) -> Self { | ||||
|         Self { | ||||
|             ui_view_query: world.query_filtered(), | ||||
|             default_camera_view_query: world.query(), | ||||
|             camera_view_query: world.query_filtered(), | ||||
|             ui_camera_view_query: world.query(), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl Node for UiPassNode { | ||||
|     fn update(&mut self, world: &mut World) { | ||||
|         self.ui_view_query.update_archetypes(world); | ||||
|         self.default_camera_view_query.update_archetypes(world); | ||||
|         self.camera_view_query.update_archetypes(world); | ||||
|         self.ui_camera_view_query.update_archetypes(world); | ||||
|     } | ||||
| 
 | ||||
|     fn run( | ||||
| @ -56,19 +57,20 @@ impl Node for UiPassNode { | ||||
|             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(()); | ||||
|         }; | ||||
|         if transparent_phase.items.is_empty() { | ||||
|             return Ok(()); | ||||
|         } | ||||
| 
 | ||||
|         // use the "default" view entity if it is defined
 | ||||
|         let view_entity = if let Ok(default_view) = self | ||||
|             .default_camera_view_query | ||||
|         // use the UI view entity if it is defined
 | ||||
|         let view_entity = if let Ok(ui_camera_view) = self | ||||
|             .ui_camera_view_query | ||||
|             .get_manual(world, input_view_entity) | ||||
|         { | ||||
|             default_view.0 | ||||
|             ui_camera_view.0 | ||||
|         } else { | ||||
|             input_view_entity | ||||
|         }; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ickshonpe
						ickshonpe