private CollisionDataNative GetCollisionData(b2Contact contact) { int colliderAId = contact.GetFixtureA().GetUserData().data; int colliderBId = contact.GetFixtureB().GetUserData().data; int physicsObjectAId = contact.GetFixtureA().GetBody().GetUserData().data; int physicsObjectBId = contact.GetFixtureB().GetBody().GetUserData().data; int childIndexA = contact.GetChildIndexA(); int childIndexB = contact.GetChildIndexB(); IPhysicsObject physicsObjectA = _Physics2D.GetPhysicsObject(physicsObjectAId); ICollider colliderA = physicsObjectA.GetCollider(colliderAId); IPhysicsObject physicsObjectB = _Physics2D.GetPhysicsObject(physicsObjectBId); ICollider colliderB = physicsObjectB.GetCollider(colliderBId); return(new CollisionDataNative(contact, physicsObjectA, colliderA, childIndexA, physicsObjectB, colliderB, childIndexB)); }