bool OrientedBoxToOrientedBox(const Obbox& obox1, const Obbox& obox2, Vec3* _contact) { int skip = 0; dContactGeom *contact = 0; dMatrix3 R1; dMatrix3 R2; for(int j = 0; j < 3; j++) { R1[0 + 4 * j] = obox1.rot(j, 0); R2[0 + 4 * j] = obox2.rot(j, 0); R1[1 + 4 * j] = obox1.rot(j, 1); R2[1 + 4 * j] = obox2.rot(j, 1); R1[2 + 4 * j] = obox1.rot(j, 2); R2[2 + 4 * j] = obox2.rot(j, 2); } Vec3 normal; float depth; int return_code; int maxc = 4; Result output; dBoxBox2( obox1.pos, R1, obox1.size, obox2.pos, R2, obox2.size, normal, &depth, &return_code, maxc, contact, skip, output ); if(output.HasContact()) { if(_contact) *_contact = output.GetContact(); return true; } return false; }