34 using namespace Opcode;
39 #define SET_CONTACT(prim_index, flag) \
42 mTouchedPrimitives->Add(prim_index);
45 #define OBB_PRIM(prim_index, flag) \
47 VertexPointers VP; mIMesh->GetTriangle(VP, prim_index); \
49 TransformPoint(mLeafVerts[0], *VP.Vertex[0], mRModelToBox, mTModelToBox); \
50 TransformPoint(mLeafVerts[1], *VP.Vertex[1], mRModelToBox, mTModelToBox); \
51 TransformPoint(mLeafVerts[2], *VP.Vertex[2], mRModelToBox, mTModelToBox); \
55 SET_CONTACT(prim_index, flag) \
108 if(!
Setup(&model))
return false;
111 if(
InitQuery(cache, box, worldb, worldm))
return true;
208 Matrix4x4 WorldBtoM = WorldB * InvWorldM;
209 Matrix4x4 WorldMtoB = *worldm * InvWorldB;
397 #define TEST_BOX_IN_OBB(center, extents) \
398 if(OBBContainsBox(center, extents)) \
401 mFlags |= OPC_CONTACT; \
415 if(!
BoxBoxOverlap(node->mAABB.mExtents, node->mAABB.mCenter))
return;
442 if(!
BoxBoxOverlap(node->mAABB.mExtents, node->mAABB.mCenter))
return;
533 if(!
BoxBoxOverlap(node->mAABB.mExtents, node->mAABB.mCenter))
return;
555 if(!
BoxBoxOverlap(node->mAABB.mExtents, node->mAABB.mCenter))
return;
651 if(!
Setup(&model))
return false;
654 if(
InitQuery(cache, box, worldb, worldm))
return true;
671 mTouchedBoxes.Reset();
730 const udword* Touched = mTouchedBoxes.GetEntries();
749 udword TriangleIndex = *T++;
760 udword TriangleIndex = BaseIndex++;