forked from StrafesNET/strafe-project
rbx_loader: deconstruct instead of index tuple (with vengeance)
This commit is contained in:
parent
1cf21be185
commit
65e17da386
@ -1,4 +1,5 @@
|
|||||||
use rbx_mesh::mesh_data::NormalId2 as MeshDataNormalId2;
|
use rbx_mesh::mesh_data::{NormalId2 as MeshDataNormalId2,VertexId as MeshDataVertexId};
|
||||||
|
use rbx_mesh::physics_data::VertexId as PhysicsDataVertexId;
|
||||||
use strafesnet_common::model::{self,IndexedVertex,PolygonGroup,PolygonGroupId,PolygonList,RenderConfigId};
|
use strafesnet_common::model::{self,IndexedVertex,PolygonGroup,PolygonGroupId,PolygonList,RenderConfigId};
|
||||||
use strafesnet_common::integer::vec3;
|
use strafesnet_common::integer::vec3;
|
||||||
|
|
||||||
@ -79,11 +80,11 @@ pub fn convert(
|
|||||||
rbx_mesh::mesh_data::MeshData::CSGMDL(rbx_mesh::mesh_data::CSGMDL::CSGMDL2(mesh_data2))=>mesh_data2.mesh,
|
rbx_mesh::mesh_data::MeshData::CSGMDL(rbx_mesh::mesh_data::CSGMDL::CSGMDL2(mesh_data2))=>mesh_data2.mesh,
|
||||||
rbx_mesh::mesh_data::MeshData::CSGMDL(rbx_mesh::mesh_data::CSGMDL::CSGMDL4(mesh_data4))=>mesh_data4.mesh,
|
rbx_mesh::mesh_data::MeshData::CSGMDL(rbx_mesh::mesh_data::CSGMDL::CSGMDL4(mesh_data4))=>mesh_data4.mesh,
|
||||||
};
|
};
|
||||||
for [vertex_id0,vertex_id1,vertex_id2] in graphics_mesh.faces{
|
for [MeshDataVertexId(vertex_id0),MeshDataVertexId(vertex_id1),MeshDataVertexId(vertex_id2)] in graphics_mesh.faces{
|
||||||
let face=[
|
let face=[
|
||||||
graphics_mesh.vertices.get(vertex_id0.0 as usize).ok_or(Error::MissingVertexId(vertex_id0.0))?,
|
graphics_mesh.vertices.get(vertex_id0 as usize).ok_or(Error::MissingVertexId(vertex_id0))?,
|
||||||
graphics_mesh.vertices.get(vertex_id1.0 as usize).ok_or(Error::MissingVertexId(vertex_id1.0))?,
|
graphics_mesh.vertices.get(vertex_id1 as usize).ok_or(Error::MissingVertexId(vertex_id1))?,
|
||||||
graphics_mesh.vertices.get(vertex_id2.0 as usize).ok_or(Error::MissingVertexId(vertex_id2.0))?,
|
graphics_mesh.vertices.get(vertex_id2 as usize).ok_or(Error::MissingVertexId(vertex_id2))?,
|
||||||
];
|
];
|
||||||
let mut normal_agreement_checker=MeshDataNormalChecker::new();
|
let mut normal_agreement_checker=MeshDataNormalChecker::new();
|
||||||
let face=face.into_iter().map(|vertex|{
|
let face=face.into_iter().map(|vertex|{
|
||||||
@ -151,11 +152,11 @@ pub fn convert(
|
|||||||
let color=mb.acquire_color_id(glam::Vec4::ONE);
|
let color=mb.acquire_color_id(glam::Vec4::ONE);
|
||||||
let tex=mb.acquire_tex_id(glam::Vec2::ZERO);
|
let tex=mb.acquire_tex_id(glam::Vec2::ZERO);
|
||||||
// physics polygon groups (to do physics)
|
// physics polygon groups (to do physics)
|
||||||
Ok(PolygonGroup::PolygonList(PolygonList::new(mesh.faces.into_iter().map(|[vertex_id0,vertex_id1,vertex_id2]|{
|
Ok(PolygonGroup::PolygonList(PolygonList::new(mesh.faces.into_iter().map(|[PhysicsDataVertexId(vertex_id0),PhysicsDataVertexId(vertex_id1),PhysicsDataVertexId(vertex_id2)]|{
|
||||||
let face=[
|
let face=[
|
||||||
mesh.vertices.get(vertex_id0.0 as usize).ok_or(Error::MissingVertexId(vertex_id0.0))?,
|
mesh.vertices.get(vertex_id0 as usize).ok_or(Error::MissingVertexId(vertex_id0))?,
|
||||||
mesh.vertices.get(vertex_id1.0 as usize).ok_or(Error::MissingVertexId(vertex_id1.0))?,
|
mesh.vertices.get(vertex_id1 as usize).ok_or(Error::MissingVertexId(vertex_id1))?,
|
||||||
mesh.vertices.get(vertex_id2.0 as usize).ok_or(Error::MissingVertexId(vertex_id2.0))?,
|
mesh.vertices.get(vertex_id2 as usize).ok_or(Error::MissingVertexId(vertex_id2))?,
|
||||||
].map(|v|glam::Vec3::from_slice(v)/size);
|
].map(|v|glam::Vec3::from_slice(v)/size);
|
||||||
let vertex_norm=(face[1]-face[0])
|
let vertex_norm=(face[1]-face[0])
|
||||||
.cross(face[2]-face[0]);
|
.cross(face[2]-face[0]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user