This commit is contained in:
niko
2026-04-12 16:51:38 +02:00
parent 1b6f6d81d0
commit c12fbe3fc6
17828 changed files with 2994770 additions and 0 deletions
@@ -0,0 +1,164 @@
using System;
using System.Collections.Generic;
using Cpp2IlInjected;
using UnityEngine;
namespace ClusterLOD
{
// Token: 0x02001351 RID: 4945
[Token(Token = "0x2001351")]
public class ClusterMeshGenerator
{
// Token: 0x06006F05 RID: 28421 RVA: 0x0018625C File Offset: 0x0018445C
[Token(Token = "0x6006F05")]
[Address(RVA = "0x1F40F60", Offset = "0x1F3FF60", VA = "0x181F40F60")]
public ClusterMeshGenerator(int minNumVerts, int maxNumVerts, float maxRadius)
{
this.minNumVerts = minNumVerts;
this.maxNumVerts = maxNumVerts;
this.maxDiameterSq = maxRadius;
}
// Token: 0x170011DE RID: 4574
// (get) Token: 0x06006F06 RID: 28422 RVA: 0x00186284 File Offset: 0x00184484
// (set) Token: 0x06006F07 RID: 28423 RVA: 0x00186298 File Offset: 0x00184498
[Token(Token = "0x170011DE")]
public List<ClusterMesh> Meshes
{
[Token(Token = "0x6006F06")]
[Address(RVA = "0x4157C0", Offset = "0x4147C0", VA = "0x1804157C0")]
get;
[Token(Token = "0x6006F07")]
[Address(RVA = "0x415810", Offset = "0x414810", VA = "0x180415810")]
private set;
}
// Token: 0x06006F08 RID: 28424 RVA: 0x001862AC File Offset: 0x001844AC
[Token(Token = "0x6006F08")]
[Address(RVA = "0x1F40C10", Offset = "0x1F3FC10", VA = "0x181F40C10")]
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: 0x06006F09 RID: 28425 RVA: 0x001862EC File Offset: 0x001844EC
[Token(Token = "0x6006F09")]
[Address(RVA = "0x1F40EC0", Offset = "0x1F3FEC0", VA = "0x181F40EC0")]
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: 0x06006F0A RID: 28426 RVA: 0x0018635C File Offset: 0x0018455C
[Token(Token = "0x6006F0A")]
[Address(RVA = "0x1F40CA0", Offset = "0x1F3FCA0", VA = "0x181F40CA0")]
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: 0x06006F0B RID: 28427 RVA: 0x00186414 File Offset: 0x00184614
[Token(Token = "0x6006F0B")]
[Address(RVA = "0x1F40A50", Offset = "0x1F3FA50", VA = "0x181F40A50")]
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: 0x04004975 RID: 18805
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4004975")]
private int minNumVerts;
// Token: 0x04004976 RID: 18806
[FieldOffset(Offset = "0x14")]
[Token(Token = "0x4004976")]
private int maxNumVerts;
// Token: 0x04004977 RID: 18807
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4004977")]
private float maxDiameterSq;
}
}