summaryrefslogtreecommitdiff
path: root/engine/src/model/asset.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-09-27 20:28:24 +0200
committerHampusM <hampus@hampusmat.com>2026-09-27 20:46:16 +0200
commitee6e010611433f0aad53e3c99571b8a8c6ca13f4 (patch)
tree06ff656f764114361ae07f42d4be208d42d5c1c1 /engine/src/model/asset.rs
parent749303f2bab1b2b374f7b837cc75acf65067699e (diff)
refactor(engine): make asset importers per asset type
Diffstat (limited to 'engine/src/model/asset.rs')
-rw-r--r--engine/src/model/asset.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/engine/src/model/asset.rs b/engine/src/model/asset.rs
index ff5eddf..af3e1b2 100644
--- a/engine/src/model/asset.rs
+++ b/engine/src/model/asset.rs
@@ -42,15 +42,19 @@ impl Default for Settings
pub fn add_importers(assets: &mut Assets)
{
- assets.set_importer(["obj"], import_wavefront_obj_asset);
+ assets.set_importer::<Spec, Settings, Error>(import);
}
-fn import_wavefront_obj_asset(
+fn import(
asset_submitter: &mut AssetSubmitter<'_>,
path: &Path,
settings: Option<&Settings>,
) -> Result<(), Error>
{
+ if path.extension().is_none_or(|ext| ext != "obj") {
+ return Err(Error::UnsupportedFileType);
+ }
+
let settings = match settings {
Some(settings) => settings,
None => &Settings::default(),
@@ -107,6 +111,9 @@ fn import_wavefront_obj_asset(
#[derive(Debug, thiserror::Error)]
enum Error
{
+ #[error("File type is unsupported")]
+ UnsupportedFileType,
+
#[error("Invalid path '{}'", .0.display())]
InvalidPath(PathBuf),