377 lines
12 KiB
C#
377 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
using RecRoom;
|
|
using Unity.Collections;
|
|
using UnityEngine;
|
|
|
|
namespace ClusterLOD
|
|
{
|
|
// Token: 0x02000C85 RID: 3205
|
|
[Token(Token = "0x2000C85")]
|
|
[StructLayout(3)]
|
|
public class ClusterMesh : IDisposable
|
|
{
|
|
// Token: 0x17000D63 RID: 3427
|
|
// (get) Token: 0x06004D26 RID: 19750 RVA: 0x0011EFF4 File Offset: 0x0011D1F4
|
|
// (set) Token: 0x06004D27 RID: 19751 RVA: 0x0011F008 File Offset: 0x0011D208
|
|
[Token(Token = "0x17000D63")]
|
|
public Mesh Mesh
|
|
{
|
|
[Token(Token = "0x6004D26")]
|
|
[Address(RVA = "0x3C1230", Offset = "0x3BFC30", VA = "0x1803C1230")]
|
|
get;
|
|
[Token(Token = "0x6004D27")]
|
|
[Address(RVA = "0x3C1270", Offset = "0x3BFC70", VA = "0x1803C1270")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17000D64 RID: 3428
|
|
// (get) Token: 0x06004D28 RID: 19752 RVA: 0x0011F01C File Offset: 0x0011D21C
|
|
// (set) Token: 0x06004D29 RID: 19753 RVA: 0x0011F030 File Offset: 0x0011D230
|
|
[Token(Token = "0x17000D64")]
|
|
public bool Dirty
|
|
{
|
|
[Token(Token = "0x6004D28")]
|
|
[Address(RVA = "0x421DE0", Offset = "0x4207E0", VA = "0x180421DE0")]
|
|
get;
|
|
[Token(Token = "0x6004D29")]
|
|
[Address(RVA = "0x421DF0", Offset = "0x4207F0", VA = "0x180421DF0")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17000D65 RID: 3429
|
|
// (get) Token: 0x06004D2A RID: 19754 RVA: 0x0011F044 File Offset: 0x0011D244
|
|
[Token(Token = "0x17000D65")]
|
|
public int MaxNumLOD1Indices
|
|
{
|
|
[Token(Token = "0x6004D2A")]
|
|
[Address(RVA = "0x1B354A0", Offset = "0x1B33EA0", VA = "0x181B354A0")]
|
|
get
|
|
{
|
|
ClusterMeshUpdateJobData clusterMeshUpdateJobData = this.updateData;
|
|
throw new NullReferenceException();
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004D2B RID: 19755 RVA: 0x0011F060 File Offset: 0x0011D260
|
|
[Token(Token = "0x6004D2B")]
|
|
[Address(RVA = "0x1B34260", Offset = "0x1B32C60", VA = "0x181B34260", Slot = "4")]
|
|
public void Dispose()
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
SafeDestroy.Asset(this.<Mesh>k__BackingField);
|
|
this.<Mesh>k__BackingField = num;
|
|
List<ClusterMesh.ClusterInfo> clusters = this.Clusters;
|
|
List.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
this.Clusters.Clear();
|
|
this.updateData.Dispose();
|
|
}
|
|
|
|
// Token: 0x06004D2C RID: 19756 RVA: 0x0011F0B8 File Offset: 0x0011D2B8
|
|
[Token(Token = "0x6004D2C")]
|
|
[Address(RVA = "0x1B34D00", Offset = "0x1B33700", VA = "0x181B34D00")]
|
|
public int GetLod(int clusterIdx)
|
|
{
|
|
NativeArray<int> componentLod = this.updateData.componentLod;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06004D2D RID: 19757 RVA: 0x0011F0D8 File Offset: 0x0011D2D8
|
|
[Token(Token = "0x6004D2D")]
|
|
[Address(RVA = "0x1B34140", Offset = "0x1B32B40", VA = "0x181B34140")]
|
|
public void AddClusterNode(ClusterNode ownerNode)
|
|
{
|
|
ClusterMesh.ClusterInfo clusterInfo = new ClusterMesh.ClusterInfo();
|
|
List<IClusterLODComponent> list = new List();
|
|
clusterInfo.components = list;
|
|
NativeClusterMesh nativeClusterMesh = new NativeClusterMesh();
|
|
clusterInfo.nativeMesh = nativeClusterMesh;
|
|
SubdivideMeshData subdivideMeshData = new SubdivideMeshData();
|
|
clusterInfo.subdivideMeshData = subdivideMeshData;
|
|
List<IClusterLODComponent> components = ownerNode.components;
|
|
clusterInfo.components = components;
|
|
Bounds bounds = ownerNode.bounds;
|
|
clusterInfo.bounds = bounds;
|
|
clusterInfo.requestedLod = (byte)((ulong)1L);
|
|
this.Clusters.Add(clusterInfo);
|
|
}
|
|
|
|
// Token: 0x06004D2E RID: 19758 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6004D2E")]
|
|
[Address(RVA = "0x1B345C0", Offset = "0x1B32FC0", VA = "0x181B345C0")]
|
|
public void GenerateLODMesh(Transform root, bool dynamicCluster)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06004D2F RID: 19759 RVA: 0x0011F150 File Offset: 0x0011D350
|
|
[Token(Token = "0x6004D2F")]
|
|
[Address(RVA = "0x1B343E0", Offset = "0x1B32DE0", VA = "0x181B343E0")]
|
|
public bool FinalizeUpdate(bool setOrigIndices)
|
|
{
|
|
ClusterMeshUpdateJobData clusterMeshUpdateJobData = this.updateData;
|
|
if (!clusterMeshUpdateJobData.<IsActive>k__BackingField)
|
|
{
|
|
}
|
|
clusterMeshUpdateJobData.<IsActive>k__BackingField = false;
|
|
Mesh mesh = this.<Mesh>k__BackingField;
|
|
int num = 0;
|
|
if (!(mesh == num))
|
|
{
|
|
this.<Mesh>k__BackingField.subMeshCount = 2;
|
|
NativeList<int> indices = clusterMeshUpdateJobData.indices;
|
|
Mesh mesh2 = this.<Mesh>k__BackingField;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
List<int> list;
|
|
mesh2.SetTriangles(list, num3, num2 != 0);
|
|
if (setOrigIndices)
|
|
{
|
|
NativeList<int> origIndices = clusterMeshUpdateJobData.origIndices;
|
|
Mesh mesh3 = this.<Mesh>k__BackingField;
|
|
int num4 = 0;
|
|
List<int> list2;
|
|
mesh3.SetTriangles(list2, 1, num4 != 0);
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06004D30 RID: 19760 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6004D30")]
|
|
[Address(RVA = "0x1B34FB0", Offset = "0x1B339B0", VA = "0x181B34FB0")]
|
|
public void UpdateMesh(Transform root, bool dynamicCluster)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06004D31 RID: 19761 RVA: 0x0011F1E4 File Offset: 0x0011D3E4
|
|
[Token(Token = "0x6004D31")]
|
|
[Address(RVA = "0x1B34D30", Offset = "0x1B33730", VA = "0x181B34D30")]
|
|
public bool Remove(IClusterLODComponent component)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
List<ClusterMesh.ClusterInfo> clusters = this.Clusters;
|
|
List.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
int num2;
|
|
while (num2 == -1)
|
|
{
|
|
}
|
|
this.updateData.<IsActive>k__BackingField = false;
|
|
this.<Dirty>k__BackingField = true;
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06004D32 RID: 19762 RVA: 0x0011F258 File Offset: 0x0011D458
|
|
[Token(Token = "0x6004D32")]
|
|
[Address(RVA = "0x1B35420", Offset = "0x1B33E20", VA = "0x181B35420")]
|
|
public ClusterMesh()
|
|
{
|
|
List<ClusterMesh.ClusterInfo> list = new List();
|
|
this.Clusters = list;
|
|
ClusterMeshUpdateJobData clusterMeshUpdateJobData = new ClusterMeshUpdateJobData();
|
|
this.updateData = clusterMeshUpdateJobData;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x04003929 RID: 14633
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4003929")]
|
|
public Bounds bounds;
|
|
|
|
// Token: 0x0400392B RID: 14635
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x400392B")]
|
|
public List<ClusterMesh.ClusterInfo> Clusters;
|
|
|
|
// Token: 0x0400392C RID: 14636
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x400392C")]
|
|
public ClusterMeshUpdateJobData updateData;
|
|
|
|
// Token: 0x0400392E RID: 14638
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x400392E")]
|
|
public ClusterMeshRenderer owner;
|
|
|
|
// Token: 0x02000C86 RID: 3206
|
|
[Token(Token = "0x2000C86")]
|
|
public class ClusterInfo : IDisposable
|
|
{
|
|
// Token: 0x17000D66 RID: 3430
|
|
// (get) Token: 0x06004D33 RID: 19763 RVA: 0x0011F288 File Offset: 0x0011D488
|
|
// (set) Token: 0x06004D34 RID: 19764 RVA: 0x0011F29C File Offset: 0x0011D49C
|
|
[Token(Token = "0x17000D66")]
|
|
public Mesh RequestedMesh
|
|
{
|
|
[Token(Token = "0x6004D33")]
|
|
[Address(RVA = "0x3C1250", Offset = "0x3BFC50", VA = "0x1803C1250")]
|
|
get;
|
|
[Token(Token = "0x6004D34")]
|
|
[Address(RVA = "0x3C1290", Offset = "0x3BFC90", VA = "0x1803C1290")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17000D67 RID: 3431
|
|
// (get) Token: 0x06004D35 RID: 19765 RVA: 0x0011F2B0 File Offset: 0x0011D4B0
|
|
// (set) Token: 0x06004D36 RID: 19766 RVA: 0x0011F2C4 File Offset: 0x0011D4C4
|
|
[Token(Token = "0x17000D67")]
|
|
public Mesh ActiveMesh
|
|
{
|
|
[Token(Token = "0x6004D35")]
|
|
[Address(RVA = "0x3EE8E0", Offset = "0x3ED2E0", VA = "0x1803EE8E0")]
|
|
get;
|
|
[Token(Token = "0x6004D36")]
|
|
[Address(RVA = "0x421E00", Offset = "0x420800", VA = "0x180421E00")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x06004D37 RID: 19767 RVA: 0x0011F2D8 File Offset: 0x0011D4D8
|
|
[Token(Token = "0x6004D37")]
|
|
[Address(RVA = "0x1B2C160", Offset = "0x1B2AB60", VA = "0x181B2C160")]
|
|
public void RequestNewMesh(Mesh mesh)
|
|
{
|
|
Mesh mesh2 = this.<RequestedMesh>k__BackingField;
|
|
Mesh mesh3 = this.<ActiveMesh>k__BackingField;
|
|
if (mesh2 != mesh3)
|
|
{
|
|
SafeDestroy.Asset(this.<RequestedMesh>k__BackingField);
|
|
}
|
|
this.<RequestedMesh>k__BackingField = mesh;
|
|
}
|
|
|
|
// Token: 0x06004D38 RID: 19768 RVA: 0x0011F310 File Offset: 0x0011D510
|
|
[Token(Token = "0x6004D38")]
|
|
[Address(RVA = "0x1B2C200", Offset = "0x1B2AC00", VA = "0x181B2C200")]
|
|
public void RequestRemoveMesh()
|
|
{
|
|
Mesh mesh = this.<RequestedMesh>k__BackingField;
|
|
Mesh mesh2 = this.<ActiveMesh>k__BackingField;
|
|
if (mesh != mesh2)
|
|
{
|
|
SafeDestroy.Asset(this.<RequestedMesh>k__BackingField);
|
|
}
|
|
this.<RequestedMesh>k__BackingField = (ulong)0L;
|
|
}
|
|
|
|
// Token: 0x06004D39 RID: 19769 RVA: 0x0011F34C File Offset: 0x0011D54C
|
|
[Token(Token = "0x6004D39")]
|
|
[Address(RVA = "0x1B2C0A0", Offset = "0x1B2AAA0", VA = "0x181B2C0A0", Slot = "4")]
|
|
public void Dispose()
|
|
{
|
|
Mesh mesh = this.<RequestedMesh>k__BackingField;
|
|
Mesh mesh2 = this.<ActiveMesh>k__BackingField;
|
|
if (mesh != mesh2)
|
|
{
|
|
SafeDestroy.Asset(this.<RequestedMesh>k__BackingField);
|
|
}
|
|
SafeDestroy.Asset(this.<ActiveMesh>k__BackingField);
|
|
NativeClusterMesh nativeClusterMesh = this.nativeMesh;
|
|
int num = 0;
|
|
this.<RequestedMesh>k__BackingField = num;
|
|
this.<ActiveMesh>k__BackingField = num;
|
|
nativeClusterMesh.Dispose();
|
|
this.subdivideMeshData.Dispose();
|
|
}
|
|
|
|
// Token: 0x06004D3A RID: 19770 RVA: 0x0011F3B8 File Offset: 0x0011D5B8
|
|
[Token(Token = "0x6004D3A")]
|
|
[Address(RVA = "0x1B2C290", Offset = "0x1B2AC90", VA = "0x181B2C290")]
|
|
public ClusterInfo()
|
|
{
|
|
List<IClusterLODComponent> list = new List();
|
|
this.components = list;
|
|
NativeClusterMesh nativeClusterMesh = new NativeClusterMesh();
|
|
this.nativeMesh = nativeClusterMesh;
|
|
SubdivideMeshData subdivideMeshData = new SubdivideMeshData();
|
|
this.subdivideMeshData = subdivideMeshData;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x0400392F RID: 14639
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x400392F")]
|
|
public Bounds bounds;
|
|
|
|
// Token: 0x04003930 RID: 14640
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4003930")]
|
|
public List<IClusterLODComponent> components;
|
|
|
|
// Token: 0x04003933 RID: 14643
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4003933")]
|
|
public Vector3 closestPos;
|
|
|
|
// Token: 0x04003934 RID: 14644
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x4C")]
|
|
[Token(Token = "0x4003934")]
|
|
public float closestDist;
|
|
|
|
// Token: 0x04003935 RID: 14645
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4003935")]
|
|
public byte requestedLod;
|
|
|
|
// Token: 0x04003936 RID: 14646
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x54")]
|
|
[Token(Token = "0x4003936")]
|
|
public Vector3 prevUpdatedEyePos;
|
|
|
|
// Token: 0x04003937 RID: 14647
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4003937")]
|
|
public int numLOD0Verts;
|
|
|
|
// Token: 0x04003938 RID: 14648
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x64")]
|
|
[Token(Token = "0x4003938")]
|
|
public int numLOD1Verts;
|
|
|
|
// Token: 0x04003939 RID: 14649
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x4003939")]
|
|
public int numAdditionalVerts;
|
|
|
|
// Token: 0x0400393A RID: 14650
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x400393A")]
|
|
public NativeClusterMesh nativeMesh;
|
|
|
|
// Token: 0x0400393B RID: 14651
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x400393B")]
|
|
public SubdivideMeshData subdivideMeshData;
|
|
|
|
// Token: 0x0400393C RID: 14652
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x400393C")]
|
|
public Transform root;
|
|
}
|
|
}
|
|
}
|