Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public void preSolve(Contact contact, Manifold oldManifold) {
- //NOTE: This isn't called for SENSOR bodies
- checkGenericContact(contact.getFixtureA(), contact.getFixtureB(), contact);
- checkGenericContact(contact.getFixtureB(), contact.getFixtureA(), contact);
- }
- public void checkGenericContact(Fixture mainFixture, Fixture secondaryFixture, Contact contact){
- short secondaryCategory = secondaryFixture.getFilterData().categoryBits;
- if(mainFixture.getBody().getUserData() != null){
- if(secondaryFixture.getBody().getUserData() != null){
- //Both have userdata
- if(mainFixture.getBody().getUserData() instanceof Character){
- Character characterA = (Character) mainFixture.getBody().getUserData();
- if(secondaryFixture.getBody().getUserData() instanceof Character){
- Character characterB = (Character) secondaryFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && characterA.collidedWithCharacter(characterB, secondaryCategory, contact));
- } else if(secondaryFixture.getBody().getUserData() instanceof PhysicsEntity){
- PhysicsEntity entityB = (PhysicsEntity) secondaryFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && characterA.collidedWithEntity(entityB, secondaryCategory, contact));
- }
- } else if(mainFixture.getBody().getUserData() instanceof PhysicsEntity){
- PhysicsEntity entityA = (PhysicsEntity) mainFixture.getBody().getUserData();
- if(secondaryFixture.getBody().getUserData() instanceof Character){
- Character characterB = (Character) secondaryFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && entityA.collidedWithCharacter(characterB, secondaryCategory, contact));
- } else if(secondaryFixture.getBody().getUserData() instanceof PhysicsEntity){
- PhysicsEntity entityB = (PhysicsEntity) secondaryFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && entityA.collidedWithEntity(entityB, secondaryCategory, contact));
- }
- }
- } else {
- //Only fixtureA has userdata
- if(mainFixture.getBody().getUserData() instanceof PhysicsEntity){
- PhysicsEntity entityA = (PhysicsEntity) mainFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && entityA.collidedWithNoUserData(secondaryCategory, contact));
- } else if(mainFixture.getBody().getUserData() instanceof Character){
- Character characterA = (Character) mainFixture.getBody().getUserData();
- contact.setEnabled(contact.isEnabled() && characterA.collidedWithNoUserData(secondaryCategory, contact));
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement