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 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 list = new List(); this.k__BackingField = list; ClusterNode k__BackingField = tree.k__BackingField; int num = this.UpdateVertexCount(k__BackingField); ClusterNode k__BackingField2 = tree.k__BackingField; this.CreateClusterMeshInstances(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 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 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 list = new List(); clusterInfo.components = list; PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO(); clusterInfo.nativeMesh = pcikhfeihgo; SubdivideMeshData subdivideMeshData = new SubdivideMeshData(); clusterInfo.subdivideMeshData = subdivideMeshData; List 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; } }