summary refs log tree commit diff
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-08 20:11:06 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-08 20:11:06 -0700
commit4b877079872248d3a4c17312b18599c6084e1e2d (patch)
tree1c764f0e7700e3cfec3aad64bf8bf3e1fa7b0261
parentd56eb5e4c223f5c89117cda8dfb1527e02b6a90c (diff)
move the obj loader to a more logical place
Force-Push: yes
Change-Id: I0d506fa517daeacf63b52fdd5900f1bbee9c22b7
-rw-r--r--src/files/mod.rs3
-rw-r--r--src/files/obj.rs (renamed from src/model_loader.rs)4
-rw-r--r--src/graphics/model.rs5
-rw-r--r--src/main.rs7
4 files changed, 12 insertions, 7 deletions
diff --git a/src/files/mod.rs b/src/files/mod.rs
new file mode 100644
index 0000000..8bc7539
--- /dev/null
+++ b/src/files/mod.rs
@@ -0,0 +1,3 @@
+#![deny(unsafe_code)]
+
+pub mod obj;
diff --git a/src/model_loader.rs b/src/files/obj.rs
index fea5ab5..c45ffbf 100644
--- a/src/model_loader.rs
+++ b/src/files/obj.rs
@@ -8,8 +8,8 @@ use std::io::Cursor;
 use tobj::{ load_obj_buf, LoadOptions };
 
 
-pub fn load_model() -> Result<(Vec<Vertex<f32>>, Vec<u32>)> {
-  let obj = include_bytes!("../models/teapot.obj");
+pub fn load_obj() -> Result<(Vec<Vertex<f32>>, Vec<u32>)> {
+  let obj = include_bytes!("../../models/teapot.obj");
 
   let load_options = LoadOptions {
     single_index: true,
diff --git a/src/graphics/model.rs b/src/graphics/model.rs
index bda064c..01e8731 100644
--- a/src/graphics/model.rs
+++ b/src/graphics/model.rs
@@ -5,7 +5,6 @@ use crate::graphics::render_state::RenderState;
 use crate::graphics::util::init_buffer;
 use crate::graphics::window_dressing::WindowDressing;
 use crate::linear_algebra::{ Vec3, Vec4, Transformation };
-use crate::model_loader::load_model;
 use crate::shader_data::{ Vertex, VertexPushBlock };
 
 use std::f32::consts::{ TAU };
@@ -26,7 +25,8 @@ pub struct Model {
 
 
 impl Model {
-  pub fn new(permanent: &PermanentGraphicsState,
+  pub fn new(vertices: Vec<Vertex<f32>>, indices: Vec<u32>,
+             permanent: &PermanentGraphicsState,
              window_dressing: &WindowDressing)
       -> Result<Self>
   {
@@ -35,7 +35,6 @@ impl Model {
     let graphics_queue = &permanent.graphics_queue;
     let transient_command_pool = &window_dressing.transient_command_pool;
 
-    let (vertices, indices) = load_model()?;
     let index_count = indices.len();
 
     let (vertex_buffer, vertex_buffer_memory)
diff --git a/src/main.rs b/src/main.rs
index 6382f51..9fb89bc 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -10,6 +10,7 @@ use crate::graphics::window_dressing::{
   WindowDressing, N_SIMULTANEOUS_FRAMES
 };
 use crate::linear_algebra::{ Vec3, Mat4, Transformation };
+use crate::files::obj::load_obj;
 use crate::shader_data::UniformBlock;
 
 use std::cell::RefCell;
@@ -25,9 +26,9 @@ use winit::event_loop::{ ActiveEventLoop, EventLoop };
 use winit::window::WindowId;
 
 mod error;
+mod files;
 mod graphics;
 mod linear_algebra;
-mod model_loader;
 mod shader_data;
 
 
@@ -73,7 +74,9 @@ impl Surreality {
                                                 enable_anisotropy)?;
       let mut render_state = RenderState::new(&permanent, &for_reinit,
                                               &window_dressing)?;
-      render_state.set_model(Model::new(&permanent, &window_dressing)?);
+      let (vertices, indices) = load_obj()?;
+      render_state.set_model(Model::new(vertices, indices,
+                                        &permanent, &window_dressing)?);
 
       *self.window_dressing.get_mut() = Some(window_dressing);
       *self.render_state.get_mut() = Some(render_state);