//! Asset browser UI state and view enums. use std::collections::HashSet; use bevy::prelude::*; use crate::assets::{ASSETS_ROOT, BUILTINS_FOLDER}; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub(crate) enum AssetBrowserView { Grid, List, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub(crate) enum AssetSort { Name, Kind, Modified, Size, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub(crate) enum AssetKindFilter { All, Model, Texture, Material, Level, Prefab, Builtin, } #[derive(Resource, Debug)] pub struct AssetBrowserUiState { pub(crate) search: String, pub(crate) view: AssetBrowserView, pub(crate) sort: AssetSort, pub(crate) kind_filter: AssetKindFilter, pub(crate) thumbnail_size: f32, pub(crate) recursive: bool, pub(crate) show_details: bool, pub(crate) expanded_folders: HashSet, } impl Default for AssetBrowserUiState { fn default() -> Self { let mut expanded_folders = HashSet::new(); expanded_folders.insert(ASSETS_ROOT.to_string()); expanded_folders.insert(BUILTINS_FOLDER.to_string()); Self { search: String::new(), view: AssetBrowserView::Grid, sort: AssetSort::Name, kind_filter: AssetKindFilter::All, thumbnail_size: 72.0, recursive: false, show_details: true, expanded_folders, } } }