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

Function scene_tree_view

perro_editor/res/scripts/ui/editor_ui.rs:2777–2818  ·  view source on GitHub ↗
(
    doc: &SceneDoc,
    selected_key: Option<u32>,
    filter: &str,
    collapsed_keys: &[u32],
)

Source from the content-addressed store, hash-verified

2775 if state.inspector_picker_field == "script" {
2776 return Some(perro_scene::SceneAssetKind::Script);
2777 }
2778 let key = state.selected_key?;
2779 let doc = cached_scene_doc_shared(&state.doc_text);
2780 let node = doc
2781 .scene
2782 .nodes
2783 .iter()
2784 .find(|node| node.key.as_u32() == key)?;
2785 let field = perro_scene::scene_node_field(node.data.node_type, &state.inspector_picker_field)?;
2786 match field.ty {
2787 perro_scene::NodeFieldType::Asset(kind) => Some(kind),
2788 _ => None,
2789 }
2790}
2791
2792fn asset_kind_from_row_kind(kind: &str) -> Option<perro_scene::SceneAssetKind> {
2793 let name = kind.strip_prefix("Asset(")?.strip_suffix(')')?;
2794 match name {
2795 "Scene" => Some(perro_scene::SceneAssetKind::Scene),
2796 "Script" => Some(perro_scene::SceneAssetKind::Script),
2797 "Texture" => Some(perro_scene::SceneAssetKind::Texture),
2798 "Mesh" => Some(perro_scene::SceneAssetKind::Mesh),
2799 "Model" => Some(perro_scene::SceneAssetKind::Model),
2800 "Material" => Some(perro_scene::SceneAssetKind::Material),
2801 "Animation" => Some(perro_scene::SceneAssetKind::Animation),
2802 "AnimationTree" => Some(perro_scene::SceneAssetKind::AnimationTree),
2803 "Skeleton" => Some(perro_scene::SceneAssetKind::Skeleton),
2804 "ParticleProfile" => Some(perro_scene::SceneAssetKind::ParticleProfile),
2805 "TileSet" => Some(perro_scene::SceneAssetKind::TileSet),
2806 "UiStyle" => Some(perro_scene::SceneAssetKind::UiStyle),
2807 _ => None,
2808 }
2809}
2810
2811fn inspector_asset_path_matches(path: &str, filters: &[EditorAssetFilter]) -> bool {
2812 let ext = path
2813 .rsplit_once('.')
2814 .map(|(_, ext)| ext.to_ascii_lowercase())
2815 .unwrap_or_default();
2816 filters
2817 .iter()
2818 .any(|filter| filter.extensions.iter().any(|item| *item == ext))
2819}
2820
2821fn inspector_asset_picker_value(

Callers 1

from_stateMethod · 0.85

Calls 8

push_scene_tree_rowFunction · 0.85
rootsMethod · 0.80
parseFunction · 0.50
is_emptyMethod · 0.45
iterMethod · 0.45
as_u32Method · 0.45
containsMethod · 0.45

Tested by

no test coverage detected