public bool Perform() { successful = true; // mesh.ConsiderIntersectCellInteractsAsSimple = useICInAuto; mesh.ConsiderMultipleLoops = considerMultipleLoopsInAuto; mesh.UseColoring = useColoringInAuto; mesh.UseCellColoring = useCellColoringInAuto; // TODO: add settings for use derived/merge in auto. mesh.UseDerivedColoring = false; mesh.UseMerging = false; mesh.ColoringCheats = false; Edge closest = mesh.Edges[edgeIndex]; EdgeState toggled = Toggle(closest.State, buttons); actionsPerformed = new List <IAction>(); if (closest.State != EdgeState.Empty) { IAction unsetAction = new UnsetAction(mesh, edgeIndex); bool res = unsetAction.Perform(); if ((!res || !unsetAction.Successful) && disallowFalseMove) { if (res && !unsetAction.Successful) { actionsPerformed.Add(unsetAction); } Unperform(); return(false); } else if (!res || !unsetAction.Successful) { successful = false; } actionsPerformed.Add(unsetAction); } if (toggled != EdgeState.Empty) { bool res = mesh.Perform(edgeIndex, toggled, actionsPerformed, autoMove); if (!res && disallowFalseMove) { Unperform(); return(false); } else if (!res) { successful = false; } } return(true); }
public bool Perform() { successful = true; mesh.ConsiderIntersectCellInteractsAsSimple = useICInAuto; mesh.ConsiderMultipleLoops = considerMultipleLoopsInAuto; mesh.UseColoring = useColoringInAuto; mesh.UseCellPairs = useCellPairsInAuto; mesh.UseEdgeRestricts = useEdgeRestrictsInAuto; mesh.UseCellColoring = useCellColoringInAuto; // TODO: add settings for use derived/merge in auto. mesh.UseDerivedColoring = false; mesh.UseMerging = false; mesh.ColoringCheats = false; mesh.UseCellPairsTopLevel = false; Edge closest = mesh.Edges[edgeIndex]; EdgeState toggled = Toggle(closest.State, buttons); actionsPerformed = new List<IAction>(); if (closest.State != EdgeState.Empty) { IAction unsetAction = new UnsetAction(mesh, edgeIndex); bool res = unsetAction.Perform(); if ((!res || !unsetAction.Successful) && disallowFalseMove) { if (res && !unsetAction.Successful) actionsPerformed.Add(unsetAction); Unperform(); return false; } else if (!res || !unsetAction.Successful) successful = false; actionsPerformed.Add(unsetAction); } if (toggled != EdgeState.Empty) { bool res = mesh.Perform(edgeIndex, toggled, actionsPerformed, autoMove); if (!res && disallowFalseMove) { Unperform(); return false; } else if (!res) successful = false; } return true; }