mirror of
https://github.com/hannobraun/Fornjot
synced 2025-07-05 01:26:07 +00:00
Simplify
This commit is contained in:
parent
0917b95fb8
commit
00a8b98982
@ -3,7 +3,9 @@ use std::fs::File;
|
||||
use crate::geometry::{Mesh, Operation, Vertex};
|
||||
|
||||
pub fn export(mesh: &Mesh) -> anyhow::Result<()> {
|
||||
let vertices = mesh.vertices();
|
||||
let mut vertices = Vec::new();
|
||||
|
||||
mesh.vertices(&mut vertices);
|
||||
let triangles = mesh.triangles();
|
||||
|
||||
let mesh = threemf::Mesh {
|
||||
|
@ -18,8 +18,8 @@ impl Mesh {
|
||||
}
|
||||
|
||||
impl Operation for Mesh {
|
||||
fn vertices(&self) -> Vec<Vertex> {
|
||||
self.vertices.clone()
|
||||
fn vertices(&self, vertices: &mut Vec<Vertex>) {
|
||||
vertices.extend(self.vertices.iter().copied());
|
||||
}
|
||||
|
||||
fn triangles(&self) -> Vec<Triangle> {
|
||||
@ -33,8 +33,8 @@ pub struct Vertex {
|
||||
}
|
||||
|
||||
impl Operation for Vertex {
|
||||
fn vertices(&self) -> Vec<Vertex> {
|
||||
vec![*self]
|
||||
fn vertices(&self, vertices: &mut Vec<Vertex>) {
|
||||
vertices.push(*self);
|
||||
}
|
||||
|
||||
fn triangles(&self) -> Vec<Triangle> {
|
||||
@ -46,7 +46,7 @@ pub type Index = u32;
|
||||
pub type Triangle = [Index; 3];
|
||||
|
||||
pub trait Operation {
|
||||
fn vertices(&self) -> Vec<Vertex>;
|
||||
fn vertices(&self, vertices: &mut Vec<Vertex>);
|
||||
fn triangles(&self) -> Vec<Triangle>;
|
||||
}
|
||||
|
||||
@ -56,15 +56,15 @@ pub struct OperationInSequence {
|
||||
}
|
||||
|
||||
impl Operation for OperationInSequence {
|
||||
fn vertices(&self) -> Vec<Vertex> {
|
||||
let mut vertices = self
|
||||
.previous
|
||||
.as_ref()
|
||||
.map(|op| op.vertices.clone())
|
||||
.unwrap_or_default();
|
||||
fn vertices(&self, vertices: &mut Vec<Vertex>) {
|
||||
vertices.extend(
|
||||
self.previous
|
||||
.as_ref()
|
||||
.map(|op| op.vertices.clone())
|
||||
.into_iter()
|
||||
.flatten(),
|
||||
);
|
||||
vertices.extend(self.operation.vertices.clone());
|
||||
|
||||
vertices
|
||||
}
|
||||
|
||||
fn triangles(&self) -> Vec<Triangle> {
|
||||
|
@ -193,7 +193,8 @@ impl Renderer {
|
||||
|
||||
for triangle in mesh.triangles() {
|
||||
let triangle = triangle.map(|index| {
|
||||
let mesh_vertices = mesh.vertices();
|
||||
let mut mesh_vertices = Vec::new();
|
||||
mesh.vertices(&mut mesh_vertices);
|
||||
|
||||
Vec3::from(
|
||||
mesh_vertices
|
||||
|
Loading…
x
Reference in New Issue
Block a user