mirror of
https://github.com/godotengine/godot
synced 2024-09-05 08:08:29 +00:00
Merge pull request #20727 from muiroc/fix_sw_sat_table
fixed godotphysics sat dispatch table
This commit is contained in:
commit
978505a90a
|
@ -559,6 +559,12 @@ static void _collision_sphere_capsule(const ShapeSW *p_a, const Transform &p_tra
|
|||
separator.generate_contacts();
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_sphere_cylinder(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_sphere_convex_polygon(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
|
@ -850,6 +856,12 @@ static void _collision_box_capsule(const ShapeSW *p_a, const Transform &p_transf
|
|||
separator.generate_contacts();
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_box_cylinder(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_box_convex_polygon(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
|
@ -1126,6 +1138,12 @@ static void _collision_capsule_capsule(const ShapeSW *p_a, const Transform &p_tr
|
|||
separator.generate_contacts();
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_capsule_cylinder(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_capsule_convex_polygon(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
|
@ -1246,6 +1264,24 @@ static void _collision_capsule_face(const ShapeSW *p_a, const Transform &p_trans
|
|||
separator.generate_contacts();
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_cylinder_cylinder(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_cylinder_convex_polygon(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_cylinder_face(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
template <bool withMargin>
|
||||
static void _collision_convex_polygon_convex_polygon(const ShapeSW *p_a, const Transform &p_transform_a, const ShapeSW *p_b, const Transform &p_transform_b, _CollectorCallback *p_collector, real_t p_margin_a, real_t p_margin_b) {
|
||||
|
||||
|
@ -1475,23 +1511,33 @@ bool sat_calculate_penetration(const ShapeSW *p_shape_A, const Transform &p_tran
|
|||
ERR_FAIL_COND_V(type_B == PhysicsServer::SHAPE_RAY, false);
|
||||
ERR_FAIL_COND_V(p_shape_B->is_concave(), false);
|
||||
|
||||
static const CollisionFunc collision_table[5][5] = {
|
||||
static const CollisionFunc collision_table[6][6] = {
|
||||
{ _collision_sphere_sphere<false>,
|
||||
_collision_sphere_box<false>,
|
||||
_collision_sphere_capsule<false>,
|
||||
_collision_sphere_cylinder<false>,
|
||||
_collision_sphere_convex_polygon<false>,
|
||||
_collision_sphere_face<false> },
|
||||
{ 0,
|
||||
_collision_box_box<false>,
|
||||
_collision_box_capsule<false>,
|
||||
_collision_box_cylinder<false>,
|
||||
_collision_box_convex_polygon<false>,
|
||||
_collision_box_face<false> },
|
||||
{ 0,
|
||||
0,
|
||||
_collision_capsule_capsule<false>,
|
||||
_collision_capsule_cylinder<false>,
|
||||
_collision_capsule_convex_polygon<false>,
|
||||
_collision_capsule_face<false> },
|
||||
{ 0,
|
||||
0,
|
||||
0,
|
||||
_collision_cylinder_cylinder<false>,
|
||||
_collision_cylinder_convex_polygon<false>,
|
||||
_collision_cylinder_face<false> },
|
||||
{ 0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
_collision_convex_polygon_convex_polygon<false>,
|
||||
|
@ -1500,26 +1546,37 @@ bool sat_calculate_penetration(const ShapeSW *p_shape_A, const Transform &p_tran
|
|||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0 },
|
||||
};
|
||||
|
||||
static const CollisionFunc collision_table_margin[5][5] = {
|
||||
static const CollisionFunc collision_table_margin[6][6] = {
|
||||
{ _collision_sphere_sphere<true>,
|
||||
_collision_sphere_box<true>,
|
||||
_collision_sphere_capsule<true>,
|
||||
_collision_sphere_cylinder<true>,
|
||||
_collision_sphere_convex_polygon<true>,
|
||||
_collision_sphere_face<true> },
|
||||
{ 0,
|
||||
_collision_box_box<true>,
|
||||
_collision_box_capsule<true>,
|
||||
_collision_box_cylinder<true>,
|
||||
_collision_box_convex_polygon<true>,
|
||||
_collision_box_face<true> },
|
||||
{ 0,
|
||||
0,
|
||||
_collision_capsule_capsule<true>,
|
||||
_collision_capsule_cylinder<true>,
|
||||
_collision_capsule_convex_polygon<true>,
|
||||
_collision_capsule_face<true> },
|
||||
{ 0,
|
||||
0,
|
||||
0,
|
||||
_collision_cylinder_cylinder<true>,
|
||||
_collision_cylinder_convex_polygon<true>,
|
||||
_collision_cylinder_face<true> },
|
||||
{ 0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
_collision_convex_polygon_convex_polygon<true>,
|
||||
|
@ -1528,6 +1585,7 @@ bool sat_calculate_penetration(const ShapeSW *p_shape_A, const Transform &p_tran
|
|||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0 },
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue