/** * For internal use only callback for collisionevent * * @param event */ public void collision(PhysicsCollisionEvent event) { PhysicsCollisionObject objA = event.getObjectA(); PhysicsCollisionObject objB = event.getObjectB(); // excluding collisions that involve 2 parts of the ragdoll if (event.getNodeA() == null && event.getNodeB() == null) { return; } // discarding low impulse collision if (event.getAppliedImpulse() < eventDispatchImpulseThreshold) { return; } boolean hit = false; Bone hitBone = null; PhysicsCollisionObject hitObject = null; // Computing which bone has been hit if (objA.getUserObject() instanceof PhysicsBoneLink) { PhysicsBoneLink link = (PhysicsBoneLink) objA.getUserObject(); if (link != null) { hit = true; hitBone = link.bone; hitObject = objB; } } if (objB.getUserObject() instanceof PhysicsBoneLink) { PhysicsBoneLink link = (PhysicsBoneLink) objB.getUserObject(); if (link != null) { hit = true; hitBone = link.bone; hitObject = objA; } } // dispatching the event if the ragdoll has been hit if (hit && listeners != null) { for (RagdollCollisionListener listener : listeners) { listener.collide(hitBone, hitObject, event); } } }