(
doc: &SceneDoc,
selected_key: Option<u32>,
filter: &str,
collapsed_keys: &[u32],
)
| 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 | |
| 2792 | fn 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 | |
| 2811 | fn 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 | |
| 2821 | fn inspector_asset_picker_value( |
no test coverage detected