diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs index 4ede773..3595e22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use std::error::Error; use std::path::Path; +use engine::Engine; use engine::asset::Assets; use engine::camera::fly::{ Extension as FlyCameraExtension, @@ -20,12 +21,12 @@ use engine::input::Extension as InputExtension; use engine::lighting::{AttenuationParams, GlobalLight, PointLight}; use engine::material::{Flags as MaterialFlags, Material}; use engine::mesh::cube::{ - create as cube_mesh_create, CreationSpec as CubeMeshCreationSpec, + create as cube_mesh_create, }; -use engine::model::{Data as ModelData, Model}; -use engine::renderer::opengl::Extension as OpenglRendererExtension; +use engine::model::{Materials as ModelMaterials, Model, Spec as ModelSpec}; use engine::renderer::GraphicsProperties; +use engine::renderer::opengl::Extension as OpenglRendererExtension; use engine::transform::WorldPosition; use engine::vector::Vec3; use engine::windowing::window::{ @@ -33,11 +34,10 @@ use engine::windowing::window::{ CursorGrabMode as WindowCursorGrabMode, Window, }; -use engine::Engine; use tracing::level_filters::LevelFilter; +use tracing_subscriber::EnvFilter; use tracing_subscriber::layer::SubscriberExt; use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::EnvFilter; const YELLOW: Color<f32> = Color { red: 0.988235294118, @@ -119,28 +119,34 @@ fn init(mut assets: Single<Assets>, mut actions: Actions) }) .build(), WorldPosition::from(Vec3 { x: -6.0, y: 3.0, z: 3.0 }), - Model::new( - assets.store_with_name( - "light_cube", - ModelData::builder() - .mesh(cube_mesh_create( - CubeMeshCreationSpec::builder() - .dimens(Dimens3::from(2.0)) - .build(), - |face_verts, _, _| face_verts, - )) - .material( - "surface", + Model::new(assets.store_with_name_with("light_cube", |assets| { + ModelSpec::builder() + .mesh( + assets.store_with_name( + "light_cube_mesh", + cube_mesh_create( + CubeMeshCreationSpec::builder() + .dimens(Dimens3::from(2.0)) + .build(), + |face_verts, _, _| face_verts, + ), + ), + ) + .materials(ModelMaterials::direct([( + "surface", + assets.store_with_name( + "light_cube_surface_mat", Material::builder().ambient(YELLOW * 5.0).build(), - ) - .build(), - ), - ), + ), + )])) + .material_name("surface") + .build() + })), MaterialFlags::builder().use_ambient_color(true).build(), )); actions.spawn(( - Model::new(assets.load::<ModelData>(Path::new(RESOURCE_DIR).join("teapot.obj"))), + Model::new(assets.load::<ModelSpec>(Path::new(RESOURCE_DIR).join("teapot.obj"))), WorldPosition::from(Vec3 { x: 1.6, y: 0.0, z: 0.0 }), )); } |
