75 lines
1.7 KiB
C#
75 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace TriangleNet
|
|
{
|
|
// Token: 0x02000010 RID: 16
|
|
internal class Sampler
|
|
{
|
|
// Token: 0x06000090 RID: 144 RVA: 0x00010FFA File Offset: 0x0000F1FA
|
|
public void Reset()
|
|
{
|
|
this.samples = 1;
|
|
this.triangleCount = 0;
|
|
}
|
|
|
|
// Token: 0x06000091 RID: 145 RVA: 0x0001100A File Offset: 0x0000F20A
|
|
public void Update(Mesh mesh)
|
|
{
|
|
this.Update(mesh, false);
|
|
}
|
|
|
|
// Token: 0x06000092 RID: 146 RVA: 0x00011014 File Offset: 0x0000F214
|
|
public void Update(Mesh mesh, bool forceUpdate)
|
|
{
|
|
int count = mesh.triangles.Count;
|
|
if (this.triangleCount != count || forceUpdate)
|
|
{
|
|
this.triangleCount = count;
|
|
while (Sampler.samplefactor * this.samples * this.samples * this.samples < count)
|
|
{
|
|
this.samples++;
|
|
}
|
|
this.keys = mesh.triangles.Keys.ToArray<int>();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000093 RID: 147 RVA: 0x00011088 File Offset: 0x0000F288
|
|
public int[] GetSamples(Mesh mesh)
|
|
{
|
|
List<int> list = new List<int>(this.samples);
|
|
int num = this.triangleCount / this.samples;
|
|
for (int i = 0; i < this.samples; i++)
|
|
{
|
|
int num2 = Sampler.rand.Next(i * num, (i + 1) * num - 1);
|
|
if (!mesh.triangles.Keys.Contains(this.keys[num2]))
|
|
{
|
|
this.Update(mesh, true);
|
|
i--;
|
|
}
|
|
else
|
|
{
|
|
list.Add(this.keys[num2]);
|
|
}
|
|
}
|
|
return list.ToArray();
|
|
}
|
|
|
|
// Token: 0x0400007E RID: 126
|
|
private static Random rand = new Random(DateTime.Now.Millisecond);
|
|
|
|
// Token: 0x0400007F RID: 127
|
|
private int samples = 1;
|
|
|
|
// Token: 0x04000080 RID: 128
|
|
private int triangleCount;
|
|
|
|
// Token: 0x04000081 RID: 129
|
|
private static int samplefactor = 11;
|
|
|
|
// Token: 0x04000082 RID: 130
|
|
private int[] keys;
|
|
}
|
|
}
|