summaryrefslogtreecommitdiff
path: root/engine/src/asset.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/asset.rs')
-rw-r--r--engine/src/asset.rs30
1 files changed, 9 insertions, 21 deletions
diff --git a/engine/src/asset.rs b/engine/src/asset.rs
index 66efe35..34f7a85 100644
--- a/engine/src/asset.rs
+++ b/engine/src/asset.rs
@@ -670,15 +670,10 @@ impl Submitter<'_>
};
let _ = self.import_work_msg_sender.send(ImportWorkMessage::Store {
- do_store: |assets, label, boxed_asset| {
- let Ok(asset) = boxed_asset.downcast::<AssetT>() else {
- unreachable!();
- };
-
- assets.store_with_label::<AssetT>(label.as_label(), *asset);
- },
+ do_store: Box::new(move |assets, label| {
+ assets.store_with_label::<AssetT>(label.as_label(), asset);
+ }),
label,
- asset: Box::new(asset),
});
}
@@ -692,15 +687,10 @@ impl Submitter<'_>
};
let _ = self.import_work_msg_sender.send(ImportWorkMessage::Store {
- do_store: |assets, label, boxed_asset| {
- let Ok(asset) = boxed_asset.downcast::<AssetT>() else {
- unreachable!();
- };
-
- assets.store_with_label::<AssetT>(label.as_label(), *asset);
- },
+ do_store: Box::new(move |assets, label| {
+ assets.store_with_label::<AssetT>(label.as_label(), asset);
+ }),
label,
- asset: Box::new(asset),
});
}
}
@@ -928,21 +918,19 @@ fn add_received_assets(mut assets: Single<Assets>, mut events: Single<Events>)
while let Ok(import_work_msg) = assets.import_work_msg_receiver.try_recv() {
match import_work_msg {
- ImportWorkMessage::Store { do_store, label, asset } => {
- do_store(assets, label, asset);
+ ImportWorkMessage::Store { do_store, label } => {
+ do_store(assets, label);
}
}
}
}
-#[derive(Debug)]
enum ImportWorkMessage
{
Store
{
- do_store: fn(&mut Assets, LabelOwned, Box<dyn Any + Send + Sync>),
+ do_store: Box<dyn FnOnce(&mut Assets, LabelOwned) + Send>,
label: LabelOwned,
- asset: Box<dyn Any + Send + Sync>,
},
}