void UpdateSwarm() { List<Point> vectors = new List<Point>(); for (int i = 0; i < swarm.Count; i++) { Bug b = swarm[i]; Point v1 = b.FlyTowardsCenter().multiply(M1); Point v2 = b.KeepDistance().multiply(M2); Point v3 = b.MatchVelocity().multiply(M3); Point v4 = b.TendToPlace(locus).multiply(M4); vectors.Add(v1.add(v2.add(v3.add(v4))); } for (int i = 0; i < swarm.Count; i++) { swarm[i].velocity = swarm[i].velocity.add(vectors[i]); swarm[i].LimitVelocity(); } foreach (Bug b in swarm) { b.p = b.p.add(b.velocity); } }