This commit is contained in:
niko
2026-04-11 22:19:20 +02:00
parent 45b857ff11
commit 8fc35183db
17034 changed files with 2863552 additions and 0 deletions
@@ -0,0 +1,164 @@
using System;
using System.Collections.Generic;
using Cpp2IlInjected;
using UnityEngine;
namespace ClusterLOD
{
// Token: 0x02001281 RID: 4737
[Token(Token = "0x2001281")]
public class ClusterMeshGenerator
{
// Token: 0x06006B92 RID: 27538 RVA: 0x0017DCBC File Offset: 0x0017BEBC
[Token(Token = "0x6006B92")]
[Address(RVA = "0x1465B30", Offset = "0x1464930", VA = "0x181465B30")]
public ClusterMeshGenerator(int minNumVerts, int maxNumVerts, float maxRadius)
{
this.minNumVerts = minNumVerts;
this.maxNumVerts = maxNumVerts;
this.maxDiameterSq = maxRadius;
}
// Token: 0x17001162 RID: 4450
// (get) Token: 0x06006B93 RID: 27539 RVA: 0x0017DCE4 File Offset: 0x0017BEE4
// (set) Token: 0x06006B94 RID: 27540 RVA: 0x0017DCF8 File Offset: 0x0017BEF8
[Token(Token = "0x17001162")]
public List<ClusterMesh> Meshes
{
[Token(Token = "0x6006B93")]
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
get;
[Token(Token = "0x6006B94")]
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
private set;
}
// Token: 0x06006B95 RID: 27541 RVA: 0x0017DD0C File Offset: 0x0017BF0C
[Token(Token = "0x6006B95")]
[Address(RVA = "0x14657E0", Offset = "0x14645E0", VA = "0x1814657E0")]
public void CreateClusterMeshInstances(ClusterTree tree)
{
List<ClusterMesh> list = new List();
this.<Meshes>k__BackingField = list;
ClusterNode <Root>k__BackingField = tree.<Root>k__BackingField;
int num = this.UpdateVertexCount(<Root>k__BackingField);
ClusterNode <Root>k__BackingField2 = tree.<Root>k__BackingField;
this.CreateClusterMeshInstances(<Root>k__BackingField2);
}
// Token: 0x06006B96 RID: 27542 RVA: 0x0017DD4C File Offset: 0x0017BF4C
[Token(Token = "0x6006B96")]
[Address(RVA = "0x1465A90", Offset = "0x1464890", VA = "0x181465A90")]
private int UpdateVertexCount(ClusterNode node)
{
if (node != 0)
{
List<IClusterLODComponent> components = node.components;
if (components != 0)
{
int vertexCount = ClusterUtil.GetVertexCount(components, NPBPPKDLKDN.Far);
}
int num = 0;
node.vertexCount = num;
ClusterNode child = node.child1;
int num2 = this.UpdateVertexCount(child);
num += num2;
node.vertexCount = num;
ClusterNode child2 = node.child2;
int num3 = this.UpdateVertexCount(child2);
num3 += num;
node.vertexCount = num3;
return num3;
}
return 0;
}
// Token: 0x06006B97 RID: 27543 RVA: 0x0017DDBC File Offset: 0x0017BFBC
[Token(Token = "0x6006B97")]
[Address(RVA = "0x1465870", Offset = "0x1464670", VA = "0x181465870")]
private void CreateClusterMeshInstances(ClusterNode node)
{
int num = 0;
if (node != 0)
{
if (node.child1 != num)
{
int num2 = this.maxNumVerts;
Vector3 vector;
float z = vector.z;
Vector3 vector2;
float z2 = vector2.z;
Vector3 vector3;
float z3 = vector3.z;
float num3;
if (num3 > this.maxDiameterSq)
{
int num4 = this.minNumVerts;
if (node.vertexCount > num4)
{
ClusterNode child = node.child1;
this.CreateClusterMeshInstances(child);
ClusterNode child2 = node.child2;
this.CreateClusterMeshInstances(child2);
return;
}
}
}
ClusterMesh clusterMesh = new ClusterMesh();
List<ClusterMesh.ClusterInfo> list = new List();
clusterMesh.Clusters = list;
ClusterMeshUpdateJobData clusterMeshUpdateJobData = new ClusterMeshUpdateJobData();
clusterMesh.updateData = clusterMeshUpdateJobData;
Bounds bounds = node.bounds;
clusterMesh.bounds = bounds;
throw new NullReferenceException();
}
}
// Token: 0x06006B98 RID: 27544 RVA: 0x0017DE74 File Offset: 0x0017C074
[Token(Token = "0x6006B98")]
[Address(RVA = "0x1465620", Offset = "0x1464420", VA = "0x181465620")]
private void AssignNodesToMesh(ClusterNode node, ClusterMesh newClusterMesh)
{
if (node != 0)
{
if (node.components != 0)
{
ClusterMesh.ClusterInfo clusterInfo = new ClusterMesh.ClusterInfo();
List<IClusterLODComponent> list = new List();
clusterInfo.components = list;
PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO();
clusterInfo.nativeMesh = pcikhfeihgo;
SubdivideMeshData subdivideMeshData = new SubdivideMeshData();
clusterInfo.subdivideMeshData = subdivideMeshData;
List<IClusterLODComponent> components = node.components;
clusterInfo.components = components;
Bounds bounds = node.bounds;
clusterInfo.bounds = bounds;
newClusterMesh.Clusters.Add(clusterInfo);
int componentCount = newClusterMesh.componentCount;
int num = clusterInfo.components._size;
num += componentCount;
newClusterMesh.componentCount = num;
}
ClusterNode child = node.child1;
this.AssignNodesToMesh(child, newClusterMesh);
}
}
// Token: 0x040047F3 RID: 18419
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x40047F3")]
private int minNumVerts;
// Token: 0x040047F4 RID: 18420
[FieldOffset(Offset = "0x14")]
[Token(Token = "0x40047F4")]
private int maxNumVerts;
// Token: 0x040047F5 RID: 18421
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x40047F5")]
private float maxDiameterSq;
}
}