public WorldManifold getWorldManifold () { contact.getWorldManifold(worldManifold2); int numContactPoints = contact.getManifold().pointCount; worldManifold.numContactPoints = numContactPoints; worldManifold.normal.set(worldManifold2.normal.x, worldManifold2.normal.y); for (int i = 0; i < worldManifold.points.length; i++) { worldManifold.points[i] = new Vector2(worldManifold2.points[i].x, worldManifold2.points[i].y); } return worldManifold; }
public void preSolve(Contact contact, Manifold oldManifold) { Manifold manifold = contact.getManifold(); if (manifold.pointCount == 0) { return; } Fixture fixtureA = contact.getFixtureA(); Fixture fixtureB = contact.getFixtureB(); Collision.getPointStates(state1, state2, oldManifold, manifold); contact.getWorldManifold(worldManifold); for (int i = 0; i < manifold.pointCount && pointCount < MAX_CONTACT_POINTS; i++) { ContactPoint cp = points[pointCount]; cp.fixtureA = fixtureA; cp.fixtureB = fixtureB; cp.position.set(worldManifold.points[i]); cp.normal.set(worldManifold.normal); cp.state = state2[i]; cp.normalImpulse = manifold.points[i].normalImpulse; cp.tangentImpulse = manifold.points[i].tangentImpulse; cp.separation = worldManifold.separations[i]; ++pointCount; } } }
protected ContactListener createContactListener() { return new ContactListener() { public void beginContact(Contact contact) { Vector2[] contactPoints = contact.getWorldManifold().getPoints(); for(int i = 0; i < contactPoints.length; i++) { ... } ... } } }
public void beginContact(Contact c) { System.out.println("CONTACT"); WorldManifold worldmanifold; worldmanifold = c.getWorldManifold(); for(Vec2 point : worldmanifold.points){ System.out.println("Contact at : [" + point.x + ", " + point.y "]"); } }
public void preSolve(Contact contact, Manifold oldManifold) { Manifold manifold = contact.getManifold(); if (manifold.pointCount == 0) { return; } Fixture fixtureA = contact.getFixtureA(); Fixture fixtureB = contact.getFixtureB(); Collision.getPointStates(state1, state2, oldManifold, manifold); contact.getWorldManifold(worldManifold); for (int i = 0; i < manifold.pointCount && pointCount < MAX_CONTACT_POINTS; i++) { ContactPoint cp = points[pointCount]; cp.fixtureA = fixtureA; cp.fixtureB = fixtureB; cp.position.set(worldManifold.points[i]); cp.normal.set(worldManifold.normal); cp.state = state2[i]; cp.normalImpulse = manifold.points[i].normalImpulse; cp.tangentImpulse = manifold.points[i].tangentImpulse; ++pointCount; } }