diff --git a/src/roblox.rs b/src/roblox.rs index 3d6a7a5..409c2b5 100644 --- a/src/roblox.rs +++ b/src/roblox.rs @@ -4,7 +4,7 @@ use std::collections::HashSet; use clap::{Args,Subcommand}; use anyhow::Result as AResult; use rbx_dom_weak::Instance; -use strafesnet_deferred_loader::deferred_loader::{LoadFailureMode,MeshDeferredLoader,RenderConfigDeferredLoader}; +use strafesnet_deferred_loader::deferred_loader::LoadFailureMode; use rbxassetid::RobloxAssetId; use tokio::io::AsyncReadExt; @@ -313,7 +313,8 @@ async fn download_assets(paths:Vec<PathBuf>,cookie:rbx_asset::cookie::Cookie)->A enum ConvertError{ IO(std::io::Error), SNFMap(strafesnet_snf::map::Error), - RbxLoader(strafesnet_rbx_loader::ReadError), + RobloxRead(strafesnet_rbx_loader::ReadError), + RobloxLoad(strafesnet_rbx_loader::LoadError), } impl std::fmt::Display for ConvertError{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -346,29 +347,12 @@ fn roblox_to_snf(pathlist:Vec<std::path::PathBuf>,output_folder:PathBuf)->AResul let model=strafesnet_rbx_loader::read( std::fs::File::open(path.as_path()) .map_err(ConvertError::IO)? - ).map_err(ConvertError::RbxLoader)?; + ).map_err(ConvertError::RobloxRead)?; let mut place=model.into_place(); place.run_scripts(); - let mut texture_deferred_loader=RenderConfigDeferredLoader::new(); - let mut mesh_deferred_loader=MeshDeferredLoader::new(); - - let map_step1=strafesnet_rbx_loader::convert( - place.as_ref(), - &mut texture_deferred_loader, - &mut mesh_deferred_loader, - ); - - let mut mesh_loader=strafesnet_rbx_loader::loader::MeshLoader::new(); - let meshpart_meshes=mesh_deferred_loader.into_meshes(&mut mesh_loader,LoadFailureMode::DefaultToNone).unwrap(); - - let map_step2=map_step1.add_meshpart_meshes_and_calculate_attributes(meshpart_meshes); - - let mut texture_loader=strafesnet_rbx_loader::loader::TextureLoader::new(); - let render_configs=texture_deferred_loader.into_render_configs(&mut texture_loader,LoadFailureMode::DefaultToNone).unwrap(); - - let map=map_step2.add_render_configs_and_textures(render_configs); + let map=place.to_snf(LoadFailureMode::DefaultToNone).map_err(ConvertError::RobloxLoad)?; let mut dest=output_folder.clone(); dest.push(path.file_stem().unwrap()); diff --git a/src/source.rs b/src/source.rs index ffc337a..9d60565 100644 --- a/src/source.rs +++ b/src/source.rs @@ -1,7 +1,7 @@ use std::path::PathBuf; use clap::{Args,Subcommand}; use anyhow::Result as AResult; -use strafesnet_deferred_loader::deferred_loader::{LoadFailureMode,MeshDeferredLoader,RenderConfigDeferredLoader}; +use strafesnet_deferred_loader::deferred_loader::LoadFailureMode; #[derive(Subcommand)] pub enum Commands{ @@ -278,7 +278,8 @@ fn bsp_contents(path:PathBuf)->AResult<()>{ enum ConvertError{ IO(std::io::Error), SNFMap(strafesnet_snf::map::Error), - BspLoader(strafesnet_bsp_loader::ReadError), + BspRead(strafesnet_bsp_loader::ReadError), + BspLoad(strafesnet_bsp_loader::LoadError), } impl std::fmt::Display for ConvertError{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -311,26 +312,9 @@ fn source_to_snf(pathlist:Vec<std::path::PathBuf>,output_folder:PathBuf)->AResul let bsp=strafesnet_bsp_loader::read( std::fs::File::open(path.as_path()) .map_err(ConvertError::IO)? - ).map_err(ConvertError::BspLoader)?; + ).map_err(ConvertError::BspRead)?; - let mut texture_deferred_loader=RenderConfigDeferredLoader::new(); - let mut mesh_deferred_loader=MeshDeferredLoader::new(); - - let map_step1=strafesnet_bsp_loader::convert( - &bsp, - &mut texture_deferred_loader, - &mut mesh_deferred_loader, - ); - - let mut mesh_loader=strafesnet_bsp_loader::loader::MeshLoader::new(&bsp,&mut texture_deferred_loader); - let prop_meshes=mesh_deferred_loader.into_meshes(&mut mesh_loader,LoadFailureMode::DefaultToNone).unwrap(); - - let map_step2=map_step1.add_prop_meshes(prop_meshes); - - let mut texture_loader=strafesnet_bsp_loader::loader::TextureLoader::new(); - let render_configs=texture_deferred_loader.into_render_configs(&mut texture_loader,LoadFailureMode::DefaultToNone).unwrap(); - - let map=map_step2.add_render_configs_and_textures(render_configs); + let map=bsp.to_snf(LoadFailureMode::DefaultToNone).map_err(ConvertError::BspLoad)?; let mut dest=output_folder.clone(); dest.push(path.file_stem().unwrap());