fixed crash when selecting a folder in asset browser

- follow up fixes for resource manager refactoring
This commit is contained in:
Dmitry Stepanov
2025-10-17 21:11:00 +03:00
parent 4b4fef9476
commit ef589cc707
2 changed files with 28 additions and 24 deletions
+19 -17
View File
@@ -1098,24 +1098,26 @@ impl AssetBrowser {
let inspector_addon = self.inspector_addon.as_mut().unwrap();
let mut has_preview = false;
if let Some(asset_path) = selection.selected_path() {
if let Ok(resource) =
block_on(engine.resource_manager.request_untyped(asset_path))
{
if let Some(preview_generator) =
resource.type_uuid().and_then(|type_uuid| {
self.preview_generators.map.get_mut(&type_uuid)
})
if asset_path.is_file() {
if let Ok(resource) =
block_on(engine.resource_manager.request_untyped(asset_path))
{
let preview_scene =
&mut engine.scenes[inspector_addon.preview.scene()];
let preview = preview_generator.generate_scene(
&resource,
&engine.resource_manager,
preview_scene,
inspector_addon.preview.camera,
);
has_preview = preview.is_some();
inspector_addon.preview.set_model(preview, engine);
if let Some(preview_generator) =
resource.type_uuid().and_then(|type_uuid| {
self.preview_generators.map.get_mut(&type_uuid)
})
{
let preview_scene =
&mut engine.scenes[inspector_addon.preview.scene()];
let preview = preview_generator.generate_scene(
&resource,
&engine.resource_manager,
preview_scene,
inspector_addon.preview.camera,
);
has_preview = preview.is_some();
inspector_addon.preview.set_model(preview, engine);
}
}
}
}
+9 -7
View File
@@ -162,13 +162,15 @@ impl SelectionContainer for AssetSelection {
if let Some(options) = resource.import_options.as_ref() {
let options = options.borrow();
callback(&**options as &dyn Reflect, false)
} else if let Ok(resource) =
block_on(self.resource_manager.request_untyped(&resource.path))
{
if !self.resource_manager.is_built_in_resource(&resource) {
let guard = resource.lock();
if let Some(data) = guard.state.data_ref() {
callback(&*data.0 as &dyn Reflect, false)
} else if resource.path.is_file() {
if let Ok(resource) =
block_on(self.resource_manager.request_untyped(&resource.path))
{
if !self.resource_manager.is_built_in_resource(&resource) {
let guard = resource.lock();
if let Some(data) = guard.state.data_ref() {
callback(&*data.0 as &dyn Reflect, false)
}
}
}
}