38 #define SET_CONTACT(prim_index, flag) \
41 mTouchedPrimitives->Add(prim_index);
44 #define PLANES_PRIM(prim_index, flag) \
46 mIMesh->GetTriangle(mVP, prim_index); \
48 if(PlanesTriOverlap(clip_mask)) \
50 SET_CONTACT(prim_index, flag) \
59 collisionPairInserter(NULL),
107 if(!
Setup(&model))
return false;
110 if(
InitQuery(cache, planes, nb_planes, worldm))
return true;
112 udword PlaneMask = (1<<nb_planes)-1;
126 else _Collide(Tree->GetNodes(), PlaneMask);
134 else _Collide(Tree->GetNodes(), PlaneMask);
149 else _Collide(Tree->GetNodes(), PlaneMask);
157 else _Collide(Tree->GetNodes(), PlaneMask);
260 #define TEST_CLIP_MASK \
266 mFlags |= OPC_CONTACT; \
281 if(!
PlanesAABBOverlap(node->mAABB.mCenter, node->mAABB.mExtents, OutClipMask, clip_mask))
return;
292 _Collide(node->GetPos(), OutClipMask);
296 _Collide(node->GetNeg(), OutClipMask);
310 if(!
PlanesAABBOverlap(node->mAABB.mCenter, node->mAABB.mExtents, OutClipMask, clip_mask))
return;
355 _Collide(node->GetPos(), OutClipMask);
359 _Collide(node->GetNeg(), OutClipMask);
407 if(!
PlanesAABBOverlap(node->mAABB.mCenter, node->mAABB.mExtents, OutClipMask, clip_mask))
return;
413 else _Collide(node->GetPos(), OutClipMask);
418 else _Collide(node->GetNeg(), OutClipMask);
431 if(!
PlanesAABBOverlap(node->mAABB.mCenter, node->mAABB.mExtents, OutClipMask, clip_mask))
return;
466 else _Collide(node->GetPos(), OutClipMask);
471 else _Collide(node->GetNeg(), OutClipMask);
533 if(!
Setup(&model))
return false;
536 if(
InitQuery(cache, planes, nb_planes, worldm))
return true;
557 udword PlaneMask = (1<<nb_planes)-1;
635 udword TriangleIndex = *T++;
646 udword TriangleIndex = BaseIndex++;