diff --git a/engine/physics/src/physics.rs b/engine/physics/src/physics.rs
index 3fd2340..fc14ad6 100644
--- a/engine/physics/src/physics.rs
+++ b/engine/physics/src/physics.rs
@@ -980,6 +980,14 @@ impl PhysicsContext<'_>{
 	}
 }
 impl PhysicsData{
+	pub fn trace_ray(&self,ray:strafesnet_common::bvh::Ray)->Option<ModelId>{
+		let (time,convex_mesh_id)=self.bvh.sample_ray(&ray,Time::ZERO,Time::MAX,|&model,ray|{
+			let mesh=self.models.mesh(model);
+			// TODO: ray tracing lol
+			None
+		})?;
+		Some(convex_mesh_id.model_id.into())
+	}
 	/// use with caution, this is the only non-instruction way to mess with physics
 	pub fn generate_models(&mut self,map:&map::CompleteMap){
 		let mut modes=map.modes.clone();