public bool IsBorderTrixelFace(TrixelEmplacement id, FaceOrientation face) { return(this.IsBorderTrixelFace(id.GetTraversal(face))); }
public bool IsBorderTrixelFace(TrixelEmplacement id, FaceOrientation face) { return this.IsBorderTrixelFace(id.GetTraversal(face)); }
private HashSet <TrixelEmplacement> TraverseSurface(TrixelEmplacement origin, ICollection <TrixelEmplacement> subSurface) { HashSet <TrixelEmplacement> hashSet = new HashSet <TrixelEmplacement>() { origin }; Queue <TrixelSurface.TrixelToTraverse> queue = new Queue <TrixelSurface.TrixelToTraverse>(); queue.Enqueue(new TrixelSurface.TrixelToTraverse() { Trixel = origin }); while (queue.Count != 0) { TrixelSurface.TrixelToTraverse toTraverse = queue.Dequeue(); TrixelEmplacement trixelEmplacement = toTraverse.Trixel; using (IEnumerator <FaceOrientation> enumerator = Enumerable.Where <FaceOrientation>((IEnumerable <FaceOrientation>) this.tangentFaces, (Func <FaceOrientation, bool>)(x => { if (toTraverse.Except.HasValue) { return(toTraverse.Except.Value != x); } else { return(true); } })).GetEnumerator()) { label_8: while (enumerator.MoveNext()) { FaceOrientation current = enumerator.Current; TrixelEmplacement traversal = trixelEmplacement.GetTraversal(current); while (true) { if (!hashSet.Contains(traversal) && subSurface.Contains(traversal)) { hashSet.Add(traversal); if (hashSet.Count != subSurface.Count) { queue.Enqueue(new TrixelSurface.TrixelToTraverse() { Trixel = traversal, Except = new FaceOrientation?(current) }); traversal = traversal.GetTraversal(current); } else { break; } } else { goto label_8; } } return(hashSet); } } } return(hashSet); }