UiSurface::upsert_node refactor (#8831)
				
					
				
			# Objective Simplify the `UiSurface::upsert_node` method by directly matching on HashMap entry states.
This commit is contained in:
		
							parent
							
								
									5bbcf646a7
								
							
						
					
					
						commit
						d4356062bf
					
				| @ -1,5 +1,6 @@ | |||||||
| use core::fmt; | use core::fmt; | ||||||
| 
 | 
 | ||||||
|  | use bevy_platform_support::collections::hash_map::Entry; | ||||||
| use taffy::TaffyTree; | use taffy::TaffyTree; | ||||||
| 
 | 
 | ||||||
| use bevy_ecs::{ | use bevy_ecs::{ | ||||||
| @ -74,21 +75,9 @@ impl UiSurface { | |||||||
|     ) { |     ) { | ||||||
|         let taffy = &mut self.taffy; |         let taffy = &mut self.taffy; | ||||||
| 
 | 
 | ||||||
|         let mut added = false; |         match self.entity_to_taffy.entry(entity) { | ||||||
|         let taffy_node_id = *self.entity_to_taffy.entry(entity).or_insert_with(|| { |             Entry::Occupied(entry) => { | ||||||
|             added = true; |                 let taffy_node_id = *entry.get(); | ||||||
|             if let Some(measure) = new_node_context.take() { |  | ||||||
|                 taffy |  | ||||||
|                     .new_leaf_with_context(convert::from_node(node, layout_context, true), measure) |  | ||||||
|                     .unwrap() |  | ||||||
|             } else { |  | ||||||
|                 taffy |  | ||||||
|                     .new_leaf(convert::from_node(node, layout_context, false)) |  | ||||||
|                     .unwrap() |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         if !added { |  | ||||||
|                 let has_measure = if new_node_context.is_some() { |                 let has_measure = if new_node_context.is_some() { | ||||||
|                     taffy |                     taffy | ||||||
|                         .set_node_context(taffy_node_id, new_node_context) |                         .set_node_context(taffy_node_id, new_node_context) | ||||||
| @ -105,6 +94,18 @@ impl UiSurface { | |||||||
|                     ) |                     ) | ||||||
|                     .unwrap(); |                     .unwrap(); | ||||||
|             } |             } | ||||||
|  |             Entry::Vacant(entry) => { | ||||||
|  |                 let taffy_node_id = if let Some(measure) = new_node_context.take() { | ||||||
|  |                     taffy.new_leaf_with_context( | ||||||
|  |                         convert::from_node(node, layout_context, true), | ||||||
|  |                         measure, | ||||||
|  |                     ) | ||||||
|  |                 } else { | ||||||
|  |                     taffy.new_leaf(convert::from_node(node, layout_context, false)) | ||||||
|  |                 }; | ||||||
|  |                 entry.insert(taffy_node_id.unwrap()); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Update the `MeasureFunc` of the taffy node corresponding to the given [`Entity`] if the node exists.
 |     /// Update the `MeasureFunc` of the taffy node corresponding to the given [`Entity`] if the node exists.
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ickshonpe
						ickshonpe