@Override protected void update (Clock clock, Entities entities) { // simple O(n^2) collision check; no need for anything fancy here for (int ii = 0, ll = entities.size(); ii < ll; ii++) { int eid1 = entities.get(ii); Entity e1 = world.entity(eid1); if (e1.isDisposed()) continue; pos.get(eid1, _p1); float r1 = radius.get(eid1); for (int jj = ii+1; jj < ll; jj++) { int eid2 = entities.get(jj); Entity e2 = world.entity(eid2); if (e2.isDisposed()) continue; pos.get(eid2, _p2); float r2 = radius.get(eid2), dr = r2+r1; float dist2 = _p1.distanceSq(_p2); if (dist2 <= dr*dr) { collide(e1, e2); break; // don't collide e1 with any other entities } } } }