using System; using System.Text; namespace Poly2Tri { // Token: 0x02000007 RID: 7 public class AdvancingFront { // Token: 0x0600004D RID: 77 RVA: 0x00002CD8 File Offset: 0x00000ED8 public AdvancingFront(AdvancingFrontNode head, AdvancingFrontNode tail) { this.Head = head; this.Tail = tail; this.Search = head; this.AddNode(head); this.AddNode(tail); } // Token: 0x0600004E RID: 78 RVA: 0x00002101 File Offset: 0x00000301 public void AddNode(AdvancingFrontNode node) { } // Token: 0x0600004F RID: 79 RVA: 0x00002101 File Offset: 0x00000301 public void RemoveNode(AdvancingFrontNode node) { } // Token: 0x06000050 RID: 80 RVA: 0x00002D04 File Offset: 0x00000F04 public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); for (AdvancingFrontNode advancingFrontNode = this.Head; advancingFrontNode != this.Tail; advancingFrontNode = advancingFrontNode.Next) { stringBuilder.Append(advancingFrontNode.Point.X).Append("->"); } stringBuilder.Append(this.Tail.Point.X); return stringBuilder.ToString(); } // Token: 0x06000051 RID: 81 RVA: 0x00002D69 File Offset: 0x00000F69 private AdvancingFrontNode FindSearchNode(double x) { return this.Search; } // Token: 0x06000052 RID: 82 RVA: 0x00002D71 File Offset: 0x00000F71 public AdvancingFrontNode LocateNode(TriangulationPoint point) { return this.LocateNode(point.X); } // Token: 0x06000053 RID: 83 RVA: 0x00002D80 File Offset: 0x00000F80 private AdvancingFrontNode LocateNode(double x) { AdvancingFrontNode advancingFrontNode = this.FindSearchNode(x); if (x < advancingFrontNode.Value) { while ((advancingFrontNode = advancingFrontNode.Prev) != null) { if (x >= advancingFrontNode.Value) { this.Search = advancingFrontNode; return advancingFrontNode; } } } else { while ((advancingFrontNode = advancingFrontNode.Next) != null) { if (x < advancingFrontNode.Value) { this.Search = advancingFrontNode.Prev; return advancingFrontNode.Prev; } } } return null; } // Token: 0x06000054 RID: 84 RVA: 0x00002DE8 File Offset: 0x00000FE8 public AdvancingFrontNode LocatePoint(TriangulationPoint point) { double x = point.X; AdvancingFrontNode advancingFrontNode = this.FindSearchNode(x); double x2 = advancingFrontNode.Point.X; if (x == x2) { if (point != advancingFrontNode.Point) { if (point == advancingFrontNode.Prev.Point) { advancingFrontNode = advancingFrontNode.Prev; } else { if (point != advancingFrontNode.Next.Point) { throw new Exception("Failed to find Node for given afront point"); } advancingFrontNode = advancingFrontNode.Next; } } } else if (x < x2) { while ((advancingFrontNode = advancingFrontNode.Prev) != null) { if (point == advancingFrontNode.Point) { break; } } } else { while ((advancingFrontNode = advancingFrontNode.Next) != null && point != advancingFrontNode.Point) { } } this.Search = advancingFrontNode; return advancingFrontNode; } // Token: 0x0400000F RID: 15 public AdvancingFrontNode Head; // Token: 0x04000010 RID: 16 public AdvancingFrontNode Tail; // Token: 0x04000011 RID: 17 protected AdvancingFrontNode Search; } }