@@ -17,7 +17,7 @@ use bevy_reflect::{std_traits::ReflectDefault, Reflect};
1717use intersections:: * ;
1818pub use intersections:: { ray_aabb_intersection_3d, ray_mesh_intersection, RayMeshHit } ;
1919
20- use bevy_asset:: { Assets , Handle } ;
20+ use bevy_asset:: { Assets , ExtractableAsset , Handle } ;
2121use bevy_ecs:: { prelude:: * , system:: lifetimeless:: Read , system:: SystemParam } ;
2222use bevy_math:: FloatOrd ;
2323use bevy_transform:: components:: GlobalTransform ;
@@ -282,6 +282,10 @@ impl<'w, 's> MeshRayCast<'w, 's> {
282282 return ;
283283 } ;
284284
285+ let Ok ( data) = mesh. extractable_data_ref ( ) else {
286+ return ;
287+ } ;
288+
285289 // Backfaces of 2d meshes are never culled, unlike 3d meshes.
286290 let backfaces = match ( has_backfaces, mesh2d. is_some ( ) ) {
287291 ( false , false ) => Backfaces :: Cull ,
@@ -291,7 +295,7 @@ impl<'w, 's> MeshRayCast<'w, 's> {
291295 // Perform the actual ray cast.
292296 let _ray_cast_guard = ray_cast_guard. enter ( ) ;
293297 let transform = transform. affine ( ) ;
294- let intersection = ray_intersection_over_mesh ( mesh , & transform, ray, backfaces) ;
298+ let intersection = ray_intersection_over_mesh ( data , & transform, ray, backfaces) ;
295299
296300 if let Some ( intersection) = intersection {
297301 let distance = FloatOrd ( intersection. distance ) ;
0 commit comments