internal void Mutate(JobInfo info) { IsDirty = false; while (!IsDirty) { if (!info.Settings.MuteAddPolygonNew) { if (info.WillMutate(info.Settings.AddPolygonMutationRate)) { AddPolygon(info); } } if (!info.Settings.MuteAddPolygonClone) { if (info.WillMutate(info.Settings.AddPolygonCloneMutationRate)) { AddPolygonClone(info); } } if (!info.Settings.MuteRemovePolygon) { if (info.WillMutate(info.Settings.RemovePolygonMutationRate)) { RemovePolygon(info); } } if (!info.Settings.MuteMovePolygon) { if (info.WillMutate(info.Settings.MovePolygonMutationRate)) { MovePolygon(info); } } unchecked { for (int i = 0; i < Polygons.Count; i++) { DnaPolygon polygon = Polygons[i]; polygon.Mutate(this, info); } } } }