forked from StrafesNET/strafe-project
deferred_loader: load generic mesh
This commit is contained in:
@@ -349,7 +349,7 @@ pub struct PartialMap1{
|
|||||||
impl PartialMap1{
|
impl PartialMap1{
|
||||||
pub fn add_prop_meshes<'a>(
|
pub fn add_prop_meshes<'a>(
|
||||||
self,
|
self,
|
||||||
prop_meshes:Meshes,
|
prop_meshes:Meshes<model::Mesh>,
|
||||||
)->PartialMap2{
|
)->PartialMap2{
|
||||||
PartialMap2{
|
PartialMap2{
|
||||||
attributes:self.attributes,
|
attributes:self.attributes,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use std::collections::HashMap;
|
|||||||
use crate::loader::Loader;
|
use crate::loader::Loader;
|
||||||
use crate::mesh::Meshes;
|
use crate::mesh::Meshes;
|
||||||
use crate::texture::{RenderConfigs,Texture};
|
use crate::texture::{RenderConfigs,Texture};
|
||||||
use strafesnet_common::model::{Mesh,MeshId,RenderConfig,RenderConfigId,TextureId};
|
use strafesnet_common::model::{MeshId,RenderConfig,RenderConfigId,TextureId};
|
||||||
|
|
||||||
#[derive(Clone,Copy,Debug)]
|
#[derive(Clone,Copy,Debug)]
|
||||||
pub enum LoadFailureMode{
|
pub enum LoadFailureMode{
|
||||||
@@ -93,7 +93,7 @@ impl<H:core::hash::Hash+Eq> MeshDeferredLoader<H>{
|
|||||||
pub fn into_indices(self)->impl Iterator<Item=H>{
|
pub fn into_indices(self)->impl Iterator<Item=H>{
|
||||||
self.mesh_id_from_asset_id.into_keys()
|
self.mesh_id_from_asset_id.into_keys()
|
||||||
}
|
}
|
||||||
pub fn into_meshes<'a,L:Loader<Resource=Mesh,Index<'a>=H>+'a>(self,loader:&mut L,failure_mode:LoadFailureMode)->Result<Meshes,L::Error>{
|
pub fn into_meshes<'a,M:Clone,L:Loader<Resource=M,Index<'a>=H>+'a>(self,loader:&mut L,failure_mode:LoadFailureMode)->Result<Meshes<M>,L::Error>{
|
||||||
let mut mesh_list=vec![None;self.mesh_id_from_asset_id.len()];
|
let mut mesh_list=vec![None;self.mesh_id_from_asset_id.len()];
|
||||||
for (index,mesh_id) in self.mesh_id_from_asset_id{
|
for (index,mesh_id) in self.mesh_id_from_asset_id{
|
||||||
let resource_result=loader.load(index);
|
let resource_result=loader.load(index);
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
use strafesnet_common::model::{Mesh,MeshId};
|
use strafesnet_common::model::MeshId;
|
||||||
|
|
||||||
pub struct Meshes{
|
pub struct Meshes<M>{
|
||||||
meshes:Vec<Option<Mesh>>,
|
meshes:Vec<Option<M>>,
|
||||||
}
|
}
|
||||||
impl Meshes{
|
impl<M> Meshes<M>{
|
||||||
pub(crate) const fn new(meshes:Vec<Option<Mesh>>)->Self{
|
pub(crate) const fn new(meshes:Vec<Option<M>>)->Self{
|
||||||
Self{
|
Self{
|
||||||
meshes,
|
meshes,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn consume(self)->impl Iterator<Item=(MeshId,Mesh)>{
|
pub fn consume(self)->impl Iterator<Item=(MeshId,M)>{
|
||||||
self.meshes.into_iter().enumerate().filter_map(|(mesh_id,maybe_mesh)|
|
self.meshes.into_iter().enumerate().filter_map(|(mesh_id,maybe_mesh)|
|
||||||
maybe_mesh.map(|mesh|(MeshId::new(mesh_id as u32),mesh))
|
maybe_mesh.map(|mesh|(MeshId::new(mesh_id as u32),mesh))
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user