@Override protected void process(int entityId) { // float scale = this.scale * swarmSize; Pos pos = mPos.get(entityId); Swarmer swarmer = mSwarmer.get(entityId); // swarmer.age += world.delta; swarmer.angle -= world.delta * swarmer.angularSpeed / (scale * 10); if (swarmer.angle >= 360) swarmer.angle -= 360; if (swarmer.angle < 0) swarmer.angle += 360; if (pos.xy.dst2(sPos) <= sRadius2) { for (int i = 0; i < size; i++) { int eid = data[i]; Bounds eb = mCircleBounds.get(eid); if (eb.b.contains(pos.xy)) { pos.set(eb.b.x, eb.b.y); pos.xy.add( MathUtils.randomTriangular(-eb.radius, eb.radius, 0), MathUtils.randomTriangular(-eb.radius, eb.radius, 0)); return; } } } pos.xy.set(1, 0).setAngle(swarmer.angle).scl(swarmer.dst * dstScale).add(cs.xy); Tint tint = mTint.get(entityId); tint.set(1, 1 - (swarmer.clamp * scale), (swarmer.clamp * scale) / 5, 1); }