public static bool shouldCollide(Fixture fixtureA, Fixture fixtureB) { if (Settings.useFPECollisionCategories) { if ((fixtureA.collisionGroup == fixtureB.collisionGroup) && fixtureA.collisionGroup != 0 && fixtureB.collisionGroup != 0) { return(false); } if (((fixtureA.collisionCategories & fixtureB.collidesWith) == Category.None) & ((fixtureB.collisionCategories & fixtureA.collidesWith) == Category.None)) { return(false); } if (fixtureA.isFixtureIgnored(fixtureB) || fixtureB.isFixtureIgnored(fixtureA)) { return(false); } return(true); } if (fixtureA.collisionGroup == fixtureB.collisionGroup && fixtureA.collisionGroup != 0) { return(fixtureA.collisionGroup > 0); } bool collide = (fixtureA.collidesWith & fixtureB.collisionCategories) != 0 && (fixtureA.collisionCategories & fixtureB.collidesWith) != 0; if (collide) { if (fixtureA.isFixtureIgnored(fixtureB) || fixtureB.isFixtureIgnored(fixtureA)) { return(false); } } return(collide); }
public static bool shouldCollide( Fixture fixtureA, Fixture fixtureB ) { if( Settings.useFPECollisionCategories ) { if( ( fixtureA.collisionGroup == fixtureB.collisionGroup ) && fixtureA.collisionGroup != 0 && fixtureB.collisionGroup != 0 ) return false; if( ( ( fixtureA.collisionCategories & fixtureB.collidesWith ) == Category.None ) & ( ( fixtureB.collisionCategories & fixtureA.collidesWith ) == Category.None ) ) return false; if( fixtureA.isFixtureIgnored( fixtureB ) || fixtureB.isFixtureIgnored( fixtureA ) ) return false; return true; } if( fixtureA.collisionGroup == fixtureB.collisionGroup && fixtureA.collisionGroup != 0 ) return fixtureA.collisionGroup > 0; bool collide = ( fixtureA.collidesWith & fixtureB.collisionCategories ) != 0 && ( fixtureA.collisionCategories & fixtureB.collidesWith ) != 0; if( collide ) { if( fixtureA.isFixtureIgnored( fixtureB ) || fixtureB.isFixtureIgnored( fixtureA ) ) return false; } return collide; }