@ -1,8 +1,11 @@
use std ::rc ::Rc ;
use bytemuck ::__core ::mem ;
use bytemuck ::__core ::num ::NonZeroU32 ;
use cgmath ::{ Decomposed , Deg , InnerSpace , Quaternion , Rotation3 , SquareMatrix } ;
use crate ::light ::Light ;
use crate ::render ::EntityUniforms ;
use bytemuck ::__core ::num ::NonZeroU32 ;
/*
@ -17,10 +20,12 @@ struct Entity {
mx_world : cgmath ::Matrix4 < f32 > ,
rotation_speed : f32 ,
color : wgpu ::Color ,
vertex_buf : Rc < wgpu ::Buffer > , // Could probably tie this along with index & count to some resource handle in the renderer
vertex_buf : Rc < wgpu ::Buffer > ,
// Could probably tie this along with index & count to some resource handle in the renderer
index_buf : Rc < wgpu ::Buffer > ,
index_count : usize ,
bind_group : wgpu ::BindGroup , // This is a little weird to have in the entity isn't it?
bind_group : wgpu ::BindGroup ,
// This is a little weird to have in the entity isn't it?
uniform_buf : wgpu ::Buffer ,
}
@ -81,29 +86,26 @@ impl Runtime {
} ) ;
let mut entities = vec! [ {
use cgmath ::SquareMatrix ;
let mut entities = Vec ::default ( ) ;
let bind_group = device . create_bind_group ( & wgpu ::BindGroupDescriptor {
entities . push ( Entity {
mx_world : cgmath ::Matrix4 ::identity ( ) ,
rotation_speed : 0.0 ,
color : wgpu ::Color ::WHITE ,
vertex_buf : Rc ::new ( plane_vertex_buf ) ,
index_buf : Rc ::new ( plane_index_buf ) ,
index_count : plane_index_data . len ( ) ,
bind_group : device . create_bind_group ( & wgpu ::BindGroupDescriptor {
layout : & local_bind_group_layout ,
entries : & [ wgpu ::BindGroupEntry {
binding : 0 ,
resource : wgpu ::BindingResource ::Buffer ( plane_uniform_buf . slice ( .. ) ) ,
} ] ,
label : None ,
} ) ,
uniform_buf : plane_uniform_buf ,
} ) ;
Entity {
mx_world : cgmath ::Matrix4 ::identity ( ) ,
rotation_speed : 0.0 ,
color : wgpu ::Color ::WHITE ,
vertex_buf : Rc ::new ( plane_vertex_buf ) ,
index_buf : Rc ::new ( plane_index_buf ) ,
index_count : plane_index_data . len ( ) ,
bind_group ,
uniform_buf : plane_uniform_buf ,
}
} ] ;
struct CubeDesc {
offset : cgmath ::Vector3 < f32 > ,
@ -123,8 +125,6 @@ impl Runtime {
for cube in & cube_descs {
use cgmath ::{ Decomposed , Deg , InnerSpace , Quaternion , Rotation3 } ;
let transform = Decomposed {
disp : cube . offset . clone ( ) ,
rot : Quaternion ::from_axis_angle ( cube . offset . normalize ( ) , Deg ( cube . angle ) ) ,
@ -155,9 +155,9 @@ impl Runtime {
} ) ;
}
// Create other resources
// Create other resources
// This is just metadata we hold for the lights. We can hold onto this
// This is just metadata we hold for the lights. We can hold onto this
let lights = vec! [
Light {
pos : cgmath ::Point3 ::new ( 7.0 , - 5.0 , 10.0 ) ,