phys-collision 2.0.1-beta.0

Provides collision detection ability
// Copyright (C) 2020-2025 phys-collision authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use glam_det::nums::f32x4;
use glam_det::{UnitQuatx4, Vec3x4};
use paste::paste;
use test::Bencher;

use crate::collision_tasks::benches::common::{BenchShapePairTest, WithContainer};
use crate::collision_tasks::tests::common::TestInput;
use crate::collision_tasks::ShapeWideTester;
use crate::convex_contact_manifold::Convex4ContactManifoldWide;
use crate::shapes::{CapsuleWide, CylinderWide};
use crate::traits::PairWideTest;
use crate::{Capsule, Cylinder, ShapeContainer};

struct CapsuleCylinderBench;

impl_bench!(
    CapsuleCylinderBench,
    CapsuleWide,
    CylinderWide,
    Convex4ContactManifoldWide,
    2
);

//cargo +nightly bench  --features serde,unstable  --package phys_collision --lib
// collision_tasks::benches::capsule_cylinder

type InputType = TestInput<Capsule, Cylinder>;
bench!(InputType ,CapsuleCylinderBench,"capsule_cylinder/",
    <0,000_same_center>,
    <1,001_nocollide>,
    <2,002_cylinder_inside_capsule>,
    <3,003_capsule_inside_cylinder>,
    <4,004_capsule_y_axis_same_with_cylinder_y_axis_and_no_collide>,
    <5,005_capsule_body_and_head_cross_with_cylinder_cap_and_side>,
    <6,006_capsule_body_parallel_to_cylinder_cap_with_a_line_touch>,
    <7,007_capsule_body_parallel_to_cylinder_side_with_a_line_touch>,
    <8,008_capsule_body_penetrate_into_cylinder_cap>,
    <9,009_capsule_body_penetrate_into_cylinder_side>,
    <10,010_capsule_body_touch_a_point_with_cylinder_cap_circle>,
    <11,011_capsule_body_touch_a_point_with_cylinder_side>,
    <12,012_capsule_head_penetrate_into_cylinder_cap_circle>,
    <13,013_capsule_head_penetrate_into_cylinder_cap>,
    <14,014_capsule_head_penetrate_into_cylinder_side>,
    <15,015_capsule_head_tangent_with_cylinder_cap>,
    <16,016_capsule_head_tangent_with_cylinder_side>,
    <17,017_capsule_head_touch_a_point_with_cylinder_cap_circle>,
    <18,maybe_bepu_bug>
);