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 bevy_platform_support::collections::hash_map::Entry;
|
||||
use taffy::TaffyTree;
|
||||
|
||||
use bevy_ecs::{
|
||||
@ -74,21 +75,9 @@ impl UiSurface {
|
||||
) {
|
||||
let taffy = &mut self.taffy;
|
||||
|
||||
let mut added = false;
|
||||
let taffy_node_id = *self.entity_to_taffy.entry(entity).or_insert_with(|| {
|
||||
added = true;
|
||||
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 {
|
||||
match self.entity_to_taffy.entry(entity) {
|
||||
Entry::Occupied(entry) => {
|
||||
let taffy_node_id = *entry.get();
|
||||
let has_measure = if new_node_context.is_some() {
|
||||
taffy
|
||||
.set_node_context(taffy_node_id, new_node_context)
|
||||
@ -105,6 +94,18 @@ impl UiSurface {
|
||||
)
|
||||
.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.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user