m
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user