Textures are now shared between materials
This commit is contained in:
parent
fdcc580d14
commit
0b6d39541f
|
@ -136,10 +136,12 @@ impl Model {
|
|||
let normal_offset = self.normals.len();
|
||||
let face_offset = self.faces.len();
|
||||
|
||||
// Merge the elements
|
||||
self.vertices.append(&mut other.vertices);
|
||||
self.texture_coordinates.append(&mut other.texture_coordinates);
|
||||
self.normals.append(&mut other.normals);
|
||||
|
||||
// Merge the parts and faces
|
||||
for part in &mut other.parts {
|
||||
let mut new_part = Part::new(part.material_name.clone());
|
||||
for face in &mut part.faces {
|
||||
|
@ -161,6 +163,7 @@ impl Model {
|
|||
self.parts.push(new_part);
|
||||
}
|
||||
|
||||
// Merge the materials
|
||||
for (name, material) in other.materials {
|
||||
let entry = self.materials.entry(name);
|
||||
if let Entry::Occupied(_) = entry {
|
||||
|
@ -169,6 +172,16 @@ impl Model {
|
|||
entry.or_insert(material);
|
||||
}
|
||||
}
|
||||
|
||||
// Merge the textures
|
||||
for (name, texture) in other.textures {
|
||||
let entry = self.textures.entry(name);
|
||||
if let Entry::Occupied(_) = entry {
|
||||
// return Error;
|
||||
} else {
|
||||
entry.or_insert(texture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a model from a file.
|
||||
|
|
|
@ -11,10 +11,7 @@ use clap::{App, Arg};
|
|||
|
||||
use glium::Display;
|
||||
use glium::glutin;
|
||||
use glium::glutin::{
|
||||
EventsLoop,
|
||||
WindowBuilder,
|
||||
};
|
||||
use glium::glutin::{EventsLoop, WindowBuilder};
|
||||
|
||||
use glium::glutin::Event;
|
||||
use glium::glutin::WindowEvent;
|
||||
|
@ -25,8 +22,7 @@ use model_converter::math::bounding_box::BoundingBox3;
|
|||
use model_converter::math::vector::Vector3;
|
||||
use model_converter::parser::parse;
|
||||
use model_converter::renderer::Renderer;
|
||||
use model_converter::controls::OrbitControls;
|
||||
use model_converter::controls::FirstPersonControls;
|
||||
use model_converter::controls::{OrbitControls, FirstPersonControls};
|
||||
use model_converter::camera::Camera;
|
||||
|
||||
fn as_millis(duration: Duration) -> u64 {
|
||||
|
|
Loading…
Reference in New Issue