summaryrefslogtreecommitdiff
path: root/racer-tracer/src/scene.rs
diff options
context:
space:
mode:
authorSakarias Johansson <sakarias.johansson@goodbyekansas.com>2023-03-14 15:39:45 +0100
committerSakarias Johansson <sakariasjohansson@hotmail.com>2023-03-14 20:32:13 +0100
commit7d32f05f6123dc12ab099cf337f9abe137750e43 (patch)
treee30ad8933ae3e71f2beec104abf1ce3bcd1aa329 /racer-tracer/src/scene.rs
parentf19c8cc40c5caf8abb4f04aaf9f91ec3a8c1ccbc (diff)
downloadracer-tracer-7d32f05f6123dc12ab099cf337f9abe137750e43.tar.gz
racer-tracer-7d32f05f6123dc12ab099cf337f9abe137750e43.tar.xz
racer-tracer-7d32f05f6123dc12ab099cf337f9abe137750e43.zip
🧹 Misc cleanup
- Was pointless to have one event for render and one for cancel. Reduced it to one while fixing a minor bug. - Remove useless dereference and borrow. Not sure how it ended up like that. - Moved around some code.
Diffstat (limited to 'racer-tracer/src/scene.rs')
-rw-r--r--racer-tracer/src/scene.rs19
1 files changed, 7 insertions, 12 deletions
diff --git a/racer-tracer/src/scene.rs b/racer-tracer/src/scene.rs
index 12e2296..e730db0 100644
--- a/racer-tracer/src/scene.rs
+++ b/racer-tracer/src/scene.rs
@@ -12,8 +12,13 @@ pub struct Scene {
}
impl Scene {
- #[allow(dead_code)]
- pub fn try_new(loader: Box<dyn SceneLoader>) -> Result<Self, TracerError> {
+ pub fn try_new(config_loader: &CSLoader) -> Result<Self, TracerError> {
+ let loader: Box<dyn SceneLoader> = match config_loader {
+ CSLoader::Yml { path } => Box::new(YmlLoader::new(path.clone())),
+ CSLoader::Random => Box::new(Random::new()),
+ CSLoader::None => Box::new(NoneLoader::new()),
+ };
+
loader.load().map(|objects| Self { objects })
}
@@ -47,13 +52,3 @@ impl Hittable for Scene {
pub trait SceneLoader: Send + Sync {
fn load(&self) -> Result<Vec<Box<dyn Hittable>>, TracerError>;
}
-
-impl From<&CSLoader> for Box<dyn SceneLoader> {
- fn from(loader: &CSLoader) -> Self {
- match loader {
- CSLoader::Yml { path } => Box::new(YmlLoader::new(path.clone())),
- CSLoader::Random => Box::new(Random::new()),
- CSLoader::None => Box::new(NoneLoader::new()),
- }
- }
-}