public void method_0() { for (double?nullable = this.class28_0.method_4(); nullable.HasValue; nullable = this.class28_0.method_4()) { this.double_1 = nullable.Value; bool flag = false; while (this.class103_0 != null && this.class103_0.point2D_0.Y == this.double_1) { VattiClipper2DV3.Class100 edge1 = new VattiClipper2DV3.Class100((VattiClipper2DV3.Class102) this.class103_0, this.class103_0.class102_0); edge1.double_2 = edge1.point2D_0.X; VattiClipper2DV3.Class100 edge2 = new VattiClipper2DV3.Class100((VattiClipper2DV3.Class102) this.class103_0, this.class103_0.class102_1); int index = this.list_1.BinarySearch(edge1, (IComparer <VattiClipper2DV3.Class100>)VattiClipper2DV3.Class100.Class101.class101_0); if (index < 0) { index = ~index; } this.list_1.Insert(index, edge1); this.list_1.Insert(index + 1, edge2); this.method_1(edge1); this.method_1(edge2); this.class103_0 = this.class103_0.class103_0; flag = true; } if (flag && this.class103_0 != null) { this.class28_0.TryAdd(this.class103_0.point2D_0.Y); } this.list_3.Clear(); this.double_0 = double.NegativeInfinity; for (this.int_0 = 0; this.int_0 < this.list_1.Count; ++this.int_0) { VattiClipper2DV3.Class100 edge = this.list_1[this.int_0]; if (edge.double_2 != this.double_0 && !double.IsNegativeInfinity(this.double_0)) { this.method_3(); } this.double_0 = edge.double_2; if (edge.point2D_0.Y == this.double_1) { this.method_2(edge); } else if (edge.point2D_1.Y == this.double_1) { if (edge.class102_1.class102_0 != null) { this.method_2(new VattiClipper2DV3.Class100(edge.class102_1, edge.class102_1.class102_0)); } } else { this.method_5(edge); } } this.method_3(); List <VattiClipper2DV3.Class100> list1 = this.list_1; this.list_1 = this.list_3; this.list_3 = list1; } }
private void method_2(VattiClipper2DV3.Class100 edge) { if (edge.IsHorizontal) { this.list_2.Add(edge); } else { edge.method_0(); edge.double_2 = edge.point2D_0.X; this.method_5(edge); this.class28_0.TryAdd(edge.point2D_1.Y); } }
private void method_1(VattiClipper2DV3.Class100 edge) { while (edge.IsHorizontal && edge.class102_1.class102_0 != null) { edge = new VattiClipper2DV3.Class100(edge.class102_1, edge.class102_1.class102_0); edge.double_2 = edge.point2D_0.X; int index = this.list_1.BinarySearch(edge, (IComparer <VattiClipper2DV3.Class100>)VattiClipper2DV3.Class100.Class101.class101_0); if (index < 0) { index = ~index; } this.list_1.Insert(index, edge); } }
internal void method_5(VattiClipper2DV3.Class100 edge) { bool flag = false; for (int index = this.list_3.Count - 1; index >= 0; --index) { if (edge.double_2 >= this.list_3[index].double_2) { this.list_3.Insert(index + 1, edge); flag = true; break; } } if (flag) { return; } this.list_3.Insert(0, edge); }