diff --git a/engine/physics/src/model.rs b/engine/physics/src/model.rs index 7601058..acad79a 100644 --- a/engine/physics/src/model.rs +++ b/engine/physics/src/model.rs @@ -1005,9 +1005,3 @@ fn test_is_empty_volume(){ assert!(!is_empty_volume([vec3::X.fix_3(),vec3::Y.fix_3(),vec3::Z.fix_3()].to_vec())); assert!(is_empty_volume([vec3::X.fix_3(),vec3::Y.fix_3(),vec3::Z.fix_3(),vec3::NEG_X.fix_3()].to_vec())); } - -#[test] -fn build_me_a_cube(){ - let mesh=PhysicsMesh::unit_cube(); - //println!("mesh={:?}",mesh); -} diff --git a/engine/physics/src/physics.rs b/engine/physics/src/physics.rs index 99fcb70..ebfd3a0 100644 --- a/engine/physics/src/physics.rs +++ b/engine/physics/src/physics.rs @@ -229,12 +229,6 @@ impl PhysicsModels{ .map(|model|&model.transform), } } - fn contact_model(&self,model_id:ContactModelId)->&ContactModel{ - &self.contact_models[&model_id] - } - fn intersect_model(&self,model_id:IntersectModelId)->&IntersectModel{ - &self.intersect_models[&model_id] - } fn contact_attr(&self,model_id:ContactModelId)->&gameplay_attributes::ContactAttributes{ &self.contact_attributes[&self.contact_models[&model_id].attr_id] } @@ -269,7 +263,7 @@ impl PhysicsCamera{ ); self.clamped_mouse_pos=unclamped_mouse_pos; } - pub fn simulate_move_angles(&self,mouse_delta:glam::IVec2)->glam::Vec2 { + pub fn simulate_move_angles(&self,mouse_delta:glam::IVec2)->glam::Vec2{ let a=-self.sensitivity.mul_int((self.clamped_mouse_pos+mouse_delta).as_i64vec2()); let ax=Angle32::wrap_from_i64(a.x); let ay=Angle32::clamp_from_i64(a.y) @@ -1873,7 +1867,6 @@ fn atomic_input_instruction(state:&mut PhysicsState,data:&PhysicsData,ins:TimedI #[cfg(test)] mod test{ - use crate::body::VirtualBody; use strafesnet_common::integer::{vec3::{self,int as int3},mat3}; use super::*; fn test_collision_axis_aligned(relative_body:Body,expected_collision_time:Option<Time>){ diff --git a/integration-testing/src/main.rs b/integration-testing/src/main.rs index fa48bc8..ee1a578 100644 --- a/integration-testing/src/main.rs +++ b/integration-testing/src/main.rs @@ -4,6 +4,7 @@ use std::{io::{Cursor,Read},path::Path}; use strafesnet_physics::physics::{PhysicsData,PhysicsState,PhysicsContext}; fn main(){ + run_replay().unwrap(); test_determinism().unwrap(); } diff --git a/lib/bsp_loader/src/bsp.rs b/lib/bsp_loader/src/bsp.rs index def11ee..903c611 100644 --- a/lib/bsp_loader/src/bsp.rs +++ b/lib/bsp_loader/src/bsp.rs @@ -240,7 +240,7 @@ impl PartialMap2{ .enumerate().map(|(new_texture_id,(old_texture_id,texture))|{ (texture,(old_texture_id,model::TextureId::new(new_texture_id as u32))) }).unzip(); - let render_configs=render_configs.into_iter().map(|(render_config_id,mut render_config)|{ + let render_configs=render_configs.into_iter().map(|(_render_config_id,mut render_config)|{ //this may generate duplicate no-texture render configs but idc render_config.texture=render_config.texture.and_then(|texture_id| texture_id_map.get(&texture_id).copied() diff --git a/lib/common/src/timer.rs b/lib/common/src/timer.rs index fcd4de7..d34a0c4 100644 --- a/lib/common/src/timer.rs +++ b/lib/common/src/timer.rs @@ -23,7 +23,7 @@ impl PauseState for Unpaused{ } #[derive(Clone,Copy,Hash,Eq,PartialEq,PartialOrd,Debug)] -enum Inner{} +pub enum Inner{} type InnerTime=Time<Inner>; #[derive(Clone,Copy,Debug)] diff --git a/lib/common/src/updatable.rs b/lib/common/src/updatable.rs index 13b6dd2..f9e8a07 100644 --- a/lib/common/src/updatable.rs +++ b/lib/common/src/updatable.rs @@ -1,3 +1,5 @@ +// This whole thing should be a drive macro + pub trait Updatable<Updater>{ fn update(&mut self,update:Updater); } @@ -53,4 +55,3 @@ impl Updatable<OuterUpdate> for Outer{ } } } -//*/ \ No newline at end of file diff --git a/lib/deferred_loader/Cargo.toml b/lib/deferred_loader/Cargo.toml index 590b80c..de729c7 100644 --- a/lib/deferred_loader/Cargo.toml +++ b/lib/deferred_loader/Cargo.toml @@ -12,8 +12,8 @@ authors = ["Rhys Lloyd <krakow20@gmail.com>"] [features] default = ["legacy"] legacy = ["dep:url","dep:vbsp"] -#roblox = ["dep:lazy-regex"] -#source = ["dep:vbsp"] +roblox = [] +source = ["dep:vbsp"] [dependencies] strafesnet_common = { path = "../common", registry = "strafesnet" } diff --git a/lib/fixed_wide/src/tests.rs b/lib/fixed_wide/src/tests.rs index c171c6b..b4f89ba 100644 --- a/lib/fixed_wide/src/tests.rs +++ b/lib/fixed_wide/src/tests.rs @@ -57,7 +57,7 @@ fn from_f32(){ assert_eq!(b,Ok(a)); //I32F32::MIN hits a special case since it's not representable as a positive signed integer //TODO: don't return an overflow because this is technically possible - let a=I32F32::MIN; + let _a=I32F32::MIN; let b:Result<I32F32,_>=Into::<f32>::into(I32F32::MIN).try_into(); assert_eq!(b,Err(crate::fixed::FixedFromFloatError::Overflow)); //16 is within the 24 bits of float precision diff --git a/lib/rbx_loader/src/lib.rs b/lib/rbx_loader/src/lib.rs index 06fbb07..bb73961 100644 --- a/lib/rbx_loader/src/lib.rs +++ b/lib/rbx_loader/src/lib.rs @@ -42,7 +42,7 @@ pub struct Place{ services:roblox_emulator::context::Services, } impl Place{ - fn new(dom:WeakDom)->Option<Self>{ + pub fn new(dom:WeakDom)->Option<Self>{ let context=roblox_emulator::context::Context::from_ref(&dom); Some(Self{ services:context.find_services()?, diff --git a/lib/rbx_loader/src/mesh.rs b/lib/rbx_loader/src/mesh.rs index ae5d161..4b18f56 100644 --- a/lib/rbx_loader/src/mesh.rs +++ b/lib/rbx_loader/src/mesh.rs @@ -3,6 +3,7 @@ use std::collections::HashMap; use rbx_mesh::mesh::{Vertex2, Vertex2Truncated}; use strafesnet_common::{integer::vec3,model::{self, ColorId, IndexedVertex, NormalId, PolygonGroup, PolygonList, PositionId, TextureCoordinateId, VertexId}}; +#[allow(dead_code)] #[derive(Debug)] pub enum Error{ Planar64Vec3(strafesnet_common::integer::Planar64TryFromFloatError), diff --git a/lib/rbx_loader/src/primitives.rs b/lib/rbx_loader/src/primitives.rs index b70c859..7edd2f4 100644 --- a/lib/rbx_loader/src/primitives.rs +++ b/lib/rbx_loader/src/primitives.rs @@ -1,4 +1,4 @@ -use strafesnet_common::model::{Color4,TextureCoordinate,Mesh,IndexedGraphicsGroup,IndexedPhysicsGroup,IndexedVertex,PolygonGroupId,PolygonGroup,PolygonList,IndexedVertexList,PositionId,TextureCoordinateId,NormalId,ColorId,VertexId,RenderConfigId}; +use strafesnet_common::model::{Color4,TextureCoordinate,Mesh,IndexedGraphicsGroup,IndexedPhysicsGroup,IndexedVertex,PolygonGroupId,PolygonGroup,PolygonList,PositionId,TextureCoordinateId,NormalId,ColorId,VertexId,RenderConfigId}; use strafesnet_common::integer::{vec3,Planar64Vec3}; #[derive(Debug)] @@ -126,9 +126,6 @@ const CORNERWEDGE_DEFAULT_NORMALS:[Planar64Vec3;5]=[ vec3::int( 0,-1, 0),//CornerWedge::Bottom vec3::int( 0, 0,-1),//CornerWedge::Front ]; -pub fn unit_sphere(render:RenderConfigId)->Mesh{ - unit_cube(render) -} #[derive(Default)] pub struct CubeFaceDescription([Option<FaceDescription>;6]); impl CubeFaceDescription{ @@ -149,10 +146,6 @@ pub fn unit_cube(render:RenderConfigId)->Mesh{ t.insert(CubeFace::Front,FaceDescription::new_with_render_id(render)); generate_partial_unit_cube(t) } -pub fn unit_cylinder(render:RenderConfigId)->Mesh{ - //lmao - unit_cube(render) -} #[derive(Default)] pub struct WedgeFaceDescription([Option<FaceDescription>;5]); impl WedgeFaceDescription{ @@ -163,15 +156,15 @@ impl WedgeFaceDescription{ self.0.into_iter().enumerate().filter_map(|v|v.1.map(|u|(v.0,u))) } } -pub fn unit_wedge(render:RenderConfigId)->Mesh{ - let mut t=WedgeFaceDescription::default(); - t.insert(WedgeFace::Right,FaceDescription::new_with_render_id(render)); - t.insert(WedgeFace::TopFront,FaceDescription::new_with_render_id(render)); - t.insert(WedgeFace::Back,FaceDescription::new_with_render_id(render)); - t.insert(WedgeFace::Left,FaceDescription::new_with_render_id(render)); - t.insert(WedgeFace::Bottom,FaceDescription::new_with_render_id(render)); - generate_partial_unit_wedge(t) -} +// pub fn unit_wedge(render:RenderConfigId)->Mesh{ +// let mut t=WedgeFaceDescription::default(); +// t.insert(WedgeFace::Right,FaceDescription::new_with_render_id(render)); +// t.insert(WedgeFace::TopFront,FaceDescription::new_with_render_id(render)); +// t.insert(WedgeFace::Back,FaceDescription::new_with_render_id(render)); +// t.insert(WedgeFace::Left,FaceDescription::new_with_render_id(render)); +// t.insert(WedgeFace::Bottom,FaceDescription::new_with_render_id(render)); +// generate_partial_unit_wedge(t) +// } #[derive(Default)] pub struct CornerWedgeFaceDescription([Option<FaceDescription>;5]); impl CornerWedgeFaceDescription{ @@ -182,15 +175,15 @@ impl CornerWedgeFaceDescription{ self.0.into_iter().enumerate().filter_map(|v|v.1.map(|u|(v.0,u))) } } -pub fn unit_cornerwedge(render:RenderConfigId)->Mesh{ - let mut t=CornerWedgeFaceDescription::default(); - t.insert(CornerWedgeFace::Right,FaceDescription::new_with_render_id(render)); - t.insert(CornerWedgeFace::TopBack,FaceDescription::new_with_render_id(render)); - t.insert(CornerWedgeFace::TopLeft,FaceDescription::new_with_render_id(render)); - t.insert(CornerWedgeFace::Bottom,FaceDescription::new_with_render_id(render)); - t.insert(CornerWedgeFace::Front,FaceDescription::new_with_render_id(render)); - generate_partial_unit_cornerwedge(t) -} +// pub fn unit_cornerwedge(render:RenderConfigId)->Mesh{ +// let mut t=CornerWedgeFaceDescription::default(); +// t.insert(CornerWedgeFace::Right,FaceDescription::new_with_render_id(render)); +// t.insert(CornerWedgeFace::TopBack,FaceDescription::new_with_render_id(render)); +// t.insert(CornerWedgeFace::TopLeft,FaceDescription::new_with_render_id(render)); +// t.insert(CornerWedgeFace::Bottom,FaceDescription::new_with_render_id(render)); +// t.insert(CornerWedgeFace::Front,FaceDescription::new_with_render_id(render)); +// generate_partial_unit_cornerwedge(t) +// } #[derive(Clone)] pub struct FaceDescription{ diff --git a/lib/rbx_loader/src/rbx.rs b/lib/rbx_loader/src/rbx.rs index 0535724..643cf3d 100644 --- a/lib/rbx_loader/src/rbx.rs +++ b/lib/rbx_loader/src/rbx.rs @@ -130,9 +130,9 @@ impl ModesBuilder{ fn push_mode_update(&mut self,mode_id:gameplay_modes::ModeId,mode_update:gameplay_modes::ModeUpdate){ self.mode_updates.push((mode_id,mode_update)); } - fn push_stage_update(&mut self,mode_id:gameplay_modes::ModeId,stage_id:gameplay_modes::StageId,stage_update:gameplay_modes::StageUpdate){ - self.stage_updates.push((mode_id,stage_id,stage_update)); - } + // fn push_stage_update(&mut self,mode_id:gameplay_modes::ModeId,stage_id:gameplay_modes::StageId,stage_update:gameplay_modes::StageUpdate){ + // self.stage_updates.push((mode_id,stage_id,stage_update)); + // } } fn get_attributes(name:&str,can_collide:bool,velocity:Planar64Vec3,model_id:model::ModelId,modes_builder:&mut ModesBuilder,wormhole_in_model_to_id:&mut HashMap<model::ModelId,u32>,wormhole_id_to_out_model:&mut HashMap<u32,model::ModelId>)->attr::CollisionAttributes{ let mut general=attr::GeneralAttributes::default(); @@ -485,9 +485,6 @@ where continue; } - //at this point a new model is going to be generated for sure. - let model_id=model::ModelId::new(primitive_models_deferred_attributes.len() as u32); - //TODO: also detect "CylinderMesh" etc here let shape=match object.class.as_str(){ "Part"=>if let Some(rbx_dom_weak::types::Variant::Enum(shape))=object.properties.get("Shape"){ @@ -889,8 +886,14 @@ impl PartialMap2{ =textures.into_iter().enumerate().map(|(new_texture_id,(old_texture_id,texture))|{ (texture,(old_texture_id,model::TextureId::new(new_texture_id as u32))) }).unzip(); - let render_configs=render_configs.into_iter().map(|(render_config_id,mut render_config)|{ - //this may generate duplicate no-texture render configs but idc + let render_configs=render_configs.into_iter().map(|(_render_config_id,mut render_config)|{ + // This may generate duplicate no-texture render configs but idc + // + // This is because some textures may not exist, so the render config + // that it points to is unique but is texture. + // + // I don't think this needs to be fixed because missing textures + // should be a conversion error anyways. render_config.texture=render_config.texture.and_then(|texture_id| texture_id_map.get(&texture_id).copied() ); diff --git a/lib/snf/src/map.rs b/lib/snf/src/map.rs index d8987c9..c822795 100644 --- a/lib/snf/src/map.rs +++ b/lib/snf/src/map.rs @@ -95,21 +95,6 @@ enum ResourceType{ //Video, //Animation, } -const RESOURCE_TYPE_VARIANT_COUNT:u8=2; -#[binrw] -#[brw(little)] -struct ResourceId(u128); -impl ResourceId{ - fn resource_type(&self)->Option<ResourceType>{ - let discriminant=self.0 as u8; - //TODO: use this when it is stabilized https://github.com/rust-lang/rust/issues/73662 - //if (discriminant as usize)<std::mem::variant_count::<ResourceType>(){ - match discriminant<RESOURCE_TYPE_VARIANT_COUNT{ - true=>Some(unsafe{std::mem::transmute::<u8,ResourceType>(discriminant)}), - false=>None, - } - } -} struct ResourceMap<T>{ meshes:HashMap<strafesnet_common::model::MeshId,T>, @@ -136,11 +121,6 @@ struct ResourceBlockHeader{ resource:ResourceType, id:BlockId, } -#[binrw] -#[brw(little)] -struct ResourceExternalHeader{ - resource_uuid:ResourceId, -} #[binrw] #[brw(little)] diff --git a/strafe-client/src/file.rs b/strafe-client/src/file.rs index 2d0d3b9..81d4fd3 100644 --- a/strafe-client/src/file.rs +++ b/strafe-client/src/file.rs @@ -1,5 +1,6 @@ use std::io::Read; +#[allow(dead_code)] #[derive(Debug)] pub enum ReadError{ #[cfg(feature="roblox")] @@ -59,6 +60,7 @@ pub fn read<R:Read+std::io::Seek>(input:R)->Result<ReadFormat,ReadError>{ } } +#[allow(dead_code)] #[derive(Debug)] pub enum LoadError{ ReadError(ReadError), diff --git a/strafe-client/src/setup.rs b/strafe-client/src/setup.rs index f9ef207..e6b91d5 100644 --- a/strafe-client/src/setup.rs +++ b/strafe-client/src/setup.rs @@ -20,11 +20,6 @@ struct SetupContextPartial1{ fn create_window(title:&str,event_loop:&winit::event_loop::EventLoop<()>)->Result<winit::window::Window,winit::error::OsError>{ let mut attr=winit::window::WindowAttributes::default(); attr=attr.with_title(title); - #[cfg(windows_OFF)] // TODO - { - use winit::platform::windows::WindowBuilderExtWindows; - builder=builder.with_no_redirection_bitmap(true); - } event_loop.create_window(attr) } fn create_instance()->SetupContextPartial1{ @@ -105,14 +100,12 @@ impl<'a> SetupContextPartial2<'a>{ required_downlevel_capabilities.flags - downlevel_capabilities.flags ); SetupContextPartial3{ - instance:self.instance, surface:self.surface, adapter, } } } struct SetupContextPartial3<'a>{ - instance:wgpu::Instance, surface:wgpu::Surface<'a>, adapter:wgpu::Adapter, } @@ -138,7 +131,6 @@ impl<'a> SetupContextPartial3<'a>{ .expect("Unable to find a suitable GPU adapter!"); SetupContextPartial4{ - instance:self.instance, surface:self.surface, adapter:self.adapter, device, @@ -147,7 +139,6 @@ impl<'a> SetupContextPartial3<'a>{ } } struct SetupContextPartial4<'a>{ - instance:wgpu::Instance, surface:wgpu::Surface<'a>, adapter:wgpu::Adapter, device:wgpu::Device, @@ -164,7 +155,6 @@ impl<'a> SetupContextPartial4<'a>{ self.surface.configure(&self.device, &config); SetupContext{ - instance:self.instance, surface:self.surface, device:self.device, queue:self.queue, @@ -173,7 +163,6 @@ impl<'a> SetupContextPartial4<'a>{ } } pub struct SetupContext<'a>{ - pub instance:wgpu::Instance, pub surface:wgpu::Surface<'a>, pub device:wgpu::Device, pub queue:wgpu::Queue,