Skip to main content

parry2d/shape/
mod.rs

1//! Shapes supported by parry.
2
3pub use self::ball::Ball;
4pub use self::capsule::Capsule;
5pub use self::cuboid::Cuboid;
6pub use self::feature_id::{FeatureId, PackedFeatureId, SubShapeId};
7pub use self::half_space::HalfSpace;
8pub use self::polygonal_feature_map::PolygonalFeatureMap;
9pub use self::round_shape::RoundShape;
10pub use self::segment::{Segment, SegmentPointLocation};
11#[cfg(feature = "serde-serialize")]
12pub(crate) use self::shape::DeserializableTypedShape;
13#[doc(inline)]
14pub use self::shape::{Shape, ShapeType, TypedShape};
15#[doc(inline)]
16pub use self::support_map::SupportMap;
17pub use self::triangle::{Triangle, TriangleOrientation, TrianglePointLocation};
18
19#[cfg(feature = "alloc")]
20pub use self::{
21    composite_shape::{CompositeShape, CompositeShapeRef, TypedCompositeShape},
22    compound::Compound,
23    polyline::Polyline,
24    shared_shape::SharedShape,
25    voxels::{AxisMask, OctantPattern, VoxelData, VoxelState, VoxelType, Voxels, VoxelsChunkRef},
26};
27
28#[cfg(feature = "alloc")]
29pub use self::polyline::PolylineFlags;
30
31#[cfg(feature = "dim2")]
32#[cfg(feature = "alloc")]
33pub use self::convex_polygon::ConvexPolygon;
34#[cfg(feature = "dim2")]
35#[cfg(feature = "alloc")]
36pub use self::heightfield2::*;
37#[cfg(feature = "dim2")]
38pub use self::polygonal_feature2d::PolygonalFeature;
39
40#[cfg(feature = "alloc")]
41pub use self::compound::CompoundFlags;
42#[cfg(all(feature = "alloc", feature = "dim2"))]
43pub use self::compound_pseudo_normals::CompoundEdgeCone;
44#[cfg(all(feature = "alloc", feature = "dim3"))]
45pub use self::compound_pseudo_normals::CompoundFaceCone;
46#[cfg(feature = "alloc")]
47pub use self::compound_pseudo_normals::CompoundPseudoNormals;
48#[cfg(feature = "dim3")]
49pub use self::cone::Cone;
50#[cfg(feature = "dim3")]
51#[cfg(feature = "alloc")]
52pub use self::convex_polyhedron::ConvexPolyhedron;
53#[cfg(feature = "dim3")]
54pub use self::cylinder::Cylinder;
55#[cfg(feature = "dim3")]
56#[cfg(feature = "alloc")]
57pub use self::heightfield3::*;
58#[cfg(feature = "dim3")]
59pub use self::polygonal_feature3d::PolygonalFeature;
60pub use self::segment_pseudo_normals::SegmentPseudoNormals;
61#[cfg(feature = "dim3")]
62pub use self::tetrahedron::{Tetrahedron, TetrahedronPointLocation};
63pub use self::triangle_pseudo_normals::TrianglePseudoNormals;
64#[cfg(feature = "alloc")]
65pub use self::trimesh::*;
66
67/// A cylinder dilated by a sphere (so it has round corners).
68#[cfg(feature = "dim3")]
69pub type RoundCylinder = RoundShape<Cylinder>;
70/// A cone dilated by a sphere (so it has round corners).
71#[cfg(feature = "dim3")]
72pub type RoundCone = RoundShape<Cone>;
73/// A cuboid dilated by a sphere (so it has round corners).
74pub type RoundCuboid = RoundShape<Cuboid>;
75/// A triangle dilated by a sphere (so it has round corners).
76pub type RoundTriangle = RoundShape<Triangle>;
77/// A convex polyhedron dilated by a sphere (so it has round corners).
78#[cfg(feature = "dim3")]
79#[cfg(feature = "alloc")]
80pub type RoundConvexPolyhedron = RoundShape<ConvexPolyhedron>;
81/// A convex polygon dilated by a sphere (so it has round corners).
82#[cfg(feature = "dim2")]
83#[cfg(feature = "alloc")]
84pub type RoundConvexPolygon = RoundShape<ConvexPolygon>;
85
86pub(crate) use self::round_shape::RoundShapeRef;
87
88mod ball;
89mod capsule;
90#[cfg(feature = "alloc")]
91#[doc(hidden)]
92pub mod composite_shape;
93#[cfg(feature = "alloc")]
94mod compound;
95mod cuboid;
96mod half_space;
97#[cfg(feature = "alloc")]
98mod polyline;
99mod round_shape;
100mod segment;
101#[doc(hidden)]
102pub mod shape;
103#[doc(hidden)]
104pub mod support_map;
105mod triangle;
106
107#[cfg(feature = "dim2")]
108#[cfg(feature = "alloc")]
109mod convex_polygon;
110#[cfg(feature = "dim2")]
111#[cfg(feature = "alloc")]
112mod heightfield2;
113
114#[cfg(feature = "dim3")]
115mod cone;
116#[cfg(feature = "dim3")]
117#[cfg(feature = "alloc")]
118mod convex_polyhedron;
119#[cfg(feature = "dim3")]
120mod cylinder;
121#[cfg(feature = "dim3")]
122#[cfg(feature = "alloc")]
123mod heightfield3;
124#[cfg(feature = "dim3")]
125mod polygonal_feature3d;
126mod polygonal_feature_map;
127#[cfg(feature = "dim3")]
128mod tetrahedron;
129#[cfg(feature = "alloc")]
130pub(crate) mod trimesh;
131// TODO: move this elsewhere?
132#[cfg(feature = "alloc")]
133mod compound_pseudo_normals;
134mod feature_id;
135#[cfg(feature = "dim2")]
136mod polygonal_feature2d;
137#[cfg(feature = "alloc")]
138mod pseudo_normals;
139mod segment_pseudo_normals;
140#[cfg(feature = "alloc")]
141mod shared_shape;
142mod triangle_pseudo_normals;
143#[cfg(feature = "alloc")]
144mod voxels;