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);
}
}
}
}