forked from StrafesNET/strafe-client
guappe
This commit is contained in:
parent
27c7b7b785
commit
b233d497ad
@ -105,12 +105,12 @@ struct RobloxUnitCubeGenerationData{
|
|||||||
}
|
}
|
||||||
impl std::cmp::Eq for RobloxUnitCubeGenerationData{}//????
|
impl std::cmp::Eq for RobloxUnitCubeGenerationData{}//????
|
||||||
impl std::default::Default for RobloxUnitCubeGenerationData{
|
impl std::default::Default for RobloxUnitCubeGenerationData{
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self{
|
Self{
|
||||||
texture:None,
|
texture:None,
|
||||||
faces:[Some(RobloxColorAndTextureTransform::default());6],
|
faces:[Some(RobloxColorAndTextureTransform::default());6],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl std::hash::Hash for RobloxUnitCubeGenerationData {
|
impl std::hash::Hash for RobloxUnitCubeGenerationData {
|
||||||
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||||
|
@ -253,12 +253,11 @@ impl framework::Example for GraphicsData {
|
|||||||
device: &wgpu::Device,
|
device: &wgpu::Device,
|
||||||
queue: &wgpu::Queue,
|
queue: &wgpu::Queue,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let unit_cube=primitives::the_unit_cube_lol();
|
|
||||||
let mut modeldatas = Vec::<ModelData>::new();
|
let mut modeldatas = Vec::<ModelData>::new();
|
||||||
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/teslacyberv3.0.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/teslacyberv3.0.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
||||||
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/suzanne.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/suzanne.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
||||||
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/teapot.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
modeldatas.append(&mut model::generate_modeldatas(obj::ObjData::load_buf(&include_bytes!("../models/teapot.obj")[..]).unwrap(),ModelData::COLOR_FLOATS_WHITE));
|
||||||
modeldatas.append(&mut model::generate_modeldatas(unit_cube.clone(),ModelData::COLOR_FLOATS_WHITE));
|
modeldatas.push(primitives::the_unit_cube_lol());
|
||||||
println!("models.len = {:?}", modeldatas.len());
|
println!("models.len = {:?}", modeldatas.len());
|
||||||
modeldatas[0].instances.push(ModelInstance{
|
modeldatas[0].instances.push(ModelInstance{
|
||||||
model_transform:glam::Affine3A::from_translation(glam::vec3(10.,0.,-10.)),
|
model_transform:glam::Affine3A::from_translation(glam::vec3(10.,0.,-10.)),
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
pub fn the_unit_cube_lol() -> obj::ObjData{
|
pub fn the_unit_cube_lol() -> crate::model::ModelData{
|
||||||
generate_partial_unit_cube([Some(glam::Affine2::IDENTITY);6])
|
generate_partial_unit_cube([Some(FaceDescription::default());6],None)
|
||||||
}
|
}
|
||||||
pub fn generate_partial_unit_cube(face_transforms:[Option<glam::Affine2>;6])->obj::ObjData{
|
|
||||||
let default_polys=[
|
let default_polys=[
|
||||||
// right (1, 0, 0)
|
// right (1, 0, 0)
|
||||||
obj::SimplePolygon(vec![
|
obj::SimplePolygon(vec![
|
||||||
@ -103,3 +102,55 @@ pub fn generate_partial_unit_cube(face_transforms:[Option<glam::Affine2>;6])->ob
|
|||||||
material_libs: Vec::new(),
|
material_libs: Vec::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pub struct FaceDescription{
|
||||||
|
transform:glam::Affine2,
|
||||||
|
color:glam::Vec4,
|
||||||
|
}
|
||||||
|
impl std::default::Default for FaceDescription{
|
||||||
|
fn default() -> Self {
|
||||||
|
Self{
|
||||||
|
transform:glam::Affine2::IDENTITY,
|
||||||
|
color:glam::Vec4::ONE,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl FaceDescription{
|
||||||
|
pub fn new(transform:glam::Affine2,color:glam::Vec4)->Self{
|
||||||
|
Self{transform,color}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn generate_partial_unit_cube(face_transforms:[Option<FaceDescription>;6],texture:Option<u32>) -> crate::model::ModelData{
|
||||||
|
let mut vertices = Vec::new();
|
||||||
|
let mut vertex_index = std::collections::HashMap::<obj::IndexTuple,u16>::new();
|
||||||
|
let mut entities = Vec::new();
|
||||||
|
for group in object.groups {
|
||||||
|
let mut indices = Vec::new();
|
||||||
|
for poly in group.polys {
|
||||||
|
for end_index in 2..poly.0.len() {
|
||||||
|
for &index in &[0, end_index - 1, end_index] {
|
||||||
|
let vert = poly.0[index];
|
||||||
|
if let Some(&i)=vertex_index.get(&vert){
|
||||||
|
indices.push(i);
|
||||||
|
}else{
|
||||||
|
let i=vertices.len() as u16;
|
||||||
|
vertices.push(Vertex {
|
||||||
|
pos: data.position[vert.0],
|
||||||
|
texture: data.texture[vert.1.unwrap()],
|
||||||
|
normal: data.normal[vert.2.unwrap()],
|
||||||
|
color,
|
||||||
|
});
|
||||||
|
vertex_index.insert(vert,i);
|
||||||
|
indices.push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entities.push(indices);
|
||||||
|
}
|
||||||
|
ModelData {
|
||||||
|
instances: Vec::new(),
|
||||||
|
vertices,
|
||||||
|
entities,
|
||||||
|
texture,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user