[package]
edition = "2021"
name = "parry3d"
version = "0.30.2"
authors = ["Sébastien Crozet <developer@crozet.re>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "3 dimensional collision detection library in Rust."
homepage = "https://parry.rs"
documentation = "https://parry.rs/docs"
readme = "README.md"
keywords = [
"collision",
"geometry",
"distance",
"ray",
"convex",
]
categories = [
"science",
"game-development",
"mathematics",
"wasm",
]
license = "Apache-2.0"
repository = "https://github.com/dimforge/parry"
[package.metadata.docs.rs]
rustdoc-args = [
"-Zunstable-options",
"--generate-link-to-definition",
]
cargo-args = [
"-Zunstable-options",
"-Zrustdoc-scrape-examples",
]
features = ["wavefront"]
[badges.maintenance]
status = "actively-developed"
[features]
alloc = [
"hashbrown",
"smallvec",
"downcast-rs",
"rstar",
"glamx/approx",
]
bytemuck-serialize = [
"bytemuck",
"glamx/bytemuck",
]
default = [
"required-features",
"std",
"spade",
]
dim3 = []
encase = [
"dep:encase",
"glamx/encase",
]
enhanced-determinism = [
"simba/libm_force",
"indexmap",
"glamx/libm",
"glamx/scalar-math",
]
f32 = []
improved_fixed_point_support = []
parallel = ["rayon"]
required-features = [
"dim3",
"f32",
]
rkyv = [
"dep:rkyv",
"glamx/rkyv",
]
serde-serialize = [
"serde",
"serde_arrays",
"glamx/serde",
"bitflags/serde",
"hashbrown?/serde",
"spade?/serde",
]
simd8 = []
spade = [
"dep:spade",
"alloc",
]
std = [
"glamx/std",
"slab",
"simba/std",
"arrayvec/std",
"spade?/std",
"thiserror/std",
"ena",
]
wavefront = ["obj"]
[lib]
name = "parry3d"
path = "src/lib.rs"
required-features = ["required-features"]
[[example]]
name = "aabb3d"
path = "examples/aabb3d.rs"
doc-scrape-examples = true
[[example]]
name = "ball3d"
path = "examples/ball3d.rs"
doc-scrape-examples = true
[[example]]
name = "bounding_sphere3d"
path = "examples/bounding_sphere3d.rs"
doc-scrape-examples = true
[[example]]
name = "capsule"
path = "examples/capsule.rs"
doc-scrape-examples = true
[[example]]
name = "cone"
path = "examples/cone.rs"
doc-scrape-examples = true
[[example]]
name = "contact_query3d"
path = "examples/contact_query3d.rs"
doc-scrape-examples = true
[[example]]
name = "convex3d"
path = "examples/convex3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "convex_decomposition"
path = "examples/convex_decomposition.rs"
doc-scrape-examples = true
required-features = ["wavefront"]
[[example]]
name = "convex_hull3d"
path = "examples/convex_hull3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "convex_try_new3d"
path = "examples/convex_try_new3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "cuboid3d"
path = "examples/cuboid3d.rs"
doc-scrape-examples = true
[[example]]
name = "cylinder"
path = "examples/cylinder.rs"
doc-scrape-examples = true
[[example]]
name = "distance_query3d"
path = "examples/distance_query3d.rs"
doc-scrape-examples = true
[[example]]
name = "getting_started"
path = "examples/getting_started.rs"
doc-scrape-examples = true
[[example]]
name = "mesh3d"
path = "examples/mesh3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "plane3d"
path = "examples/plane3d.rs"
doc-scrape-examples = true
[[example]]
name = "plane_intersection"
path = "examples/plane_intersection.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "polyline3d"
path = "examples/polyline3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "project_point3d"
path = "examples/project_point3d.rs"
doc-scrape-examples = true
required-features = ["alloc"]
[[example]]
name = "proximity_query3d"
path = "examples/proximity_query3d.rs"
doc-scrape-examples = true
[[example]]
name = "solid_point_query3d"
path = "examples/solid_point_query3d.rs"
doc-scrape-examples = true
[[example]]
name = "solid_ray_cast3d"
path = "examples/solid_ray_cast3d.rs"
doc-scrape-examples = true
[[example]]
name = "time_of_impact_query3d"
path = "examples/time_of_impact_query3d.rs"
doc-scrape-examples = true
[[example]]
name = "utils3d"
path = "examples/utils3d.rs"
[[test]]
name = "issue_106_shape_cast_status_consistency"
path = "tests/issue_106_shape_cast_status_consistency.rs"
[[test]]
name = "issue_111_triangle_area_degenerate"
path = "tests/issue_111_triangle_area_degenerate.rs"
[[test]]
name = "issue_157_frustum_contact"
path = "tests/issue_157_frustum_contact.rs"
[[test]]
name = "issue_177_trimesh_debug"
path = "tests/issue_177_trimesh_debug.rs"
[[test]]
name = "issue_17_tiny_trimesh_distance"
path = "tests/issue_17_tiny_trimesh_distance.rs"
[[test]]
name = "issue_193_shape_cast_penetrating_normals"
path = "tests/issue_193_shape_cast_penetrating_normals.rs"
[[test]]
name = "issue_215_plane_intersection_hang"
path = "tests/issue_215_plane_intersection_hang.rs"
[[test]]
name = "issue_252_trimesh_inertia_offdiagonal"
path = "tests/issue_252_trimesh_inertia_offdiagonal.rs"
[[test]]
name = "issue_26_shape_cast_target_distance"
path = "tests/issue_26_shape_cast_target_distance.rs"
[[test]]
name = "issue_274_contact_heightfield"
path = "tests/issue_274_contact_heightfield.rs"
[[test]]
name = "issue_315_touching_cuboids_contact"
path = "tests/issue_315_touching_cuboids_contact.rs"
[[test]]
name = "issue_332_heightfield_point_projection"
path = "tests/issue_332_heightfield_point_projection.rs"
[[test]]
name = "issue_345_voxels_workspace_key_overflow"
path = "tests/issue_345_voxels_workspace_key_overflow.rs"
[[test]]
name = "issue_373_voxels_shape_cast_witness"
path = "tests/issue_373_voxels_shape_cast_witness.rs"
[[test]]
name = "issue_382_voxels_iter_non_empty"
path = "tests/issue_382_voxels_iter_non_empty.rs"
[[test]]
name = "issue_387_composite_contact_flipped"
path = "tests/issue_387_composite_contact_flipped.rs"
[[test]]
name = "issue_395_project_point_nan"
path = "tests/issue_395_project_point_nan.rs"
[[test]]
name = "issue_396_cylinder_intersection_false_negative"
path = "tests/issue_396_cylinder_intersection_false_negative.rs"
[[test]]
name = "issue_399_bvh_rebuild_reuse"
path = "tests/issue_399_bvh_rebuild_reuse.rs"
[[test]]
name = "issue_404_voxels_manifold_prediction"
path = "tests/issue_404_voxels_manifold_prediction.rs"
[[test]]
name = "issue_429_shape_cast_toi_accuracy"
path = "tests/issue_429_shape_cast_toi_accuracy.rs"
[[test]]
name = "issue_431_cuboid_distance_asymmetry"
path = "tests/issue_431_cuboid_distance_asymmetry.rs"
[[test]]
name = "issue_70_capsule_cuboid_false_negatives"
path = "tests/issue_70_capsule_cuboid_false_negatives.rs"
[[test]]
name = "issue_76_point_degenerate_triangle"
path = "tests/issue_76_point_degenerate_triangle.rs"
[[test]]
name = "issue_79_closest_points_max_dist"
path = "tests/issue_79_closest_points_max_dist.rs"
[[test]]
name = "issue_961_bvh_binned_build_panic"
path = "tests/issue_961_bvh_binned_build_panic.rs"
[[test]]
name = "issue_969_round_shape_outline_zero_radius"
path = "tests/issue_969_round_shape_outline_zero_radius.rs"
[[test]]
name = "issue_rapier810_cylinder_cap_manifold"
path = "tests/issue_rapier810_cylinder_cap_manifold.rs"
[[test]]
name = "lib"
path = "tests/lib.rs"
[[bench]]
name = "all"
path = "benches/all.rs"
[dependencies.approx]
version = "0.5"
default-features = false
[dependencies.arrayvec]
version = "0.7"
default-features = false
[dependencies.bitflags]
version = "2.3"
[dependencies.bytemuck]
version = "1"
features = ["derive"]
optional = true
[dependencies.downcast-rs]
version = "2"
features = ["sync"]
optional = true
default-features = false
[dependencies.either]
version = "1"
default-features = false
[dependencies.ena]
version = "0.14.3"
optional = true
default-features = false
[dependencies.encase]
version = "0.12"
optional = true
[dependencies.foldhash]
version = "0.2"
default-features = false
[dependencies.glamx]
version = "0.3"
features = [
"nostd-libm",
"i32",
]
default-features = false
[dependencies.hashbrown]
version = "0.17"
features = ["default-hasher"]
optional = true
default-features = false
[dependencies.indexmap]
version = "2"
features = ["serde"]
optional = true
[dependencies.log]
version = "0.4"
[dependencies.num-derive]
version = "0.4"
[dependencies.num-traits]
version = "0.2"
default-features = false
[dependencies.obj]
version = "0.10.2"
optional = true
[dependencies.ordered-float]
version = "5"
default-features = false
[dependencies.rayon]
version = "1"
optional = true
[dependencies.rkyv]
version = "0.8"
features = [
"bytecheck",
"alloc",
]
optional = true
default-features = false
[dependencies.rstar]
version = "0.13.0"
optional = true
[dependencies.serde]
version = "1.0"
features = [
"derive",
"rc",
]
optional = true
[dependencies.serde_arrays]
version = "0.2"
optional = true
[dependencies.simba]
version = "0.10.1"
features = ["wide"]
default-features = false
[dependencies.slab]
version = "0.4"
optional = true
[dependencies.smallvec]
version = "1"
optional = true
[dependencies.spade]
version = "2.15"
optional = true
default-features = false
[dependencies.static_assertions]
version = "1"
[dependencies.thiserror]
version = "2"
default-features = false
[dev-dependencies.kiss3d]
version = "0.44"
[dev-dependencies.oorandom]
version = "11"
[dev-dependencies.ptree]
version = "0.4.0"
[dev-dependencies.rand]
version = "0.10"
[dev-dependencies.rand_isaac]
version = "0.5"
[dev-dependencies.web-time]
version = "1"
[lints.clippy]
alloc_instead_of_core = "warn"
std_instead_of_alloc = "warn"
std_instead_of_core = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
'cfg(feature, values("dim2", "dim3", "f32", "f64"))',
'cfg(feature, values("wavefront"))',
'cfg(feature, values("encase"))',
'cfg(target_arch, values("spirv"))',
]