Refactor entity.PhysicsBody to physics.PhysicsBody
Create CollisionListener interface and Box2dContactListener Register the Box2dContactListener with the box2d world
This commit is contained in:
@ -0,0 +1,53 @@
|
||||
package com.me.brickbuster.physics;
|
||||
|
||||
import com.badlogic.gdx.physics.box2d.Contact;
|
||||
import com.badlogic.gdx.physics.box2d.ContactImpulse;
|
||||
import com.badlogic.gdx.physics.box2d.ContactListener;
|
||||
import com.badlogic.gdx.physics.box2d.Manifold;
|
||||
import com.me.brickbuster.entity.Entity;
|
||||
|
||||
public class Box2dContactListener implements ContactListener {
|
||||
|
||||
@Override
|
||||
public void beginContact(Contact contact) {
|
||||
Object userDataA = contact.getFixtureA().getBody().getUserData();
|
||||
Object userDataB = contact.getFixtureB().getBody().getUserData();
|
||||
|
||||
if (userDataA == null || userDataB == null ||
|
||||
!(userDataA instanceof Entity) || !(userDataB instanceof Entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (userDataA instanceof CollisionListener) {
|
||||
((CollisionListener) userDataA).beginContact((Entity) userDataB);
|
||||
}
|
||||
if (userDataB instanceof CollisionListener) {
|
||||
((CollisionListener) userDataB).beginContact((Entity) userDataA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endContact(Contact contact) {
|
||||
Object userDataA = contact.getFixtureA().getBody().getUserData();
|
||||
Object userDataB = contact.getFixtureB().getBody().getUserData();
|
||||
|
||||
if (userDataA == null || userDataB == null ||
|
||||
!(userDataA instanceof Entity) || !(userDataB instanceof Entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (userDataA instanceof CollisionListener) {
|
||||
((CollisionListener) userDataA).endContact((Entity) userDataB);
|
||||
}
|
||||
if (userDataB instanceof CollisionListener) {
|
||||
((CollisionListener) userDataB).endContact((Entity) userDataA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void preSolve(Contact contact, Manifold oldManifold) {}
|
||||
|
||||
@Override
|
||||
public void postSolve(Contact contact, ContactImpulse impulse) {}
|
||||
|
||||
}
|
11
core/src/com/me/brickbuster/physics/CollisionListener.java
Normal file
11
core/src/com/me/brickbuster/physics/CollisionListener.java
Normal file
@ -0,0 +1,11 @@
|
||||
package com.me.brickbuster.physics;
|
||||
|
||||
import com.me.brickbuster.entity.Entity;
|
||||
|
||||
public interface CollisionListener {
|
||||
|
||||
void beginContact(Entity contacted);
|
||||
|
||||
void endContact(Entity contacted);
|
||||
|
||||
}
|
9
core/src/com/me/brickbuster/physics/PhysicsBody.java
Normal file
9
core/src/com/me/brickbuster/physics/PhysicsBody.java
Normal file
@ -0,0 +1,9 @@
|
||||
package com.me.brickbuster.physics;
|
||||
|
||||
import com.badlogic.gdx.physics.box2d.Body;
|
||||
|
||||
public interface PhysicsBody {
|
||||
|
||||
Body getBody();
|
||||
|
||||
}
|
Reference in New Issue
Block a user