@@ -22,6 +22,8 @@ pub enum ColliderView<'a> {
2222 Segment ( SegmentView < ' a > ) ,
2323 /// A triangle shape.
2424 Triangle ( TriangleView < ' a > ) ,
25+ /// A Voxels shape.
26+ Voxels ( VoxelsView < ' a > ) ,
2527 /// A triangle mesh shape.
2628 TriMesh ( TriMeshView < ' a > ) ,
2729 /// A set of segments.
@@ -73,6 +75,7 @@ impl fmt::Debug for ColliderView<'_> {
7375 ColliderView :: Capsule ( view) => write ! ( f, "{:?}" , view. raw) ,
7476 ColliderView :: Segment ( view) => write ! ( f, "{:?}" , view. raw) ,
7577 ColliderView :: Triangle ( view) => write ! ( f, "{:?}" , view. raw) ,
78+ ColliderView :: Voxels ( view) => write ! ( f, "{:?}" , view. raw) ,
7679 ColliderView :: TriMesh ( _) => write ! ( f, "Trimesh (not representable)" ) ,
7780 ColliderView :: Polyline ( _) => write ! ( f, "Polyline (not representable)" ) ,
7881 ColliderView :: HalfSpace ( view) => write ! ( f, "{:?}" , view. raw) ,
@@ -108,6 +111,7 @@ impl<'a> From<TypedShape<'a>> for ColliderView<'a> {
108111 TypedShape :: Capsule ( s) => ColliderView :: Capsule ( CapsuleView { raw : s } ) ,
109112 TypedShape :: Segment ( s) => ColliderView :: Segment ( SegmentView { raw : s } ) ,
110113 TypedShape :: Triangle ( s) => ColliderView :: Triangle ( TriangleView { raw : s } ) ,
114+ TypedShape :: Voxels ( s) => ColliderView :: Voxels ( VoxelsView { raw : s } ) ,
111115 TypedShape :: TriMesh ( s) => ColliderView :: TriMesh ( TriMeshView { raw : s } ) ,
112116 TypedShape :: Polyline ( s) => ColliderView :: Polyline ( PolylineView { raw : s } ) ,
113117 TypedShape :: HalfSpace ( s) => ColliderView :: HalfSpace ( HalfSpaceView { raw : s } ) ,
@@ -129,8 +133,6 @@ impl<'a> From<TypedShape<'a>> for ColliderView<'a> {
129133 TypedShape :: RoundTriangle ( s) => {
130134 ColliderView :: RoundTriangle ( RoundTriangleView { raw : s } )
131135 }
132- // RoundedTriMesh,
133- // RoundedHeightField,
134136 #[ cfg( feature = "dim2" ) ]
135137 TypedShape :: RoundConvexPolygon ( s) => {
136138 ColliderView :: RoundConvexPolygon ( RoundConvexPolygonView { raw : s } )
@@ -171,6 +173,7 @@ impl<'a> ColliderView<'a> {
171173 ColliderView :: Capsule ( CapsuleView { raw : s } ) => TypedShape :: Capsule ( s) ,
172174 ColliderView :: Segment ( SegmentView { raw : s } ) => TypedShape :: Segment ( s) ,
173175 ColliderView :: Triangle ( TriangleView { raw : s } ) => TypedShape :: Triangle ( s) ,
176+ ColliderView :: Voxels ( VoxelsView { raw : s } ) => TypedShape :: Voxels ( s) ,
174177 ColliderView :: TriMesh ( TriMeshView { raw : s } ) => TypedShape :: TriMesh ( s) ,
175178 ColliderView :: Polyline ( PolylineView { raw : s } ) => TypedShape :: Polyline ( s) ,
176179 ColliderView :: HalfSpace ( HalfSpaceView { raw : s } ) => TypedShape :: HalfSpace ( s) ,
@@ -192,8 +195,6 @@ impl<'a> ColliderView<'a> {
192195 ColliderView :: RoundTriangle ( RoundTriangleView { raw : s } ) => {
193196 TypedShape :: RoundTriangle ( s)
194197 }
195- // RoundedTriMesh,
196- // RoundedHeightField,
197198 #[ cfg( feature = "dim2" ) ]
198199 ColliderView :: RoundConvexPolygon ( RoundConvexPolygonView { raw : s } ) => {
199200 TypedShape :: RoundConvexPolygon ( s)
@@ -219,6 +220,7 @@ impl<'a> ColliderView<'a> {
219220 ColliderView :: Capsule ( CapsuleView { raw } ) => SharedShape :: new ( * raw) ,
220221 ColliderView :: Segment ( SegmentView { raw } ) => SharedShape :: new ( * raw) ,
221222 ColliderView :: Triangle ( TriangleView { raw } ) => SharedShape :: new ( * raw) ,
223+ ColliderView :: Voxels ( VoxelsView { raw } ) => SharedShape :: new ( raw. clone ( ) ) ,
222224 ColliderView :: TriMesh ( TriMeshView { raw } ) => SharedShape :: new ( raw. clone ( ) ) ,
223225 ColliderView :: Polyline ( PolylineView { raw } ) => SharedShape :: new ( raw. clone ( ) ) ,
224226 ColliderView :: HalfSpace ( HalfSpaceView { raw } ) => SharedShape :: new ( * raw) ,
@@ -276,11 +278,14 @@ impl<'a> ColliderView<'a> {
276278 Some ( Either :: Right ( b) ) => SharedShape :: new ( b) ,
277279 } ,
278280 ColliderView :: Segment ( s) => SharedShape :: new ( s. raw . scaled ( & scale. into ( ) ) ) ,
279- // ColliderView::RoundSegment(s) => SharedShape::new(RoundShape {
280- // border_radius: s.raw.border_radius,
281- // inner_shape: s.raw.inner_shape.scaled(&scale.into()),
282- // }),
283281 ColliderView :: Triangle ( t) => SharedShape :: new ( t. raw . scaled ( & scale. into ( ) ) ) ,
282+ ColliderView :: Voxels ( cp) => match cp. raw . clone ( ) . scaled ( & scale. into ( ) ) {
283+ None => {
284+ log:: error!( "Failed to apply scale {} to Voxels shape." , scale) ;
285+ SharedShape :: ball ( 0.0 )
286+ }
287+ Some ( scaled) => SharedShape :: new ( scaled) ,
288+ } ,
284289 ColliderView :: RoundTriangle ( t) => SharedShape :: new ( RoundShape {
285290 border_radius : t. raw . border_radius ,
286291 inner_shape : t. raw . inner_shape . scaled ( & scale. into ( ) ) ,
0 commit comments