public DefaultWorldPool(int argSize, int argContainerSize) { vecs = new OrderedStack<Vec2>(argSize, argContainerSize) { protected Vec2 newInstance() { return new Vec2(); } }; vec3s = new OrderedStack<Vec3>(argSize, argContainerSize) { protected Vec3 newInstance() { return new Vec3(); } }; mats = new OrderedStack<Mat22>(argSize, argContainerSize) { protected Mat22 newInstance() { return new Mat22(); } }; aabbs = new OrderedStack<AABB>(argSize, argContainerSize) { protected AABB newInstance() { return new AABB(); } }; rots = new OrderedStack<Rot>(argSize, argContainerSize) { protected Rot newInstance() { return new Rot(); } }; mat33s = new OrderedStack<Mat33>(argSize, argContainerSize) { protected Mat33 newInstance() { return new Mat33(); } }; dist = new Distance(); collision = new Collision(this); toi = new TimeOfImpact(this); }
float totalRadius = polyA.m_radius + polyB.m_radius; findMaxSeparation(results1, polyA, xfA, polyB, xfB); if (results1.separation > totalRadius) { return; findMaxSeparation(results2, polyB, xfB, polyA, xfA); if (results2.separation > totalRadius) { return; findIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); np = clipSegmentToLine(clipPoints1, incidentEdge, tangent, sideOffset1, iv1); tangent.negateLocal(); np = clipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2);
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collideCircles(manifold, (CircleShape) m_fixtureA.getShape(), xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
Shape shapeA = m_fixtureA.getShape(); Shape shapeB = m_fixtureB.getShape(); touching = pool.getCollision().testOverlap(shapeA, m_indexA, shapeB, m_indexB, xfA, xfB);
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collideEdgeAndPolygon(manifold, (EdgeShape) m_fixtureA.getShape(), xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collideEdgeAndCircle(manifold, (EdgeShape) m_fixtureA.getShape(), xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collidePolygons(manifold, (PolygonShape) m_fixtureA.getShape(), xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collidePolygonAndCircle(manifold, (PolygonShape) m_fixtureA.getShape(), xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
np = clipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1); np = clipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2);
public boolean reportFixture(Fixture fixture) { if (m_count == e_maxCount) { return false; } Body body = fixture.getBody(); Shape shape = fixture.getShape(); boolean overlap = p.getCollision().testOverlap(shape, 0, m_circle, 0, body.getTransform(), m_transform); if (overlap) { DrawFixture(fixture); ++m_count; } return true; } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { ChainShape chain = (ChainShape) m_fixtureA.getShape(); chain.getChildEdge(edge, m_indexA); pool.getCollision().collideEdgeAndPolygon(manifold, edge, xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { ChainShape chain = (ChainShape) m_fixtureA.getShape(); chain.getChildEdge(edge, m_indexA); pool.getCollision().collideEdgeAndCircle(manifold, edge, xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collidePolygons(manifold, (PolygonShape) m_fixtureA.getShape(), xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collidePolygonAndCircle(manifold, (PolygonShape) m_fixtureA.getShape(), xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
np = clipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1); np = clipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2);
float totalRadius = polyA.m_radius + polyB.m_radius; findMaxSeparation(results1, polyA, xfA, polyB, xfB); if (results1.separation > totalRadius) { return; findMaxSeparation(results2, polyB, xfB, polyA, xfA); if (results2.separation > totalRadius) { return; findIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); np = clipSegmentToLine(clipPoints1, incidentEdge, tangent, sideOffset1, iv1); tangent.negateLocal(); np = clipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2);
Shape shapeA = m_fixtureA.getShape(); Shape shapeB = m_fixtureB.getShape(); touching = pool.getCollision().testOverlap(shapeA, m_indexA, shapeB, m_indexB, xfA, xfB);
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collideEdgeAndPolygon(manifold, (EdgeShape) m_fixtureA.getShape(), xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collideEdgeAndCircle(manifold, (EdgeShape) m_fixtureA.getShape(), xfA, (CircleShape) m_fixtureB.getShape(), xfB); } }
@Override public void evaluate(Manifold manifold, Transform xfA, Transform xfB) { pool.getCollision().collidePolygons(manifold, (PolygonShape) m_fixtureA.getShape(), xfA, (PolygonShape) m_fixtureB.getShape(), xfB); } }