Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1.  
  2.  
  3. @Override
  4. public void preSolve(Contact contact, Manifold oldManifold) {
  5. //NOTE: This isn't called for SENSOR bodies
  6. checkGenericContact(contact.getFixtureA(), contact.getFixtureB(), contact);
  7. checkGenericContact(contact.getFixtureB(), contact.getFixtureA(), contact);
  8. }
  9.  
  10.  
  11.  
  12.  
  13.  
  14. public void checkGenericContact(Fixture mainFixture, Fixture secondaryFixture, Contact contact){
  15.  
  16. short secondaryCategory = secondaryFixture.getFilterData().categoryBits;
  17.  
  18. if(mainFixture.getBody().getUserData() != null){
  19. if(secondaryFixture.getBody().getUserData() != null){
  20. //Both have userdata
  21. if(mainFixture.getBody().getUserData() instanceof Character){
  22. Character characterA = (Character) mainFixture.getBody().getUserData();
  23. if(secondaryFixture.getBody().getUserData() instanceof Character){
  24. Character characterB = (Character) secondaryFixture.getBody().getUserData();
  25. contact.setEnabled(contact.isEnabled() && characterA.collidedWithCharacter(characterB, secondaryCategory, contact));
  26. } else if(secondaryFixture.getBody().getUserData() instanceof PhysicsEntity){
  27. PhysicsEntity entityB = (PhysicsEntity) secondaryFixture.getBody().getUserData();
  28. contact.setEnabled(contact.isEnabled() && characterA.collidedWithEntity(entityB, secondaryCategory, contact));
  29. }
  30. } else if(mainFixture.getBody().getUserData() instanceof PhysicsEntity){
  31.  
  32. PhysicsEntity entityA = (PhysicsEntity) mainFixture.getBody().getUserData();
  33. if(secondaryFixture.getBody().getUserData() instanceof Character){
  34. Character characterB = (Character) secondaryFixture.getBody().getUserData();
  35. contact.setEnabled(contact.isEnabled() && entityA.collidedWithCharacter(characterB, secondaryCategory, contact));
  36. } else if(secondaryFixture.getBody().getUserData() instanceof PhysicsEntity){
  37. PhysicsEntity entityB = (PhysicsEntity) secondaryFixture.getBody().getUserData();
  38. contact.setEnabled(contact.isEnabled() && entityA.collidedWithEntity(entityB, secondaryCategory, contact));
  39. }
  40. }
  41.  
  42. } else {
  43. //Only fixtureA has userdata
  44. if(mainFixture.getBody().getUserData() instanceof PhysicsEntity){
  45. PhysicsEntity entityA = (PhysicsEntity) mainFixture.getBody().getUserData();
  46. contact.setEnabled(contact.isEnabled() && entityA.collidedWithNoUserData(secondaryCategory, contact));
  47. } else if(mainFixture.getBody().getUserData() instanceof Character){
  48. Character characterA = (Character) mainFixture.getBody().getUserData();
  49. contact.setEnabled(contact.isEnabled() && characterA.collidedWithNoUserData(secondaryCategory, contact));
  50. }
  51. }
  52. }
  53.  
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement