From 681c526fe13e2b41d5b1bfeabd122c56a29cb155 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 25 Aug 2014 08:52:45 -0700 Subject: [PATCH] exploit symmetry of collision pairings --- libraries/shared/src/ShapeCollider.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/ShapeCollider.cpp b/libraries/shared/src/ShapeCollider.cpp index 90e7da4822..f793163552 100644 --- a/libraries/shared/src/ShapeCollider.cpp +++ b/libraries/shared/src/ShapeCollider.cpp @@ -633,10 +633,17 @@ bool sphereVsAACube(const Shape* shapeA, const Shape* shapeB, CollisionList& col bool capsuleVsAACube(const Shape* shapeA, const Shape* shapeB, CollisionList& collisions) { /* - // find nearest approach of capsule line segment to cube const CapsuleShape* capsuleA = static_cast(shapeA); const AACubeShape* cubeB = static_cast(shapeB); + // find nearest approach of capsule line segment to cube center + + // use nearest approach to find approximate point on cube surface + + // find point on cube surface closest to capsule line segment + + // collide like point inside sphere + glm::vec3 capsuleAxis; capsuleA->computeNormalizedAxis(capsuleAxis); glm::vec3 cubeCenter = shapeB->getTranslation(); @@ -656,11 +663,11 @@ bool capsuleVsAACube(const Shape* shapeA, const Shape* shapeB, CollisionList& co } bool aaCubeVsSphere(const Shape* shapeA, const Shape* shapeB, CollisionList& collisions) { - return false; + return sphereVsAACube(shapeB, shapeA, collisions); } bool aaCubeVsCapsule(const Shape* shapeA, const Shape* shapeB, CollisionList& collisions) { - return false; + return capsuleVsAACube(shapeB, shapeA, collisions); } bool aaCubeVsAACube(const Shape* shapeA, const Shape* shapeB, CollisionList& collisions) {