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