From fab5855aaa31df2c15d570b91e939d7c28167022 Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Sat, 4 Apr 2020 22:18:26 +0200 Subject: [PATCH] engine: abstract resource loading --- engine/src/render/vulkan/shaders.rs | 7 +------ engine/src/util/file.rs | 12 ++++++++++++ engine/src/util/mod.rs | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 engine/src/util/file.rs diff --git a/engine/src/render/vulkan/shaders.rs b/engine/src/render/vulkan/shaders.rs index 789435f..f9433fb 100644 --- a/engine/src/render/vulkan/shaders.rs +++ b/engine/src/render/vulkan/shaders.rs @@ -5,7 +5,6 @@ use std::io::prelude::*; use std::sync::Arc; use std::path; -use runfiles::Runfiles; use vulkano::descriptor::descriptor as vdd; use vulkano::descriptor::pipeline_layout as vdp; use vulkano::device as vd; @@ -24,11 +23,7 @@ impl ShaderDefinition { pub fn load_into(self, device: Arc) -> Result { fn stringify(x: std::io::Error) -> String { format!("IO error: {}", x) } - let path = match Runfiles::create().map_err(stringify) { - Err(_) => path::Path::new(".").join("shaders").join(self.name.clone()), - Ok(r) => r.rlocation(format!("abrasion/engine/shaders/{}", self.name)) - }; - + let path = &crate::util::file::resource_path(self.name.clone()); log::info!("Loading shader {}", path.to_str().unwrap_or("UNKNOWN")); let mut f = File::open(path).map_err(stringify)?; diff --git a/engine/src/util/file.rs b/engine/src/util/file.rs new file mode 100644 index 0000000..d186989 --- /dev/null +++ b/engine/src/util/file.rs @@ -0,0 +1,12 @@ +use std::path; + +use runfiles::Runfiles; + +pub fn resource_path(name: String) -> path::PathBuf { + fn stringify(x: std::io::Error) -> String { format!("IO error: {}", x) } + + match Runfiles::create().map_err(stringify) { + Err(_) => path::Path::new(".").join("shaders").join(name), + Ok(r) => r.rlocation(format!("abrasion/engine/shaders/{}", name)) + } +} diff --git a/engine/src/util/mod.rs b/engine/src/util/mod.rs index a33a516..19e5d5a 100644 --- a/engine/src/util/mod.rs +++ b/engine/src/util/mod.rs @@ -1 +1,2 @@ pub mod counter; +pub mod file;