diff --git a/resources/texture-test-1.mtl b/resources/texture-test-1.mtl new file mode 100644 index 0000000..906169a --- /dev/null +++ b/resources/texture-test-1.mtl @@ -0,0 +1,13 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.002 +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 +map_Kd /Users/mitchellhansen/source/minimum-viable-game-engine/resources/test.jpg diff --git a/resources/texture-test-1.obj b/resources/texture-test-1.obj new file mode 100644 index 0000000..f2b97ce --- /dev/null +++ b/resources/texture-test-1.obj @@ -0,0 +1,18 @@ +# Blender v2.93.1 OBJ File: '' +# www.blender.org +mtllib texture-test-1.mtl +o Plane_Plane.001 +v -1.000000 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v -1.000000 0.000000 -1.000000 +v 1.000000 0.000000 -1.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vn 0.0000 1.0000 0.0000 +g Plane_Plane.001_Material.002 +usemtl Material.002 +s off +f 2/1/1 3/2/1 1/3/1 +f 2/1/1 4/4/1 3/2/1 diff --git a/src/geometry.rs b/src/geometry.rs index a125ca7..8af1efa 100644 --- a/src/geometry.rs +++ b/src/geometry.rs @@ -58,6 +58,11 @@ pub fn load_obj(obj_path: &str) -> Result { for model in models { let mesh = &model.mesh; + if let Some(mat_id) = mesh.material_id { + let mat : &Material = materials.get(mat_id).unwrap(); + println!("{:?}", mat); + } + // Cycle through the faces and chunk out the indices let mut next_face = 0; for f in 0..mesh.num_face_indices.len() { diff --git a/src/main.rs b/src/main.rs index f93e09f..1cbb64a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,7 +45,6 @@ use wgpu_subscriber; use winit_24::event::DeviceEvent::MouseMotion; use winit_24::event::{ElementState, VirtualKeyCode}; use winit_24::event_loop::EventLoopProxy; -use winit_24::platform::unix::x11::ffi::Time; use winit_24::window::Window; use winit_24::{ event::{self, WindowEvent}, diff --git a/src/render/state.rs b/src/render/state.rs index 86815de..73db5ec 100644 --- a/src/render/state.rs +++ b/src/render/state.rs @@ -20,7 +20,6 @@ use rapier3d::parry::motion::RigidMotionComposition; use wgpu::util::DeviceExt; use wgpu::{BackendBit, BindGroup, BindGroupLayout, Buffer, BufferBindingType, Device, FragmentState, Instance, Queue, Surface, SwapChain, SwapChainDescriptor, SwapChainFrame, TextureView, VertexState, CommandEncoder}; use winit_24::dpi::PhysicalSize; -use winit_24::platform::unix::x11::ffi::Time; use winit_24::window::Window; use crate::camera::{Camera, CameraController}; @@ -291,11 +290,6 @@ impl RenderState { }], }); - /* - There appear to be two passes required for shadows, the shadow pass, and the forward pass - Need to open this up in renderdoc and see what it's actually doing - */ - let shadow_pass = { let uniform_size = mem::size_of::() as wgpu::BufferAddress; diff --git a/src/render/system.rs b/src/render/system.rs index ce3aeb0..3abc569 100644 --- a/src/render/system.rs +++ b/src/render/system.rs @@ -26,7 +26,6 @@ use wgpu::{ TextureView, VertexState, }; use winit_24::dpi::PhysicalSize; -use winit_24::platform::unix::x11::ffi::Time; use winit_24::window::Window; use crate::camera::{Camera, CameraController}; diff --git a/src/runtime/state.rs b/src/runtime/state.rs index 6d062d8..c5c3adb 100644 --- a/src/runtime/state.rs +++ b/src/runtime/state.rs @@ -111,5 +111,7 @@ impl RuntimeState { self.mesh_cache.insert(filename, mesh); } } + + panic!("nah"); } } diff --git a/src/runtime/system.rs b/src/runtime/system.rs index 932c285..c34e766 100644 --- a/src/runtime/system.rs +++ b/src/runtime/system.rs @@ -127,59 +127,59 @@ pub fn runtime_spawn( ) { for entity in &runtime_state.get_entities() { match entity.type_name.as_ref() { - "Sprite" => { - - - - let mesh_name = entity.mesh.clone().unwrap(); - let raw_mesh = match runtime_state.get_mesh(mesh_name.as_str()) { - None => { - log::warn!("Skipping entity with invalid mesh file {:?} ", mesh_name); - continue; - } - Some(mesh) => mesh, - }; - - let position = Position::from(entity.position.clone()); - - let mut static_body = RigidBodyBuilder::new_static() - .position(Isometry3::new( - Vector3::new(position.x, position.y, position.z), - Vector::y(), - )) - .build(); - - let mesh_collider = ColliderBuilder::trimesh( - raw_mesh.vertices.iter().map(|v| v.position()).collect(), - raw_mesh.indices.clone(), - ) - .build(); - - let gpu_mesh_buffer = renderer - .upload_mesh_to_buffer( - raw_mesh, - Some(wgpu::Color { - r: 1.0, - g: 0.7, - b: 0.3, - a: 1.0, - }), - ) - .unwrap(); - - let entity: Entity = cmd.push(( - position, - gpu_mesh_buffer, - Physics { - rigid_body: static_body, - rigid_body_handle: None, - }, - Collider { - collider: mesh_collider, - collider_handle: None, - }, - )); - } + // "Sprite" => { + // + // + // + // let mesh_name = entity.mesh.clone().unwrap(); + // let raw_mesh = match runtime_state.get_mesh(mesh_name.as_str()) { + // None => { + // log::warn!("Skipping entity with invalid mesh file {:?} ", mesh_name); + // continue; + // } + // Some(mesh) => mesh, + // }; + // + // let position = Position::from(entity.position.clone()); + // + // let mut static_body = RigidBodyBuilder::new_static() + // .position(Isometry3::new( + // Vector3::new(position.x, position.y, position.z), + // Vector::y(), + // )) + // .build(); + // + // let mesh_collider = ColliderBuilder::trimesh( + // raw_mesh.vertices.iter().map(|v| v.position()).collect(), + // raw_mesh.indices.clone(), + // ) + // .build(); + // + // let gpu_mesh_buffer = renderer + // .upload_mesh_to_buffer( + // raw_mesh, + // Some(wgpu::Color { + // r: 1.0, + // g: 0.7, + // b: 0.3, + // a: 1.0, + // }), + // ) + // .unwrap(); + // + // let entity: Entity = cmd.push(( + // position, + // gpu_mesh_buffer, + // Physics { + // rigid_body: static_body, + // rigid_body_handle: None, + // }, + // Collider { + // collider: mesh_collider, + // collider_handle: None, + // }, + // )); + // } "PhysicsEntity" => { let mesh_name = entity.mesh.as_ref().unwrap(); let raw_mesh = match runtime_state.get_mesh(mesh_name.as_str()) {