MCPcopy Create free account
hub / github.com/PerroEngine/Perro / picker_node_row

Function picker_node_row

perro_editor/res/scripts/scene/editor_nodes.rs:1169–1194  ·  view source on GitHub ↗
(state: &EditorState, node_type: perro_scene::NodeType)

Source from the content-addressed store, hash-verified

1167 let _ = with_state_mut!(ctx.run, EditorState, ctx.id, |state| {
1168 let max_start = picker_node_types(state, &state.node_picker_filter)
1169 .len()
1170 .saturating_sub(1);
1171 if dir < 0 {
1172 state.node_picker_offset = state.node_picker_offset.saturating_sub(1);
1173 } else {
1174 state.node_picker_offset = (state.node_picker_offset + 1).min(max_start);
1175 }
1176 });
1177 refresh_all(ctx);
1178}
1179
1180pub fn picker_node_types(state: &EditorState, filter: &str) -> Vec<perro_scene::NodeType> {
1181 let filter = NodePickerFilter::parse(filter);
1182 let asset_node = active_asset_node_type(state);
1183 let parent_kind = picker_parent_node_kind(state);
1184 let mut out = perro_scene::NodeType::ALL
1185 .iter()
1186 .copied()
1187 .filter(|node_type| {
1188 if filter.is_empty() {
1189 return true;
1190 }
1191 if filter.tags.iter().any(|tag| tag == "recent")
1192 && recent_node_rank(state, node_type.name()).is_none()
1193 {
1194 return false;
1195 }
1196 node_type_matches_picker_filter(*node_type, &filter)
1197 })

Callers 1

picker_rowsFunction · 0.85

Calls 9

active_asset_node_typeFunction · 0.85
recent_node_rankFunction · 0.85
parent_node_rankFunction · 0.85
picker_parent_node_kindFunction · 0.85
viewport_node_rankFunction · 0.85
nameMethod · 0.45
pushMethod · 0.45
as_strMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected