package { import com.actionsnippet.qbox.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class QuickContactFilter extends b2ContactFilter { private var indices:Array = []; private var callbacks:Array = []; public function addGroupIndexCallback(func:Function, index:int):void{ callbacks.push(func); indices.push(index); } override public function ShouldCollide(shape1:b2Shape, shape2:b2Shape):Boolean{ var filter1:b2FilterData = shape1.GetFilterData(); var filter2:b2FilterData = shape2.GetFilterData(); // only difference between default Box2D behavior for (var i:int = 0; i 0; } var collide:Boolean = (filter1.maskBits & filter2.categoryBits) != 0 && (filter1.categoryBits & filter2.maskBits) != 0; return collide; } } }