Files
Dec2017-Script-Dump/Poly2Tri/AdvancingFront.cs
T
2026-06-04 11:42:34 +02:00

136 lines
3.3 KiB
C#

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;
}
}