private void Hint(bool perform) { Mesh hintMesh = new Mesh(loopDisplay1.Mesh); hintMesh.ConsiderIntersectCellInteractsAsSimple = true; hintMesh.ConsiderMultipleLoops = true; hintMesh.IterativeSolverDepth = 0; hintMesh.IterativeRecMaxDepth = 1; hintMesh.UseColoring = false; hintMesh.UseCellPairs = false; hintMesh.UseCellPairsTopLevel = false; hintMesh.UseEdgeRestricts = false; hintMesh.UseCellColoring = false; hintMesh.UseDerivedColoring = false; hintMesh.UseMerging = false; hintMesh.UseIntersectCellInteractsInSolver = true; List<IAction> changes = new List<IAction>(); hintMesh.PerformStart(changes); while (changes.Count == 0) { hintMesh.GetSomething(changes); if (hintMesh.IterativeSolverDepth > 10) break; hintMesh.IterativeSolverDepth = hintMesh.IterativeSolverDepth + 1; } if (changes.Count > 0) { if (perform) loopDisplay1.Perform(changes[0]); else loopDisplay1.Flash(changes[0]); } }