Fix issue in SAT algorithm between polyhedron and capsule
This commit is contained in:
parent
643c781fa0
commit
b33b8e0dc5
|
@ -391,6 +391,10 @@ void SATAlgorithm::computeCapsulePolyhedronFaceContactPoints(uint referenceFaceI
|
||||||
// Project the two clipped points into the polyhedron face
|
// Project the two clipped points into the polyhedron face
|
||||||
const Vector3 delta = faceNormal * (penetrationDepth - capsuleRadius);
|
const Vector3 delta = faceNormal * (penetrationDepth - capsuleRadius);
|
||||||
|
|
||||||
|
if (isCapsuleShape1) {
|
||||||
|
normalWorld = -normalWorld;
|
||||||
|
}
|
||||||
|
|
||||||
// For each of the two clipped points
|
// For each of the two clipped points
|
||||||
for (int i = 0; i<2; i++) {
|
for (int i = 0; i<2; i++) {
|
||||||
|
|
||||||
|
@ -405,9 +409,7 @@ void SATAlgorithm::computeCapsulePolyhedronFaceContactPoints(uint referenceFaceI
|
||||||
// Project the clipped point into the capsule bounds
|
// Project the clipped point into the capsule bounds
|
||||||
Vector3 contactPointCapsule = (polyhedronToCapsuleTransform * clipSegment[i]) - separatingAxisCapsuleSpace * capsuleRadius;
|
Vector3 contactPointCapsule = (polyhedronToCapsuleTransform * clipSegment[i]) - separatingAxisCapsuleSpace * capsuleRadius;
|
||||||
|
|
||||||
if (isCapsuleShape1) {
|
|
||||||
normalWorld = -normalWorld;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute smooth triangle mesh contact if one of the two collision shapes is a triangle
|
// Compute smooth triangle mesh contact if one of the two collision shapes is a triangle
|
||||||
TriangleShape::computeSmoothTriangleMeshContact(narrowPhaseInfo->collisionShape1, narrowPhaseInfo->collisionShape2,
|
TriangleShape::computeSmoothTriangleMeshContact(narrowPhaseInfo->collisionShape1, narrowPhaseInfo->collisionShape2,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user