367 lines
7.9 KiB
C#
367 lines
7.9 KiB
C#
using System;
|
|
using TriangleNet.Geometry;
|
|
using TriangleNet.Log;
|
|
|
|
namespace TriangleNet
|
|
{
|
|
// Token: 0x02000003 RID: 3
|
|
public class Behavior
|
|
{
|
|
// Token: 0x06000007 RID: 7 RVA: 0x000022B0 File Offset: 0x000004B0
|
|
public Behavior(bool quality, double minAngle)
|
|
{
|
|
if (quality)
|
|
{
|
|
this.quality = true;
|
|
this.minAngle = minAngle;
|
|
this.Update();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000008 RID: 8 RVA: 0x000022FE File Offset: 0x000004FE
|
|
public Behavior()
|
|
: this(false, 20.0)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000009 RID: 9 RVA: 0x00002310 File Offset: 0x00000510
|
|
private void Update()
|
|
{
|
|
this.quality = true;
|
|
if (this.minAngle < 0.0 || this.minAngle > 60.0)
|
|
{
|
|
this.minAngle = 0.0;
|
|
this.quality = false;
|
|
SimpleLog.Instance.Warning("Invalid quality option (minimum angle).", "Mesh.Behavior");
|
|
}
|
|
if ((this.maxAngle != 0.0 && this.maxAngle < 90.0) || this.maxAngle > 180.0)
|
|
{
|
|
this.maxAngle = 0.0;
|
|
this.quality = false;
|
|
SimpleLog.Instance.Warning("Invalid quality option (maximum angle).", "Mesh.Behavior");
|
|
}
|
|
this.useSegments = this.Poly || this.Quality || this.Convex;
|
|
this.goodAngle = Math.Cos(this.MinAngle * 3.141592653589793 / 180.0);
|
|
this.maxGoodAngle = Math.Cos(this.MaxAngle * 3.141592653589793 / 180.0);
|
|
if (this.goodAngle == 1.0)
|
|
{
|
|
this.offconstant = 0.0;
|
|
}
|
|
else
|
|
{
|
|
this.offconstant = 0.475 * Math.Sqrt((1.0 + this.goodAngle) / (1.0 - this.goodAngle));
|
|
}
|
|
this.goodAngle *= this.goodAngle;
|
|
}
|
|
|
|
// Token: 0x17000002 RID: 2
|
|
// (get) Token: 0x0600000A RID: 10 RVA: 0x000024A1 File Offset: 0x000006A1
|
|
// (set) Token: 0x0600000B RID: 11 RVA: 0x000024A8 File Offset: 0x000006A8
|
|
public static bool NoExact { get; set; }
|
|
|
|
// Token: 0x17000003 RID: 3
|
|
// (get) Token: 0x0600000C RID: 12 RVA: 0x000024B0 File Offset: 0x000006B0
|
|
// (set) Token: 0x0600000D RID: 13 RVA: 0x000024B7 File Offset: 0x000006B7
|
|
public static bool Verbose { get; set; }
|
|
|
|
// Token: 0x17000004 RID: 4
|
|
// (get) Token: 0x0600000E RID: 14 RVA: 0x000024BF File Offset: 0x000006BF
|
|
// (set) Token: 0x0600000F RID: 15 RVA: 0x000024C7 File Offset: 0x000006C7
|
|
public bool Quality
|
|
{
|
|
get
|
|
{
|
|
return this.quality;
|
|
}
|
|
set
|
|
{
|
|
this.quality = value;
|
|
if (this.quality)
|
|
{
|
|
this.Update();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000005 RID: 5
|
|
// (get) Token: 0x06000010 RID: 16 RVA: 0x000024DE File Offset: 0x000006DE
|
|
// (set) Token: 0x06000011 RID: 17 RVA: 0x000024E6 File Offset: 0x000006E6
|
|
public double MinAngle
|
|
{
|
|
get
|
|
{
|
|
return this.minAngle;
|
|
}
|
|
set
|
|
{
|
|
this.minAngle = value;
|
|
this.Update();
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000006 RID: 6
|
|
// (get) Token: 0x06000012 RID: 18 RVA: 0x000024F5 File Offset: 0x000006F5
|
|
// (set) Token: 0x06000013 RID: 19 RVA: 0x000024FD File Offset: 0x000006FD
|
|
public double MaxAngle
|
|
{
|
|
get
|
|
{
|
|
return this.maxAngle;
|
|
}
|
|
set
|
|
{
|
|
this.maxAngle = value;
|
|
this.Update();
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000007 RID: 7
|
|
// (get) Token: 0x06000014 RID: 20 RVA: 0x0000250C File Offset: 0x0000070C
|
|
// (set) Token: 0x06000015 RID: 21 RVA: 0x00002514 File Offset: 0x00000714
|
|
public double MaxArea
|
|
{
|
|
get
|
|
{
|
|
return this.maxArea;
|
|
}
|
|
set
|
|
{
|
|
this.maxArea = value;
|
|
this.fixedArea = value > 0.0;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000008 RID: 8
|
|
// (get) Token: 0x06000016 RID: 22 RVA: 0x0000252F File Offset: 0x0000072F
|
|
// (set) Token: 0x06000017 RID: 23 RVA: 0x00002537 File Offset: 0x00000737
|
|
public bool VarArea
|
|
{
|
|
get
|
|
{
|
|
return this.varArea;
|
|
}
|
|
set
|
|
{
|
|
this.varArea = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000009 RID: 9
|
|
// (get) Token: 0x06000018 RID: 24 RVA: 0x00002540 File Offset: 0x00000740
|
|
// (set) Token: 0x06000019 RID: 25 RVA: 0x00002548 File Offset: 0x00000748
|
|
public bool Poly
|
|
{
|
|
get
|
|
{
|
|
return this.poly;
|
|
}
|
|
set
|
|
{
|
|
this.poly = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000A RID: 10
|
|
// (get) Token: 0x0600001A RID: 26 RVA: 0x00002551 File Offset: 0x00000751
|
|
// (set) Token: 0x0600001B RID: 27 RVA: 0x00002559 File Offset: 0x00000759
|
|
public Func<ITriangle, double, bool> UserTest
|
|
{
|
|
get
|
|
{
|
|
return this.usertest;
|
|
}
|
|
set
|
|
{
|
|
this.usertest = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000B RID: 11
|
|
// (get) Token: 0x0600001C RID: 28 RVA: 0x00002562 File Offset: 0x00000762
|
|
// (set) Token: 0x0600001D RID: 29 RVA: 0x0000256A File Offset: 0x0000076A
|
|
public bool Convex
|
|
{
|
|
get
|
|
{
|
|
return this.convex;
|
|
}
|
|
set
|
|
{
|
|
this.convex = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000C RID: 12
|
|
// (get) Token: 0x0600001E RID: 30 RVA: 0x00002573 File Offset: 0x00000773
|
|
// (set) Token: 0x0600001F RID: 31 RVA: 0x0000257B File Offset: 0x0000077B
|
|
public bool ConformingDelaunay
|
|
{
|
|
get
|
|
{
|
|
return this.conformDel;
|
|
}
|
|
set
|
|
{
|
|
this.conformDel = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000D RID: 13
|
|
// (get) Token: 0x06000020 RID: 32 RVA: 0x00002584 File Offset: 0x00000784
|
|
// (set) Token: 0x06000021 RID: 33 RVA: 0x0000258C File Offset: 0x0000078C
|
|
public TriangulationAlgorithm Algorithm
|
|
{
|
|
get
|
|
{
|
|
return this.algorithm;
|
|
}
|
|
set
|
|
{
|
|
this.algorithm = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000E RID: 14
|
|
// (get) Token: 0x06000022 RID: 34 RVA: 0x00002595 File Offset: 0x00000795
|
|
// (set) Token: 0x06000023 RID: 35 RVA: 0x0000259D File Offset: 0x0000079D
|
|
public int NoBisect
|
|
{
|
|
get
|
|
{
|
|
return this.noBisect;
|
|
}
|
|
set
|
|
{
|
|
this.noBisect = value;
|
|
if (this.noBisect < 0 || this.noBisect > 2)
|
|
{
|
|
this.noBisect = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700000F RID: 15
|
|
// (get) Token: 0x06000024 RID: 36 RVA: 0x000025BF File Offset: 0x000007BF
|
|
// (set) Token: 0x06000025 RID: 37 RVA: 0x000025C7 File Offset: 0x000007C7
|
|
public int SteinerPoints
|
|
{
|
|
get
|
|
{
|
|
return this.steiner;
|
|
}
|
|
set
|
|
{
|
|
this.steiner = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000010 RID: 16
|
|
// (get) Token: 0x06000026 RID: 38 RVA: 0x000025D0 File Offset: 0x000007D0
|
|
// (set) Token: 0x06000027 RID: 39 RVA: 0x000025D8 File Offset: 0x000007D8
|
|
public bool UseBoundaryMarkers
|
|
{
|
|
get
|
|
{
|
|
return this.boundaryMarkers;
|
|
}
|
|
set
|
|
{
|
|
this.boundaryMarkers = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000011 RID: 17
|
|
// (get) Token: 0x06000028 RID: 40 RVA: 0x000025E1 File Offset: 0x000007E1
|
|
// (set) Token: 0x06000029 RID: 41 RVA: 0x000025E9 File Offset: 0x000007E9
|
|
public bool NoHoles
|
|
{
|
|
get
|
|
{
|
|
return this.noHoles;
|
|
}
|
|
set
|
|
{
|
|
this.noHoles = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000012 RID: 18
|
|
// (get) Token: 0x0600002A RID: 42 RVA: 0x000025F2 File Offset: 0x000007F2
|
|
// (set) Token: 0x0600002B RID: 43 RVA: 0x000025FA File Offset: 0x000007FA
|
|
public bool Jettison
|
|
{
|
|
get
|
|
{
|
|
return this.jettison;
|
|
}
|
|
set
|
|
{
|
|
this.jettison = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x04000007 RID: 7
|
|
private bool poly;
|
|
|
|
// Token: 0x04000008 RID: 8
|
|
private bool quality;
|
|
|
|
// Token: 0x04000009 RID: 9
|
|
private bool varArea;
|
|
|
|
// Token: 0x0400000A RID: 10
|
|
private bool convex;
|
|
|
|
// Token: 0x0400000B RID: 11
|
|
private bool jettison;
|
|
|
|
// Token: 0x0400000C RID: 12
|
|
private bool boundaryMarkers = true;
|
|
|
|
// Token: 0x0400000D RID: 13
|
|
private bool noHoles;
|
|
|
|
// Token: 0x0400000E RID: 14
|
|
private bool conformDel;
|
|
|
|
// Token: 0x0400000F RID: 15
|
|
private TriangulationAlgorithm algorithm;
|
|
|
|
// Token: 0x04000010 RID: 16
|
|
private Func<ITriangle, double, bool> usertest;
|
|
|
|
// Token: 0x04000011 RID: 17
|
|
private int noBisect;
|
|
|
|
// Token: 0x04000012 RID: 18
|
|
private int steiner = -1;
|
|
|
|
// Token: 0x04000013 RID: 19
|
|
private double minAngle;
|
|
|
|
// Token: 0x04000014 RID: 20
|
|
private double maxAngle;
|
|
|
|
// Token: 0x04000015 RID: 21
|
|
private double maxArea = -1.0;
|
|
|
|
// Token: 0x04000016 RID: 22
|
|
internal bool fixedArea;
|
|
|
|
// Token: 0x04000017 RID: 23
|
|
internal bool useSegments = true;
|
|
|
|
// Token: 0x04000018 RID: 24
|
|
internal bool useRegions;
|
|
|
|
// Token: 0x04000019 RID: 25
|
|
internal double goodAngle;
|
|
|
|
// Token: 0x0400001A RID: 26
|
|
internal double maxGoodAngle;
|
|
|
|
// Token: 0x0400001B RID: 27
|
|
internal double offconstant;
|
|
}
|
|
}
|