Files
2026-04-08 23:40:05 +02:00

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