/// <summary> /// DetectAllCollisions /// </summary> /// <param name="bodies"></param> /// <param name="collisionFunctor"></param> /// <param name="collisionPredicate"></param> /// <param name="collTolerance"></param> public override void DetectAllCollisions(List <JigLibX.Physics.Body> bodies, CollisionFunctor collisionFunctor, CollisionSkinPredicate2 collisionPredicate, float collTolerance) { skinTester_.Set(this, collisionFunctor, collisionPredicate, collTolerance); MaybeSort(); // I know that each skin for the bodies is already in my list of skins. // Thus, I can do collision between all skins, culling out non-active bodies. int nSkins = skins_.Count; active_.Clear(); #if WINDOWS_PHONE for (int i = 0; i != nSkins; ++i) { AddToActive(skins_[i], skinTester_); } #else // BEN-OPTIMISATION: unsafe, remove array boundary checks. unsafe { for (int i = 0; i != nSkins; ++i) { AddToActive(skins_[i], skinTester_); } } #endif }
public override void DetectAllCollisions(List <JigLibX.Physics.Body> bodies, CollisionFunctor collisionFunctor, CollisionSkinPredicate2 collisionPredicate, float collTolerance) { skinTester_.Set(this, collisionFunctor, collisionPredicate, collTolerance); MaybeSort(); // I know that each skin for the bodies is already in my list of skins. // Thus, I can do collision between all skins, culling out non-active bodies. int nSkins = skins_.Count; active_.Clear(); // sweep the sorted list for potential overlaps for (int i = 0; i != nSkins; ++i) { AddToActive(skins_[i], skinTester_); } }
public override void DetectAllCollisions(List <Physics.Body> bodies, CollisionFunctor collisionFunctor, CollisionSkinPredicate2 collisionPredicate, float collTolerance) { skinTester_.Set(this, collisionFunctor, collisionPredicate, collTolerance); MaybeSort(); var nSkins = skins_.Count; active_.Clear(); unsafe { for (var i = 0; i != nSkins; ++i) { AddToActive(skins_[i], skinTester_); } } }