Files
2026-06-04 11:42:34 +02:00

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