oh dear
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001270 RID: 4720
|
||||
[Token(Token = "0x2001270")]
|
||||
[CreateAssetMenu]
|
||||
public class ClusterLODConfig : ScriptableObject
|
||||
{
|
||||
// Token: 0x06006B1C RID: 27420 RVA: 0x0017BCB8 File Offset: 0x00179EB8
|
||||
[Token(Token = "0x6006B1C")]
|
||||
[Address(RVA = "0x1461B90", Offset = "0x1460990", VA = "0x181461B90")]
|
||||
public ClusterLODConfig.LODSettings GetSettings(NPBPPKDLKDN lod)
|
||||
{
|
||||
if (lod != NPBPPKDLKDN.Near)
|
||||
{
|
||||
return this.far;
|
||||
}
|
||||
return this.near;
|
||||
}
|
||||
|
||||
// Token: 0x06006B1D RID: 27421 RVA: 0x0017BCD8 File Offset: 0x00179ED8
|
||||
[Token(Token = "0x6006B1D")]
|
||||
[Address(RVA = "0x1461B70", Offset = "0x1460970", VA = "0x181461B70")]
|
||||
public int GetMaxNumActiveLOD0Verts()
|
||||
{
|
||||
return this.maxDynamicNearVerts;
|
||||
}
|
||||
|
||||
// Token: 0x06006B1E RID: 27422 RVA: 0x0017BCEC File Offset: 0x00179EEC
|
||||
[Token(Token = "0x6006B1E")]
|
||||
[Address(RVA = "0x1461BA0", Offset = "0x14609A0", VA = "0x181461BA0")]
|
||||
public ClusterLODConfig()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x04004770 RID: 18288
|
||||
[FieldOffset(Offset = "0x18")]
|
||||
[Token(Token = "0x4004770")]
|
||||
[Header("Layer Settings")]
|
||||
public float maxRadiusForDetailObjects = 1f;
|
||||
|
||||
// Token: 0x04004771 RID: 18289
|
||||
[FieldOffset(Offset = "0x1C")]
|
||||
[Token(Token = "0x4004771")]
|
||||
public int maxWorldLODVerts = (int)((ulong)80000L);
|
||||
|
||||
// Token: 0x04004772 RID: 18290
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x4004772")]
|
||||
public int maxWorldNearVerts = (int)((ulong)30000L);
|
||||
|
||||
// Token: 0x04004773 RID: 18291
|
||||
[FieldOffset(Offset = "0x24")]
|
||||
[Token(Token = "0x4004773")]
|
||||
public int maxDetailNearVerts = (int)((ulong)30000L);
|
||||
|
||||
// Token: 0x04004774 RID: 18292
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x4004774")]
|
||||
public int maxDetailFarVerts = (int)((ulong)50000L);
|
||||
|
||||
// Token: 0x04004775 RID: 18293
|
||||
[FieldOffset(Offset = "0x2C")]
|
||||
[Token(Token = "0x4004775")]
|
||||
public int maxDynamicNearVerts = (int)((ulong)30000L);
|
||||
|
||||
// Token: 0x04004776 RID: 18294
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x4004776")]
|
||||
public int maxDynamicFarVerts = (int)((ulong)50000L);
|
||||
|
||||
// Token: 0x04004777 RID: 18295
|
||||
[FieldOffset(Offset = "0x34")]
|
||||
[Token(Token = "0x4004777")]
|
||||
[Header("Creation Settings")]
|
||||
public int minNumObjectPerCluster = (int)((ulong)5L);
|
||||
|
||||
// Token: 0x04004778 RID: 18296
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x4004778")]
|
||||
public float distributeVSminimize = 0.5f;
|
||||
|
||||
// Token: 0x04004779 RID: 18297
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x4004779")]
|
||||
[Header("Near Settings")]
|
||||
public ClusterLODConfig.LODSettings near;
|
||||
|
||||
// Token: 0x0400477A RID: 18298
|
||||
[FieldOffset(Offset = "0x48")]
|
||||
[Token(Token = "0x400477A")]
|
||||
[Header("Far Settings")]
|
||||
public ClusterLODConfig.LODSettings far;
|
||||
|
||||
// Token: 0x0400477B RID: 18299
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x400477B")]
|
||||
public float backfaceCullingThreshold = 0.1f;
|
||||
|
||||
// Token: 0x0400477C RID: 18300
|
||||
[FieldOffset(Offset = "0x54")]
|
||||
[Token(Token = "0x400477C")]
|
||||
public float triangleCullingDistFactor = 150f;
|
||||
|
||||
// Token: 0x0400477D RID: 18301
|
||||
[FieldOffset(Offset = "0x58")]
|
||||
[Token(Token = "0x400477D")]
|
||||
public float LOD0VertCacheFrac = 2f;
|
||||
|
||||
// Token: 0x02001271 RID: 4721
|
||||
[Token(Token = "0x2001271")]
|
||||
[Serializable]
|
||||
public class LODSettings
|
||||
{
|
||||
// Token: 0x17001151 RID: 4433
|
||||
// (get) Token: 0x06006B1F RID: 27423 RVA: 0x0017BD90 File Offset: 0x00179F90
|
||||
[Token(Token = "0x17001151")]
|
||||
public bool ShouldSubDivide
|
||||
{
|
||||
[Token(Token = "0x6006B1F")]
|
||||
[Address(RVA = "0x146DFF0", Offset = "0x146CDF0", VA = "0x18146DFF0")]
|
||||
get
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006B1F)
|
||||
|
||||
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean ClusterLOD.ClusterLODConfig/LODSettings::get_ShouldSubDivide()
|
||||
|
||||
---> System.Exception: Basic block has to end with unconditional control flow.
|
||||
{
|
||||
IL_0F:
|
||||
stloc:float32(var_3_15, ldfld:float32(LODSettings::maxSubDivideDistance, ldloc:LODSettings(this)))
|
||||
}
|
||||
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
||||
--- End of inner exception stack trace ---
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
||||
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
||||
*/;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001152 RID: 4434
|
||||
// (get) Token: 0x06006B20 RID: 27424 RVA: 0x0017BDB4 File Offset: 0x00179FB4
|
||||
[Token(Token = "0x17001152")]
|
||||
public bool UseTangents
|
||||
{
|
||||
[Token(Token = "0x6006B20")]
|
||||
[Address(RVA = "0x8522F0", Offset = "0x8510F0", VA = "0x1808522F0")]
|
||||
get
|
||||
{
|
||||
return this.useMaterials;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B21 RID: 27425 RVA: 0x0017BDC8 File Offset: 0x00179FC8
|
||||
[Token(Token = "0x6006B21")]
|
||||
[Address(RVA = "0x146DFB0", Offset = "0x146CDB0", VA = "0x18146DFB0")]
|
||||
public LODSettings()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x0400477E RID: 18302
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x400477E")]
|
||||
public float maxRadiusOfCluster = 5f;
|
||||
|
||||
// Token: 0x0400477F RID: 18303
|
||||
[FieldOffset(Offset = "0x14")]
|
||||
[Token(Token = "0x400477F")]
|
||||
public int minNumVertsInCluster = (int)((ulong)2000L);
|
||||
|
||||
// Token: 0x04004780 RID: 18304
|
||||
[FieldOffset(Offset = "0x18")]
|
||||
[Token(Token = "0x4004780")]
|
||||
public int maxNumVertsInCluster = (int)((ulong)20000L);
|
||||
|
||||
// Token: 0x04004781 RID: 18305
|
||||
[FieldOffset(Offset = "0x1C")]
|
||||
[Token(Token = "0x4004781")]
|
||||
public float useLowestDetailAtSmallerRadius = 0.2f;
|
||||
|
||||
// Token: 0x04004782 RID: 18306
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x4004782")]
|
||||
public float useHighestDetailAtGreaterRadius = 0.8f;
|
||||
|
||||
// Token: 0x04004783 RID: 18307
|
||||
[FieldOffset(Offset = "0x24")]
|
||||
[Token(Token = "0x4004783")]
|
||||
public float maxVertSnapDist = 0.01f;
|
||||
|
||||
// Token: 0x04004784 RID: 18308
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x4004784")]
|
||||
public float vertexNormalCombineThresh = 0.8f;
|
||||
|
||||
// Token: 0x04004785 RID: 18309
|
||||
[FieldOffset(Offset = "0x2C")]
|
||||
[Token(Token = "0x4004785")]
|
||||
public float maxSubDivideEdgeSize;
|
||||
|
||||
// Token: 0x04004786 RID: 18310
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x4004786")]
|
||||
public float maxSubDivideDistance;
|
||||
|
||||
// Token: 0x04004787 RID: 18311
|
||||
[FieldOffset(Offset = "0x34")]
|
||||
[Token(Token = "0x4004787")]
|
||||
public bool cullEncapsulated = true;
|
||||
|
||||
// Token: 0x04004788 RID: 18312
|
||||
[FieldOffset(Offset = "0x35")]
|
||||
[Token(Token = "0x4004788")]
|
||||
public bool useMaterials;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,859 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Cpp2IlInjected;
|
||||
using RecRoom.Core.Creation.Shapes;
|
||||
using RecRoom.Persistence;
|
||||
using Unity.Jobs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001272 RID: 4722
|
||||
[Token(Token = "0x2001272")]
|
||||
public class ClusterLODManager : MonoBehaviour
|
||||
{
|
||||
// Token: 0x17001153 RID: 4435
|
||||
// (get) Token: 0x06006B22 RID: 27426 RVA: 0x0017BE34 File Offset: 0x0017A034
|
||||
// (set) Token: 0x06006B23 RID: 27427 RVA: 0x0017BE48 File Offset: 0x0017A048
|
||||
[Token(Token = "0x17001153")]
|
||||
public ClusterLODConfig Config
|
||||
{
|
||||
[Token(Token = "0x6006B22")]
|
||||
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
|
||||
get;
|
||||
[Token(Token = "0x6006B23")]
|
||||
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001154 RID: 4436
|
||||
// (get) Token: 0x06006B24 RID: 27428 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
// (set) Token: 0x06006B25 RID: 27429 RVA: 0x0017BE5C File Offset: 0x0017A05C
|
||||
[Token(Token = "0x17001154")]
|
||||
public Vector3 EyePos
|
||||
{
|
||||
[Token(Token = "0x6006B24")]
|
||||
[Address(RVA = "0xA9E600", Offset = "0xA9D400", VA = "0x180A9E600")]
|
||||
[CompilerGenerated]
|
||||
get
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
[Token(Token = "0x6006B25")]
|
||||
[Address(RVA = "0xA9E200", Offset = "0xA9D000", VA = "0x180A9E200")]
|
||||
[CompilerGenerated]
|
||||
private set
|
||||
{
|
||||
float z = value.z;
|
||||
this.<EyePos>k__BackingField.z = z;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001155 RID: 4437
|
||||
// (get) Token: 0x06006B26 RID: 27430 RVA: 0x0017BE7C File Offset: 0x0017A07C
|
||||
[Token(Token = "0x17001155")]
|
||||
public static ClusterLODManager Instance
|
||||
{
|
||||
[Token(Token = "0x6006B26")]
|
||||
[Address(RVA = "0x1464250", Offset = "0x1463050", VA = "0x181464250")]
|
||||
get
|
||||
{
|
||||
return ClusterLODManager._instance;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B27 RID: 27431 RVA: 0x0017BE90 File Offset: 0x0017A090
|
||||
[Token(Token = "0x6006B27")]
|
||||
[Address(RVA = "0x1462940", Offset = "0x1461740", VA = "0x181462940")]
|
||||
private void OnDestroy()
|
||||
{
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = this.ClusterMeshAssetCache.createMeshFromClusterJob;
|
||||
JobHandle <jobHandle>k__BackingField = createMeshFromClusterJob.<jobHandle>k__BackingField;
|
||||
createMeshFromClusterJob.sharedResultMesh.Dispose();
|
||||
createMeshFromClusterJob.optimizationData.Dispose();
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
if (NetworkedSingletonMonoBehaviour.ONCPNMDGGKG)
|
||||
{
|
||||
RoomPersistenceManager instance = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG;
|
||||
Action action = new Action(this.OnRoomStartLoad);
|
||||
instance.OEEEEIDBCDJ -= action;
|
||||
RoomPersistenceManager instance2 = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG;
|
||||
Action action2 = new Action(this.OnRoomStartLoad);
|
||||
instance2.NNKFGEALMHJ -= action2;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B28 RID: 27432 RVA: 0x0017BF18 File Offset: 0x0017A118
|
||||
[Token(Token = "0x6006B28")]
|
||||
[Address(RVA = "0x14632A0", Offset = "0x14620A0", VA = "0x1814632A0")]
|
||||
public static void SetSpawnPosition(Vector3 spawnPos)
|
||||
{
|
||||
ClusterLODManager instance = ClusterLODManager._instance;
|
||||
int num = 0;
|
||||
if (instance != num)
|
||||
{
|
||||
ClusterLODManager instance2 = ClusterLODManager._instance;
|
||||
float z = spawnPos.z;
|
||||
instance2.<EyePos>k__BackingField.z = z;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001156 RID: 4438
|
||||
// (get) Token: 0x06006B29 RID: 27433 RVA: 0x0017BF58 File Offset: 0x0017A158
|
||||
[Token(Token = "0x17001156")]
|
||||
public static bool WorldCreated
|
||||
{
|
||||
[Token(Token = "0x6006B29")]
|
||||
[Address(RVA = "0x1464310", Offset = "0x1463110", VA = "0x181464310")]
|
||||
get
|
||||
{
|
||||
ClusterLODManager instance = ClusterLODManager._instance;
|
||||
int num = 0;
|
||||
return instance == num || ClusterLODManager._instance.CurrentState == ClusterLODManager.State.Running;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001157 RID: 4439
|
||||
// (get) Token: 0x06006B2A RID: 27434 RVA: 0x0017BF8C File Offset: 0x0017A18C
|
||||
[Token(Token = "0x17001157")]
|
||||
public static bool ComponentCollectionEnabled
|
||||
{
|
||||
[Token(Token = "0x6006B2A")]
|
||||
[Address(RVA = "0x1464140", Offset = "0x1462F40", VA = "0x181464140")]
|
||||
get
|
||||
{
|
||||
ClusterLODManager instance = ClusterLODManager._instance;
|
||||
int num = 0;
|
||||
bool flag = instance != num;
|
||||
if (!flag)
|
||||
{
|
||||
return flag;
|
||||
}
|
||||
return ClusterLODManager._instance.CurrentState == ClusterLODManager.State.Waiting || ClusterLODManager._instance.CurrentState == ClusterLODManager.State.Collecting;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B2B RID: 27435 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B2B")]
|
||||
[Address(RVA = "0x1461D70", Offset = "0x1460B70", VA = "0x181461D70")]
|
||||
private void Awake()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B2C RID: 27436 RVA: 0x0017BFD4 File Offset: 0x0017A1D4
|
||||
[Token(Token = "0x6006B2C")]
|
||||
[Address(RVA = "0x1463950", Offset = "0x1462750", VA = "0x181463950")]
|
||||
private void StopCreateWorld()
|
||||
{
|
||||
Coroutine coroutine = this.createWorldCoroutine;
|
||||
if (coroutine != 0)
|
||||
{
|
||||
base.StopCoroutine(coroutine);
|
||||
this.createWorldCoroutine = (ulong)0L;
|
||||
}
|
||||
Coroutine coroutine2 = this.assignLODsCoroutine;
|
||||
if (coroutine2 != 0)
|
||||
{
|
||||
base.StopCoroutine(coroutine2);
|
||||
this.assignLODsCoroutine = (ulong)0L;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B2D RID: 27437 RVA: 0x0017C018 File Offset: 0x0017A218
|
||||
[Token(Token = "0x6006B2D")]
|
||||
[Address(RVA = "0x1462B70", Offset = "0x1461970", VA = "0x181462B70")]
|
||||
private void OnRoomStartLoad()
|
||||
{
|
||||
ClusterMeshAssetCache clusterMeshAssetCache = this.ClusterMeshAssetCache;
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = clusterMeshAssetCache.createMeshFromClusterJob;
|
||||
JobHandle <jobHandle>k__BackingField = createMeshFromClusterJob.<jobHandle>k__BackingField;
|
||||
int num = 0;
|
||||
createMeshFromClusterJob.<cluster>k__BackingField = num;
|
||||
clusterMeshAssetCache.createQueue.Clear();
|
||||
OMCHJHPFBDN.KGFPNIMJHIC(this.detailRoot);
|
||||
OMCHJHPFBDN.KGFPNIMJHIC(this.worldRoot);
|
||||
GameObject gameObject = new GameObject("DetailRoot");
|
||||
this.detailRoot = gameObject;
|
||||
Transform transform = gameObject.transform;
|
||||
Transform transform2 = base.transform;
|
||||
transform.parent = transform2;
|
||||
GameObject gameObject2 = new GameObject("WorldRoot");
|
||||
this.worldRoot = gameObject2;
|
||||
Transform transform3 = gameObject2.transform;
|
||||
Transform transform4 = base.transform;
|
||||
transform3.parent = transform4;
|
||||
this.worldClusterMeshRenderers[num].Clear();
|
||||
this.clusterInfos[num].Clear();
|
||||
num++;
|
||||
this.newAddedStaticComponents.Clear();
|
||||
this.newAddedWorldComponents.Clear();
|
||||
this.newAddedDetailComponents.Clear();
|
||||
this.newShapeContainers.Clear();
|
||||
Coroutine coroutine = this.createWorldCoroutine;
|
||||
if (coroutine != 0)
|
||||
{
|
||||
base.StopCoroutine(coroutine);
|
||||
this.createWorldCoroutine = num;
|
||||
}
|
||||
Coroutine coroutine2 = this.assignLODsCoroutine;
|
||||
if (coroutine2 != 0)
|
||||
{
|
||||
base.StopCoroutine(coroutine2);
|
||||
this.assignLODsCoroutine = num;
|
||||
}
|
||||
this.CurrentState = (ClusterLODManager.State)num;
|
||||
ClusterLODManager.<CreateWorld>d__41 <CreateWorld>d__;
|
||||
<CreateWorld>d__.System.IDisposable.Dispose();
|
||||
<CreateWorld>d__.<>1__state = num;
|
||||
<CreateWorld>d__.<>4__this = this;
|
||||
Coroutine coroutine3 = base.StartCoroutine(<CreateWorld>d__);
|
||||
this.createWorldCoroutine = coroutine3;
|
||||
}
|
||||
|
||||
// Token: 0x06006B2E RID: 27438 RVA: 0x0017C180 File Offset: 0x0017A380
|
||||
[Token(Token = "0x6006B2E")]
|
||||
[Address(RVA = "0x1463570", Offset = "0x1462370", VA = "0x181463570")]
|
||||
private void Start()
|
||||
{
|
||||
Transform transform = base.transform;
|
||||
float z = Vector3.zero.z;
|
||||
Transform transform2 = base.transform;
|
||||
Quaternion identity = Quaternion.identity;
|
||||
GameObject gameObject = new GameObject("DetailRoot");
|
||||
this.detailRoot = gameObject;
|
||||
Transform transform3 = gameObject.transform;
|
||||
Transform transform4 = base.transform;
|
||||
transform3.parent = transform4;
|
||||
GameObject gameObject2 = new GameObject("WorldRoot");
|
||||
this.worldRoot = gameObject2;
|
||||
Transform transform5 = gameObject2.transform;
|
||||
Transform transform6 = base.transform;
|
||||
transform5.parent = transform6;
|
||||
int num = 0;
|
||||
List<ClusterMeshRenderer>[] array = this.worldClusterMeshRenderers;
|
||||
List<ClusterMeshRenderer> list = new List();
|
||||
if (list != 0)
|
||||
{
|
||||
}
|
||||
array[0] = list;
|
||||
List<ClusterMesh.ClusterInfo>[] array2 = this.clusterInfos;
|
||||
List<ClusterMesh.ClusterInfo> list2 = new List();
|
||||
if (list2 != 0)
|
||||
{
|
||||
}
|
||||
num++;
|
||||
array2[0] = list2;
|
||||
RoomPersistenceManager instance = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG;
|
||||
Action action = new Action(this.OnRoomStartLoad);
|
||||
instance.OEEEEIDBCDJ += action;
|
||||
RoomPersistenceManager instance2 = NetworkedSingletonMonoBehaviour.ONCPNMDGGKG;
|
||||
Action action2 = new Action(this.OnRoomStartLoad);
|
||||
instance2.NNKFGEALMHJ += action2;
|
||||
ClusterLODManager.<CreateWorld>d__41 <CreateWorld>d__;
|
||||
<CreateWorld>d__.System.IDisposable.Dispose();
|
||||
<CreateWorld>d__.<>1__state = (int)((ulong)0L);
|
||||
<CreateWorld>d__.<>4__this = this;
|
||||
Coroutine coroutine = base.StartCoroutine(<CreateWorld>d__);
|
||||
this.createWorldCoroutine = coroutine;
|
||||
}
|
||||
|
||||
// Token: 0x06006B2F RID: 27439 RVA: 0x0017C2BC File Offset: 0x0017A4BC
|
||||
[Token(Token = "0x6006B2F")]
|
||||
[Address(RVA = "0x1463F00", Offset = "0x1462D00", VA = "0x181463F00")]
|
||||
private void Update()
|
||||
{
|
||||
if (this.CurrentState == ClusterLODManager.State.Running)
|
||||
{
|
||||
this.UpdateLODs();
|
||||
bool flag = this.ClusterMeshAssetCache.Update();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B30 RID: 27440 RVA: 0x0017C2EC File Offset: 0x0017A4EC
|
||||
[Token(Token = "0x6006B30")]
|
||||
[Address(RVA = "0x1461F60", Offset = "0x1460D60", VA = "0x181461F60")]
|
||||
private IEnumerator CreateWorld()
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006B30)
|
||||
|
||||
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Collections.IEnumerator ClusterLOD.ClusterLODManager::CreateWorld()
|
||||
|
||||
---> System.Exception: Basic block has to end with unconditional control flow.
|
||||
{
|
||||
Block_0:
|
||||
call:void('<CreateWorld>d__41'::System.IDisposable.Dispose, ldloc:'<CreateWorld>d__41'(var_0))
|
||||
stfld:int32('<CreateWorld>d__41'::<>1__state, ldloc:'<CreateWorld>d__41'(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
|
||||
stfld:ClusterLODManager('<CreateWorld>d__41'::<>4__this, ldloc:'<CreateWorld>d__41'(var_0), ldloc:ClusterLODManager(this))
|
||||
}
|
||||
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
||||
--- End of inner exception stack trace ---
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
||||
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// Token: 0x06006B31 RID: 27441 RVA: 0x0017C310 File Offset: 0x0017A510
|
||||
[Token(Token = "0x6006B31")]
|
||||
[Address(RVA = "0x1462710", Offset = "0x1461510", VA = "0x181462710")]
|
||||
public int GetDetailFromHalfSize(bool near, Vector3 halfSize)
|
||||
{
|
||||
ClusterLODConfig clusterLODConfig = this.<Config>k__BackingField;
|
||||
if (near)
|
||||
{
|
||||
}
|
||||
ClusterLODConfig.LODSettings far = clusterLODConfig.far;
|
||||
float useHighestDetailAtGreaterRadius = far.useHighestDetailAtGreaterRadius;
|
||||
int num = 0;
|
||||
float useLowestDetailAtSmallerRadius = far.useLowestDetailAtSmallerRadius;
|
||||
return num + 1;
|
||||
}
|
||||
|
||||
// Token: 0x06006B32 RID: 27442 RVA: 0x0017C34C File Offset: 0x0017A54C
|
||||
[Token(Token = "0x6006B32")]
|
||||
[Address(RVA = "0x1463B70", Offset = "0x1462970", VA = "0x181463B70")]
|
||||
public void UpdateLODs()
|
||||
{
|
||||
List<ClusterMeshRenderer>[] array = this.worldClusterMeshRenderers;
|
||||
int num = 0;
|
||||
int num2 = 0;
|
||||
List<ClusterMeshRenderer> list = array[num2];
|
||||
num2++;
|
||||
uint num3;
|
||||
if (num != 0 && num3 > (uint)0)
|
||||
{
|
||||
int num4 = this.clusterIndex;
|
||||
num4++;
|
||||
List<ClusterMeshRenderer>[] array2 = this.worldClusterMeshRenderers;
|
||||
int num5 = 0;
|
||||
this.clusterIndex = num2;
|
||||
int size = array2[num5]._size;
|
||||
num2 -= size;
|
||||
num5++;
|
||||
if (num5 < 3)
|
||||
{
|
||||
bool flag;
|
||||
bool flag2;
|
||||
if (flag || !flag2)
|
||||
{
|
||||
bool flag3;
|
||||
if (flag3)
|
||||
{
|
||||
GameObject gameObject;
|
||||
global::UnityEngine.Object.Destroy(gameObject);
|
||||
}
|
||||
List<ClusterMeshRenderer>[] array3 = this.worldClusterMeshRenderers;
|
||||
List<ClusterMeshRenderer> list2;
|
||||
while (list2 != 0)
|
||||
{
|
||||
}
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
if (array2[0] != 0)
|
||||
{
|
||||
uint num6;
|
||||
int num7;
|
||||
num6 -= (uint)num7;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B33 RID: 27443 RVA: 0x0017C3F8 File Offset: 0x0017A5F8
|
||||
[Token(Token = "0x6006B33")]
|
||||
[Address(RVA = "0x1461C90", Offset = "0x1460A90", VA = "0x181461C90")]
|
||||
public void AddClusterMeshRenderers(List<ClusterMeshRenderer> newClusters, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
this.worldClusterMeshRenderers[(int)layer].AddRange(newClusters);
|
||||
}
|
||||
|
||||
// Token: 0x06006B34 RID: 27444 RVA: 0x0017C420 File Offset: 0x0017A620
|
||||
[Token(Token = "0x6006B34")]
|
||||
[Address(RVA = "0x1461FC0", Offset = "0x1460DC0", VA = "0x181461FC0")]
|
||||
public List<ClusterMeshRenderer> GenerateMeshRenderers(List<IClusterLODComponent> components, Transform root, ClusterLODManager.RenderLayer layer, bool dynamic)
|
||||
{
|
||||
List<ClusterMeshRenderer> list;
|
||||
int num7;
|
||||
do
|
||||
{
|
||||
list = new List();
|
||||
ClusterLODConfig clusterLODConfig = this.<Config>k__BackingField;
|
||||
ClusterLODConfig.LODSettings near = clusterLODConfig.near;
|
||||
int maxNumVertsInCluster = near.maxNumVertsInCluster;
|
||||
float maxRadiusOfCluster = near.maxRadiusOfCluster;
|
||||
int minNumObjectPerCluster = clusterLODConfig.minNumObjectPerCluster;
|
||||
float distributeVSminimize = clusterLODConfig.distributeVSminimize;
|
||||
ClusterTreeGenerator clusterTreeGenerator;
|
||||
clusterTreeGenerator.minNumVerts = clusterTreeGenerator;
|
||||
clusterTreeGenerator.maxNumVerts = maxNumVertsInCluster;
|
||||
clusterTreeGenerator.maxRadius = maxRadiusOfCluster;
|
||||
clusterTreeGenerator.minNumObjectPerCluster = minNumObjectPerCluster;
|
||||
clusterTreeGenerator.distributeVSminimize = distributeVSminimize;
|
||||
ClusterNode clusterNode;
|
||||
clusterNode.parent = (ulong)0L;
|
||||
clusterNode.components = components;
|
||||
int num = 0;
|
||||
int num2 = 0;
|
||||
int vertexCount = ClusterUtil.GetVertexCount(components, (NPBPPKDLKDN)num2);
|
||||
clusterNode.vertexCount = vertexCount;
|
||||
List<ClusterNode> list2 = new List();
|
||||
ClusterTree clusterTree;
|
||||
clusterTree.Nodes = list2;
|
||||
int num3 = 0;
|
||||
clusterTree.FieldGetter(num3, num, layer);
|
||||
clusterTree.<Root>k__BackingField = num3;
|
||||
clusterTree.Nodes.Add(num3);
|
||||
clusterTreeGenerator.<Tree>k__BackingField = clusterTree;
|
||||
Stack<ClusterNode> stack = new Stack();
|
||||
clusterTreeGenerator.unProcessedClusters = stack;
|
||||
ClusterNode <Root>k__BackingField = clusterTreeGenerator.<Tree>k__BackingField.<Root>k__BackingField;
|
||||
stack.Push(<Root>k__BackingField);
|
||||
ClusterNode clusterNode2 = clusterTreeGenerator.unProcessedClusters.Pop();
|
||||
int num4 = 0;
|
||||
bool flag = clusterTreeGenerator.SplitCluster(clusterNode2);
|
||||
Stack<ClusterNode> unProcessedClusters = clusterTreeGenerator.unProcessedClusters;
|
||||
ClusterLODConfig.LODSettings far = this.<Config>k__BackingField.far;
|
||||
int minNumVertsInCluster = far.minNumVertsInCluster;
|
||||
int maxNumVertsInCluster2 = far.maxNumVertsInCluster;
|
||||
float maxRadiusOfCluster2 = far.maxRadiusOfCluster;
|
||||
int num5 = 0;
|
||||
ClusterMeshGenerator clusterMeshGenerator;
|
||||
clusterMeshGenerator.FieldGetter(num5, num4, layer);
|
||||
clusterMeshGenerator.minNumVerts = minNumVertsInCluster;
|
||||
clusterMeshGenerator.maxNumVerts = maxNumVertsInCluster2;
|
||||
clusterMeshGenerator.maxDiameterSq = maxRadiusOfCluster2;
|
||||
ClusterTree <Tree>k__BackingField = clusterTreeGenerator.<Tree>k__BackingField;
|
||||
List<ClusterMesh> list3 = new List();
|
||||
clusterMeshGenerator.<Meshes>k__BackingField = list3;
|
||||
ClusterNode <Root>k__BackingField2 = <Tree>k__BackingField.<Root>k__BackingField;
|
||||
int num6 = clusterMeshGenerator.UpdateVertexCount(<Root>k__BackingField2);
|
||||
ClusterNode <Root>k__BackingField3 = <Tree>k__BackingField.<Root>k__BackingField;
|
||||
clusterMeshGenerator.CreateClusterMeshInstances(<Root>k__BackingField3);
|
||||
List<ClusterMesh> <Meshes>k__BackingField = clusterMeshGenerator.<Meshes>k__BackingField;
|
||||
num7 = 0;
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
ClusterMeshRenderer clusterMeshRenderer = this.clusterMeshRendererPrefab;
|
||||
MeshFilter meshFilter = this.clusterPrefab;
|
||||
ClusterMeshRenderer clusterMeshRenderer2;
|
||||
MeshRenderer component = clusterMeshRenderer2.GetComponent<MeshRenderer>();
|
||||
Material meshMaterial = ClusterLODManager._instance.GetMeshMaterial();
|
||||
component.SetMaterial(meshMaterial);
|
||||
clusterMeshRenderer2.<Dynamic>k__BackingField = meshMaterial != null;
|
||||
clusterMeshRenderer2.Init(num7, meshFilter);
|
||||
clusterMeshRenderer2.GenerateLOD();
|
||||
bool flag3;
|
||||
if (flag3)
|
||||
{
|
||||
}
|
||||
if (num7 != 0)
|
||||
{
|
||||
goto IL_221;
|
||||
}
|
||||
while ((ulong)((uint)(-1)) == (ulong)(-1L))
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
while (num7 != 0);
|
||||
return list;
|
||||
IL_221:
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B35 RID: 27445 RVA: 0x0017C674 File Offset: 0x0017A874
|
||||
[Token(Token = "0x6006B35")]
|
||||
[Address(RVA = "0x1462900", Offset = "0x1461700", VA = "0x181462900")]
|
||||
public ClusterLODManager.RenderLayer GetRenderLayer(Vector3 extents)
|
||||
{
|
||||
float sqrMagnitude = extents.sqrMagnitude;
|
||||
float maxRadiusForDetailObjects = this.<Config>k__BackingField.maxRadiusForDetailObjects;
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B36 RID: 27446 RVA: 0x0017C69C File Offset: 0x0017A89C
|
||||
[Token(Token = "0x6006B36")]
|
||||
[Address(RVA = "0x1462EF0", Offset = "0x1461CF0", VA = "0x181462EF0")]
|
||||
public void RegisterShapeContainer(ShapeContainer newShapeContainer)
|
||||
{
|
||||
this.newShapeContainers.Add(newShapeContainer);
|
||||
}
|
||||
|
||||
// Token: 0x06006B37 RID: 27447 RVA: 0x0017C6BC File Offset: 0x0017A8BC
|
||||
[Token(Token = "0x6006B37")]
|
||||
[Address(RVA = "0x14639A0", Offset = "0x14627A0", VA = "0x1814639A0")]
|
||||
public bool TryDeRegisterShapeContainer(ShapeContainer newShapeContainer)
|
||||
{
|
||||
return this.newShapeContainers.Remove(newShapeContainer);
|
||||
}
|
||||
|
||||
// Token: 0x06006B38 RID: 27448 RVA: 0x0017C6DC File Offset: 0x0017A8DC
|
||||
[Token(Token = "0x6006B38")]
|
||||
[Address(RVA = "0x1462E90", Offset = "0x1461C90", VA = "0x181462E90")]
|
||||
public void RegisterComponent(IClusterLODComponent newComponent)
|
||||
{
|
||||
this.newAddedStaticComponents.Add(newComponent);
|
||||
}
|
||||
|
||||
// Token: 0x06006B39 RID: 27449 RVA: 0x0017C6FC File Offset: 0x0017A8FC
|
||||
[Token(Token = "0x6006B39")]
|
||||
[Address(RVA = "0x1461C00", Offset = "0x1460A00", VA = "0x181461C00")]
|
||||
private void AddClusterMeshClusterInfo(ClusterMesh.ClusterInfo info, int layer)
|
||||
{
|
||||
this.clusterInfos[layer].Add(info);
|
||||
}
|
||||
|
||||
// Token: 0x06006B3A RID: 27450 RVA: 0x0017C724 File Offset: 0x0017A924
|
||||
[Token(Token = "0x6006B3A")]
|
||||
[Address(RVA = "0x1462F50", Offset = "0x1461D50", VA = "0x181462F50")]
|
||||
public void RemoveClusterMeshClusterInfo(ClusterMesh.ClusterInfo info)
|
||||
{
|
||||
int num = 0;
|
||||
int num2 = this.clusterInfos[num].IndexOf(info);
|
||||
this.clusterInfos[num].RemoveAt(num2);
|
||||
num++;
|
||||
}
|
||||
|
||||
// Token: 0x06006B3B RID: 27451 RVA: 0x0017C764 File Offset: 0x0017A964
|
||||
[Token(Token = "0x6006B3B")]
|
||||
[Address(RVA = "0x1463450", Offset = "0x1462250", VA = "0x181463450")]
|
||||
private void SortClusterInfos(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
List<ClusterMesh.ClusterInfo> list = this.clusterInfos[(int)layer];
|
||||
Comparison<ClusterMesh.ClusterInfo> <>9__53_ = ClusterLODManager.<>c.<>9__53_0;
|
||||
if (<>9__53_ == 0)
|
||||
{
|
||||
ClusterLODManager.<>c.<>9__53_0 = delegate(ClusterMesh.ClusterInfo a, ClusterMesh.ClusterInfo b)
|
||||
{
|
||||
int num;
|
||||
return num;
|
||||
};
|
||||
}
|
||||
list.Sort(<>9__53_);
|
||||
}
|
||||
|
||||
// Token: 0x06006B3C RID: 27452 RVA: 0x0017C7AC File Offset: 0x0017A9AC
|
||||
[Token(Token = "0x6006B3C")]
|
||||
[Address(RVA = "0x1463A00", Offset = "0x1462800", VA = "0x181463A00")]
|
||||
private void UpdateClusterDistances(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<ClusterMeshRenderer> list = this.worldClusterMeshRenderers[(int)layer];
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006B3D RID: 27453 RVA: 0x0017C7E0 File Offset: 0x0017A9E0
|
||||
[Token(Token = "0x6006B3D")]
|
||||
[Address(RVA = "0x1461D10", Offset = "0x1460B10", VA = "0x181461D10")]
|
||||
private IEnumerator AssignLODs()
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006B3D)
|
||||
|
||||
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Collections.IEnumerator ClusterLOD.ClusterLODManager::AssignLODs()
|
||||
|
||||
---> System.Exception: Basic block has to end with unconditional control flow.
|
||||
{
|
||||
Block_0:
|
||||
call:void('<AssignLODs>d__55'::System.IDisposable.Dispose, ldloc:'<AssignLODs>d__55'(var_0))
|
||||
stfld:int32('<AssignLODs>d__55'::<>1__state, ldloc:'<AssignLODs>d__55'(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
|
||||
stfld:ClusterLODManager('<AssignLODs>d__55'::<>4__this, ldloc:'<AssignLODs>d__55'(var_0), ldloc:ClusterLODManager(this))
|
||||
}
|
||||
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
||||
--- End of inner exception stack trace ---
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
||||
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// Token: 0x06006B3E RID: 27454 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B3E")]
|
||||
[Address(RVA = "0x1463E00", Offset = "0x1462C00", VA = "0x181463E00")]
|
||||
private int UpdateLodRequest(int index, int budget, List<ClusterMesh.ClusterInfo> clusters, byte lod, ref int numVertsToSpare, float minDist = 0f)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B3F RID: 27455 RVA: 0x0017C804 File Offset: 0x0017AA04
|
||||
[Token(Token = "0x6006B3F")]
|
||||
[Address(RVA = "0x1463030", Offset = "0x1461E30", VA = "0x181463030")]
|
||||
public void Remove(IClusterLODComponent component)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
if (num >= 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
bool flag2;
|
||||
while (!flag2)
|
||||
{
|
||||
}
|
||||
bool flag3;
|
||||
while (!flag3)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
||||
{
|
||||
}
|
||||
num++;
|
||||
}
|
||||
|
||||
// Token: 0x06006B40 RID: 27456 RVA: 0x0017C854 File Offset: 0x0017AA54
|
||||
[Token(Token = "0x6006B40")]
|
||||
[Address(RVA = "0x1463410", Offset = "0x1462210", VA = "0x181463410")]
|
||||
public bool ShouldUpdateDetailMeshes()
|
||||
{
|
||||
ClusterLODConfig.LODSettings near = this.<Config>k__BackingField.near;
|
||||
float maxSubDivideEdgeSize = near.maxSubDivideEdgeSize;
|
||||
int num = 0;
|
||||
if (maxSubDivideEdgeSize <= (float)num)
|
||||
{
|
||||
}
|
||||
float maxSubDivideDistance = near.maxSubDivideDistance;
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B41 RID: 27457 RVA: 0x0017C88C File Offset: 0x0017AA8C
|
||||
[Token(Token = "0x6006B41")]
|
||||
[Address(RVA = "0x1462E80", Offset = "0x1461C80", VA = "0x181462E80")]
|
||||
public void RegisterAdditionalVertsChange(int change)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06006B42 RID: 27458 RVA: 0x0017C89C File Offset: 0x0017AA9C
|
||||
[Token(Token = "0x6006B42")]
|
||||
[Address(RVA = "0x1462860", Offset = "0x1461660", VA = "0x181462860")]
|
||||
public Material GetMeshMaterial()
|
||||
{
|
||||
Material material = this.sharedMeshMaterial;
|
||||
int num = 0;
|
||||
if (material == num)
|
||||
{
|
||||
Material material2 = EOKPFJPCGMK.OAEGHKNCLCN(ACBDPBHGKJL.Box);
|
||||
this.sharedMeshMaterial = material2;
|
||||
}
|
||||
return this.sharedMeshMaterial;
|
||||
}
|
||||
|
||||
// Token: 0x06006B43 RID: 27459 RVA: 0x0017C8D0 File Offset: 0x0017AAD0
|
||||
[Token(Token = "0x6006B43")]
|
||||
[Address(RVA = "0x1462820", Offset = "0x1461620", VA = "0x181462820")]
|
||||
public int GetMaxNumActiveLOD0Verts()
|
||||
{
|
||||
return this.<Config>k__BackingField.maxDynamicNearVerts;
|
||||
}
|
||||
|
||||
// Token: 0x06006B44 RID: 27460 RVA: 0x0017C8F0 File Offset: 0x0017AAF0
|
||||
[Token(Token = "0x6006B44")]
|
||||
[Address(RVA = "0x1463F40", Offset = "0x1462D40", VA = "0x181463F40")]
|
||||
public ClusterLODManager()
|
||||
{
|
||||
ClusterMeshAssetCache clusterMeshAssetCache = new ClusterMeshAssetCache();
|
||||
Queue<ClusterMesh.ClusterInfo> queue = new Queue();
|
||||
clusterMeshAssetCache.createQueue = queue;
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = new CreateMeshFromClusterJob();
|
||||
PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO();
|
||||
createMeshFromClusterJob.sharedResultMesh = pcikhfeihgo;
|
||||
OCCMLFOBCEM occmlfobcem = new OCCMLFOBCEM();
|
||||
createMeshFromClusterJob.optimizationData = occmlfobcem;
|
||||
clusterMeshAssetCache.createMeshFromClusterJob = createMeshFromClusterJob;
|
||||
List<ClusterMesh.ClusterInfo> list = new List();
|
||||
clusterMeshAssetCache.activeClusters = list;
|
||||
this.ClusterMeshAssetCache = clusterMeshAssetCache;
|
||||
List<IClusterLODComponent> list2 = new List();
|
||||
this.newAddedStaticComponents = list2;
|
||||
List<IClusterLODComponent> list3 = new List();
|
||||
this.newAddedWorldComponents = list3;
|
||||
List<IClusterLODComponent> list4 = new List();
|
||||
this.newAddedDetailComponents = list4;
|
||||
List<ClusterMeshRenderer>[] array = new List<ClusterMeshRenderer>[3];
|
||||
this.worldClusterMeshRenderers = array;
|
||||
List<ClusterMesh.ClusterInfo>[] array2 = new List<ClusterMesh.ClusterInfo>[3];
|
||||
this.clusterInfos = array2;
|
||||
List<ShapeContainer> list5 = new List();
|
||||
this.newShapeContainers = list5;
|
||||
base..ctor();
|
||||
}
|
||||
|
||||
// Token: 0x06006B45 RID: 27461 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
// Note: this type is marked as 'beforefieldinit'.
|
||||
[Token(Token = "0x6006B45")]
|
||||
[Address(RVA = "0x402080", Offset = "0x400E80", VA = "0x180402080")]
|
||||
static ClusterLODManager()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x04004789 RID: 18313
|
||||
[Token(Token = "0x4004789")]
|
||||
public const int NUM_RENDER_LAYERS = 3;
|
||||
|
||||
// Token: 0x0400478B RID: 18315
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x400478B")]
|
||||
public ClusterMeshRenderer clusterMeshRendererPrefab;
|
||||
|
||||
// Token: 0x0400478C RID: 18316
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x400478C")]
|
||||
public MeshFilter clusterPrefab;
|
||||
|
||||
// Token: 0x0400478D RID: 18317
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x400478D")]
|
||||
private GameObject detailRoot;
|
||||
|
||||
// Token: 0x0400478E RID: 18318
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x400478E")]
|
||||
private GameObject worldRoot;
|
||||
|
||||
// Token: 0x0400478F RID: 18319
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x400478F")]
|
||||
public ClusterMeshAssetCache ClusterMeshAssetCache;
|
||||
|
||||
// Token: 0x04004790 RID: 18320
|
||||
[FieldOffset(Offset = "0x48")]
|
||||
[Token(Token = "0x4004790")]
|
||||
public List<IClusterLODComponent> newAddedStaticComponents;
|
||||
|
||||
// Token: 0x04004791 RID: 18321
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x4004791")]
|
||||
public List<IClusterLODComponent> newAddedWorldComponents;
|
||||
|
||||
// Token: 0x04004792 RID: 18322
|
||||
[FieldOffset(Offset = "0x58")]
|
||||
[Token(Token = "0x4004792")]
|
||||
public List<IClusterLODComponent> newAddedDetailComponents;
|
||||
|
||||
// Token: 0x04004793 RID: 18323
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x4004793")]
|
||||
private int clusterIndex;
|
||||
|
||||
// Token: 0x04004795 RID: 18325
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x4004795")]
|
||||
public ClusterLODManager.State CurrentState;
|
||||
|
||||
// Token: 0x04004796 RID: 18326
|
||||
[FieldOffset(Offset = "0x78")]
|
||||
[Token(Token = "0x4004796")]
|
||||
public List<ClusterMeshRenderer>[] worldClusterMeshRenderers;
|
||||
|
||||
// Token: 0x04004797 RID: 18327
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x4004797")]
|
||||
private List<ClusterMesh.ClusterInfo>[] clusterInfos;
|
||||
|
||||
// Token: 0x04004798 RID: 18328
|
||||
[FieldOffset(Offset = "0x88")]
|
||||
[Token(Token = "0x4004798")]
|
||||
private Coroutine createWorldCoroutine;
|
||||
|
||||
// Token: 0x04004799 RID: 18329
|
||||
[FieldOffset(Offset = "0x90")]
|
||||
[Token(Token = "0x4004799")]
|
||||
private Coroutine assignLODsCoroutine;
|
||||
|
||||
// Token: 0x0400479A RID: 18330
|
||||
[FieldOffset(Offset = "0x98")]
|
||||
[Token(Token = "0x400479A")]
|
||||
public int estimatedNumWorldLODVerts;
|
||||
|
||||
// Token: 0x0400479B RID: 18331
|
||||
[FieldOffset(Offset = "0x9C")]
|
||||
[Token(Token = "0x400479B")]
|
||||
public int numWorldLODVerts;
|
||||
|
||||
// Token: 0x0400479C RID: 18332
|
||||
[Token(Token = "0x400479C")]
|
||||
private static ClusterLODManager _instance;
|
||||
|
||||
// Token: 0x0400479D RID: 18333
|
||||
[FieldOffset(Offset = "0xA0")]
|
||||
[Token(Token = "0x400479D")]
|
||||
private List<ShapeContainer> newShapeContainers;
|
||||
|
||||
// Token: 0x0400479E RID: 18334
|
||||
[FieldOffset(Offset = "0xA8")]
|
||||
[Token(Token = "0x400479E")]
|
||||
public int numAdditionalVerts;
|
||||
|
||||
// Token: 0x0400479F RID: 18335
|
||||
[FieldOffset(Offset = "0xB0")]
|
||||
[Token(Token = "0x400479F")]
|
||||
private Material sharedMeshMaterial;
|
||||
|
||||
// Token: 0x02001273 RID: 4723
|
||||
[Token(Token = "0x2001273")]
|
||||
public enum RenderLayer
|
||||
{
|
||||
// Token: 0x040047A1 RID: 18337
|
||||
[Token(Token = "0x40047A1")]
|
||||
World,
|
||||
// Token: 0x040047A2 RID: 18338
|
||||
[Token(Token = "0x40047A2")]
|
||||
Detail,
|
||||
// Token: 0x040047A3 RID: 18339
|
||||
[Token(Token = "0x40047A3")]
|
||||
Dynamic,
|
||||
// Token: 0x040047A4 RID: 18340
|
||||
[Token(Token = "0x40047A4")]
|
||||
NumLayers
|
||||
}
|
||||
|
||||
// Token: 0x02001274 RID: 4724
|
||||
[Token(Token = "0x2001274")]
|
||||
public enum State
|
||||
{
|
||||
// Token: 0x040047A6 RID: 18342
|
||||
[Token(Token = "0x40047A6")]
|
||||
Waiting,
|
||||
// Token: 0x040047A7 RID: 18343
|
||||
[Token(Token = "0x40047A7")]
|
||||
Collecting,
|
||||
// Token: 0x040047A8 RID: 18344
|
||||
[Token(Token = "0x40047A8")]
|
||||
Generating,
|
||||
// Token: 0x040047A9 RID: 18345
|
||||
[Token(Token = "0x40047A9")]
|
||||
Running
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001278 RID: 4728
|
||||
[Token(Token = "0x2001278")]
|
||||
public class ClusterLODManagerEditorDebug : MonoBehaviour
|
||||
{
|
||||
// Token: 0x06006B58 RID: 27480 RVA: 0x0017D024 File Offset: 0x0017B224
|
||||
[Token(Token = "0x6006B58")]
|
||||
[Address(RVA = "0x74EA40", Offset = "0x74D840", VA = "0x18074EA40")]
|
||||
public ClusterLODManagerEditorDebug()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001279 RID: 4729
|
||||
[Token(Token = "0x2001279")]
|
||||
[BurstCompile]
|
||||
public struct ClusterLODMergeVertsJob : IJob
|
||||
{
|
||||
// Token: 0x06006B59 RID: 27481 RVA: 0x0017D038 File Offset: 0x0017B238
|
||||
[Token(Token = "0x6006B59")]
|
||||
[Address(RVA = "0x1464B50", Offset = "0x1463950", VA = "0x181464B50")]
|
||||
public ClusterLODMergeVertsJob(PCIKHFEIHGO mesh, NativeList<float3> origVerts, NativeMultiHashMap<int, int> vertexMap, NativeArray<int> indexRemap, Vector3 centerPos, float resolution)
|
||||
{
|
||||
NativeList<float3> ddpnlakckdp = mesh.DDPNLAKCKDP;
|
||||
this.verts = ddpnlakckdp;
|
||||
NativeArray<float3> cdpiecocian = mesh.CDPIECOCIAN;
|
||||
this.normals = cdpiecocian;
|
||||
NativeArray<float4> nmfapcbmggf = mesh.NMFAPCBMGGF;
|
||||
this.tangents = nmfapcbmggf;
|
||||
NativeArray<float2> maeaklfbpmo = mesh.MAEAKLFBPMO;
|
||||
this.UVs = maeaklfbpmo;
|
||||
NativeArray<float4> pjnfmocjcal = mesh.PJNFMOCJCAL;
|
||||
this.materialIndices = pjnfmocjcal;
|
||||
NativeList<int> elflbeckfef = mesh.ELFLBECKFEF;
|
||||
this.indices = elflbeckfef;
|
||||
float3 @float;
|
||||
float z = @float.z;
|
||||
this.resolution = (float)0;
|
||||
this.centerPos.z = z;
|
||||
}
|
||||
|
||||
// Token: 0x06006B5A RID: 27482 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B5A")]
|
||||
[Address(RVA = "0x1464860", Offset = "0x1463660", VA = "0x181464860")]
|
||||
private int GetKey(float3 pos)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B5B RID: 27483 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B5B")]
|
||||
[Address(RVA = "0x14648C0", Offset = "0x14636C0", VA = "0x1814648C0")]
|
||||
private int GetMatch(int i, int key)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B5C RID: 27484 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B5C")]
|
||||
[Address(RVA = "0x1464470", Offset = "0x1463270", VA = "0x181464470", Slot = "4")]
|
||||
public void Execute()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x040047B6 RID: 18358
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x40047B6")]
|
||||
private NativeList<float3> verts;
|
||||
|
||||
// Token: 0x040047B7 RID: 18359
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047B7")]
|
||||
private NativeArray<float3> normals;
|
||||
|
||||
// Token: 0x040047B8 RID: 18360
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x40047B8")]
|
||||
private NativeArray<float4> tangents;
|
||||
|
||||
// Token: 0x040047B9 RID: 18361
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x40047B9")]
|
||||
private NativeArray<float2> UVs;
|
||||
|
||||
// Token: 0x040047BA RID: 18362
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x40047BA")]
|
||||
private NativeArray<float4> materialIndices;
|
||||
|
||||
// Token: 0x040047BB RID: 18363
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x40047BB")]
|
||||
private NativeList<int> indices;
|
||||
|
||||
// Token: 0x040047BC RID: 18364
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x40047BC")]
|
||||
[ReadOnly]
|
||||
private NativeList<float3> origVerts;
|
||||
|
||||
// Token: 0x040047BD RID: 18365
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x40047BD")]
|
||||
[ReadOnly]
|
||||
private float3 centerPos;
|
||||
|
||||
// Token: 0x040047BE RID: 18366
|
||||
[FieldOffset(Offset = "0x7C")]
|
||||
[Token(Token = "0x40047BE")]
|
||||
[ReadOnly]
|
||||
private float resolution;
|
||||
|
||||
// Token: 0x040047BF RID: 18367
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x40047BF")]
|
||||
private NativeMultiHashMap<int, int> vertexMap;
|
||||
|
||||
// Token: 0x040047C0 RID: 18368
|
||||
[FieldOffset(Offset = "0x90")]
|
||||
[Token(Token = "0x40047C0")]
|
||||
private NativeArray<int> indexRemap;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,496 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200127D RID: 4733
|
||||
[Token(Token = "0x200127D")]
|
||||
public class ClusterMesh : IDisposable
|
||||
{
|
||||
// Token: 0x1700115C RID: 4444
|
||||
// (get) Token: 0x06006B6C RID: 27500 RVA: 0x0017D3B8 File Offset: 0x0017B5B8
|
||||
// (set) Token: 0x06006B6D RID: 27501 RVA: 0x0017D3CC File Offset: 0x0017B5CC
|
||||
[Token(Token = "0x1700115C")]
|
||||
public Mesh Mesh
|
||||
{
|
||||
[Token(Token = "0x6006B6C")]
|
||||
[Address(RVA = "0x3F63E0", Offset = "0x3F51E0", VA = "0x1803F63E0")]
|
||||
get;
|
||||
[Token(Token = "0x6006B6D")]
|
||||
[Address(RVA = "0x409C60", Offset = "0x408A60", VA = "0x180409C60")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x1700115D RID: 4445
|
||||
// (get) Token: 0x06006B6E RID: 27502 RVA: 0x0017D3E0 File Offset: 0x0017B5E0
|
||||
// (set) Token: 0x06006B6F RID: 27503 RVA: 0x0017D3F4 File Offset: 0x0017B5F4
|
||||
[Token(Token = "0x1700115D")]
|
||||
public bool Dirty
|
||||
{
|
||||
[Token(Token = "0x6006B6E")]
|
||||
[Address(RVA = "0x4363F0", Offset = "0x4351F0", VA = "0x1804363F0")]
|
||||
get;
|
||||
[Token(Token = "0x6006B6F")]
|
||||
[Address(RVA = "0x4366B0", Offset = "0x4354B0", VA = "0x1804366B0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x1700115E RID: 4446
|
||||
// (get) Token: 0x06006B70 RID: 27504 RVA: 0x0017D408 File Offset: 0x0017B608
|
||||
[Token(Token = "0x1700115E")]
|
||||
public int MaxNumLOD1Indices
|
||||
{
|
||||
[Token(Token = "0x6006B70")]
|
||||
[Address(RVA = "0x1469770", Offset = "0x1468570", VA = "0x181469770")]
|
||||
get
|
||||
{
|
||||
ClusterMeshUpdateJobData clusterMeshUpdateJobData = this.updateData;
|
||||
int num;
|
||||
return num;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B71 RID: 27505 RVA: 0x0017D424 File Offset: 0x0017B624
|
||||
[Token(Token = "0x6006B71")]
|
||||
[Address(RVA = "0x1468620", Offset = "0x1467420", VA = "0x181468620", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
OMCHJHPFBDN.KBFLHNONOHF(this.<Mesh>k__BackingField);
|
||||
this.<Mesh>k__BackingField = num;
|
||||
List<ClusterMesh.ClusterInfo> clusters = this.Clusters;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
this.Clusters.Clear();
|
||||
this.updateData.Dispose();
|
||||
}
|
||||
|
||||
// Token: 0x06006B72 RID: 27506 RVA: 0x0017D478 File Offset: 0x0017B678
|
||||
[Token(Token = "0x6006B72")]
|
||||
[Address(RVA = "0x1468FE0", Offset = "0x1467DE0", VA = "0x181468FE0")]
|
||||
public int GetLod(int clusterIdx)
|
||||
{
|
||||
NativeArray<int> componentLod = this.updateData.componentLod;
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B73 RID: 27507 RVA: 0x0017D498 File Offset: 0x0017B698
|
||||
[Token(Token = "0x6006B73")]
|
||||
[Address(RVA = "0x14684D0", Offset = "0x14672D0", VA = "0x1814684D0")]
|
||||
public void AddClusterNode(ClusterNode ownerNode)
|
||||
{
|
||||
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 = ownerNode.components;
|
||||
clusterInfo.components = components;
|
||||
Bounds bounds = ownerNode.bounds;
|
||||
clusterInfo.bounds = bounds;
|
||||
clusterInfo.requestedLod = (byte)((ulong)1L);
|
||||
this.Clusters.Add(clusterInfo);
|
||||
int num = this.componentCount;
|
||||
int num2 = clusterInfo.components._size;
|
||||
num2 += num;
|
||||
this.componentCount = num2;
|
||||
}
|
||||
|
||||
// Token: 0x06006B74 RID: 27508 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B74")]
|
||||
[Address(RVA = "0x1468910", Offset = "0x1467710", VA = "0x181468910")]
|
||||
public void GenerateLODMesh(Transform rootTransform, bool dynamicCluster)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B75 RID: 27509 RVA: 0x0017D534 File Offset: 0x0017B734
|
||||
[Token(Token = "0x6006B75")]
|
||||
[Address(RVA = "0x1468760", Offset = "0x1467560", VA = "0x181468760")]
|
||||
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;
|
||||
if (setOrigIndices)
|
||||
{
|
||||
NativeList<int> origIndices = clusterMeshUpdateJobData.origIndices;
|
||||
Mesh mesh3 = this.<Mesh>k__BackingField;
|
||||
}
|
||||
}
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B76 RID: 27510 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B76")]
|
||||
[Address(RVA = "0x1469290", Offset = "0x1468090", VA = "0x181469290")]
|
||||
public void UpdateMesh(Transform root, bool dynamicCluster)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B77 RID: 27511 RVA: 0x0017D5A4 File Offset: 0x0017B7A4
|
||||
[Token(Token = "0x6006B77")]
|
||||
[Address(RVA = "0x1469010", Offset = "0x1467E10", VA = "0x181469010")]
|
||||
public bool Remove(IClusterLODComponent component)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<ClusterMesh.ClusterInfo> clusters = this.Clusters;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
int num2;
|
||||
while (num2 == -1)
|
||||
{
|
||||
}
|
||||
this.updateData.<IsActive>k__BackingField = false;
|
||||
this.<Dirty>k__BackingField = true;
|
||||
int num3 = this.componentCount;
|
||||
this.componentCount = num3;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
if (num != -1)
|
||||
{
|
||||
}
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B78 RID: 27512 RVA: 0x0017D62C File Offset: 0x0017B82C
|
||||
[Token(Token = "0x6006B78")]
|
||||
[Address(RVA = "0x14696F0", Offset = "0x14684F0", VA = "0x1814696F0")]
|
||||
public ClusterMesh()
|
||||
{
|
||||
List<ClusterMesh.ClusterInfo> list = new List();
|
||||
this.Clusters = list;
|
||||
ClusterMeshUpdateJobData clusterMeshUpdateJobData = new ClusterMeshUpdateJobData();
|
||||
this.updateData = clusterMeshUpdateJobData;
|
||||
base..ctor();
|
||||
}
|
||||
|
||||
// Token: 0x040047DA RID: 18394
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047DA")]
|
||||
public Bounds bounds;
|
||||
|
||||
// Token: 0x040047DC RID: 18396
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x40047DC")]
|
||||
public List<ClusterMesh.ClusterInfo> Clusters;
|
||||
|
||||
// Token: 0x040047DD RID: 18397
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x40047DD")]
|
||||
public ClusterMeshUpdateJobData updateData;
|
||||
|
||||
// Token: 0x040047DF RID: 18399
|
||||
[FieldOffset(Offset = "0x48")]
|
||||
[Token(Token = "0x40047DF")]
|
||||
public ClusterMeshRenderer owner;
|
||||
|
||||
// Token: 0x040047E0 RID: 18400
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x40047E0")]
|
||||
private int componentCount;
|
||||
|
||||
// Token: 0x0200127E RID: 4734
|
||||
[Token(Token = "0x200127E")]
|
||||
public class ClusterInfo : IDisposable
|
||||
{
|
||||
// Token: 0x06006B79 RID: 27513 RVA: 0x0017D65C File Offset: 0x0017B85C
|
||||
[Token(Token = "0x6006B79")]
|
||||
[Address(RVA = "0x1461730", Offset = "0x1460530", VA = "0x181461730")]
|
||||
public void GetRequiredCounts(NPBPPKDLKDN lod, out int vertexCount, out int indexCount)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
vertexCount.m_value = num;
|
||||
indexCount.m_value = num;
|
||||
List<IClusterLODComponent> list = this.components;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
vertexCount.m_value = (flag ? 1 : 0);
|
||||
uint num2;
|
||||
if (num < (int)num2)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
}
|
||||
indexCount.m_value = num;
|
||||
int num3 = (int)(lod + (int)lod);
|
||||
num++;
|
||||
num += 19;
|
||||
num3 += num3;
|
||||
num += 2;
|
||||
num += 19;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006B7A RID: 27514 RVA: 0x0017D6D0 File Offset: 0x0017B8D0
|
||||
[Token(Token = "0x6006B7A")]
|
||||
[Address(RVA = "0x1460FC0", Offset = "0x145FDC0", VA = "0x181460FC0")]
|
||||
public JobHandle AppendToMesh(NPBPPKDLKDN lod, PCIKHFEIHGO destMesh, int startVertex, int startIndex, Transform rootTransform, OCCMLFOBCEM optimizationData, NativeList<CJJFNIHNLBD> occlusion)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
uint num2;
|
||||
if (num < (int)num2)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
}
|
||||
uint num3;
|
||||
if (num < (int)num3)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
}
|
||||
num += num;
|
||||
num++;
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
}
|
||||
int num4 = 0;
|
||||
JobHandle.ScheduleBatchedJobs();
|
||||
num4 += num4;
|
||||
num4 += num4;
|
||||
num4 += num4;
|
||||
num4 += num4;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B7B RID: 27515 RVA: 0x0017D750 File Offset: 0x0017B950
|
||||
[Token(Token = "0x6006B7B")]
|
||||
[Address(RVA = "0x1460CC0", Offset = "0x145FAC0", VA = "0x181460CC0")]
|
||||
public void AppendOcclusionData(NativeList<CJJFNIHNLBD> occlusion, Transform rootTransform)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<IClusterLODComponent> list = this.components;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
int num2 = 0;
|
||||
bool flag2;
|
||||
while (!flag2)
|
||||
{
|
||||
}
|
||||
occlusion.Add(num2);
|
||||
num2 += num2;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x1700115F RID: 4447
|
||||
// (get) Token: 0x06006B7C RID: 27516 RVA: 0x0017D794 File Offset: 0x0017B994
|
||||
[Token(Token = "0x1700115F")]
|
||||
public int ComponentCount
|
||||
{
|
||||
[Token(Token = "0x6006B7C")]
|
||||
[Address(RVA = "0x1461B30", Offset = "0x1460930", VA = "0x181461B30")]
|
||||
get
|
||||
{
|
||||
return this.components._size;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x17001160 RID: 4448
|
||||
// (get) Token: 0x06006B7D RID: 27517 RVA: 0x0017D7B4 File Offset: 0x0017B9B4
|
||||
// (set) Token: 0x06006B7E RID: 27518 RVA: 0x0017D7C8 File Offset: 0x0017B9C8
|
||||
[Token(Token = "0x17001160")]
|
||||
public Mesh RequestedMesh
|
||||
{
|
||||
[Token(Token = "0x6006B7D")]
|
||||
[Address(RVA = "0x3FA180", Offset = "0x3F8F80", VA = "0x1803FA180")]
|
||||
get;
|
||||
[Token(Token = "0x6006B7E")]
|
||||
[Address(RVA = "0x4437E0", Offset = "0x4425E0", VA = "0x1804437E0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001161 RID: 4449
|
||||
// (get) Token: 0x06006B7F RID: 27519 RVA: 0x0017D7DC File Offset: 0x0017B9DC
|
||||
// (set) Token: 0x06006B80 RID: 27520 RVA: 0x0017D7F0 File Offset: 0x0017B9F0
|
||||
[Token(Token = "0x17001161")]
|
||||
public Mesh ActiveMesh
|
||||
{
|
||||
[Token(Token = "0x6006B7F")]
|
||||
[Address(RVA = "0x3F63D0", Offset = "0x3F51D0", VA = "0x1803F63D0")]
|
||||
get;
|
||||
[Token(Token = "0x6006B80")]
|
||||
[Address(RVA = "0x5329E0", Offset = "0x5317E0", VA = "0x1805329E0")]
|
||||
set;
|
||||
}
|
||||
|
||||
// Token: 0x06006B81 RID: 27521 RVA: 0x0017D804 File Offset: 0x0017BA04
|
||||
[Token(Token = "0x6006B81")]
|
||||
[Address(RVA = "0x1461960", Offset = "0x1460760", VA = "0x181461960")]
|
||||
public void RequestNewMesh(Mesh mesh)
|
||||
{
|
||||
Mesh mesh2 = this.<RequestedMesh>k__BackingField;
|
||||
Mesh mesh3 = this.<ActiveMesh>k__BackingField;
|
||||
if (mesh2 != mesh3)
|
||||
{
|
||||
OMCHJHPFBDN.KBFLHNONOHF(this.<RequestedMesh>k__BackingField);
|
||||
}
|
||||
this.<RequestedMesh>k__BackingField = mesh;
|
||||
}
|
||||
|
||||
// Token: 0x06006B82 RID: 27522 RVA: 0x0017D83C File Offset: 0x0017BA3C
|
||||
[Token(Token = "0x6006B82")]
|
||||
[Address(RVA = "0x1461A00", Offset = "0x1460800", VA = "0x181461A00")]
|
||||
public void RequestRemoveMesh()
|
||||
{
|
||||
Mesh mesh = this.<RequestedMesh>k__BackingField;
|
||||
Mesh mesh2 = this.<ActiveMesh>k__BackingField;
|
||||
if (mesh != mesh2)
|
||||
{
|
||||
OMCHJHPFBDN.KBFLHNONOHF(this.<RequestedMesh>k__BackingField);
|
||||
}
|
||||
this.<RequestedMesh>k__BackingField = (ulong)0L;
|
||||
}
|
||||
|
||||
// Token: 0x06006B83 RID: 27523 RVA: 0x0017D878 File Offset: 0x0017BA78
|
||||
[Token(Token = "0x6006B83")]
|
||||
[Address(RVA = "0x1461660", Offset = "0x1460460", VA = "0x181461660", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
Mesh mesh = this.<RequestedMesh>k__BackingField;
|
||||
Mesh mesh2 = this.<ActiveMesh>k__BackingField;
|
||||
if (mesh != mesh2)
|
||||
{
|
||||
OMCHJHPFBDN.KBFLHNONOHF(this.<RequestedMesh>k__BackingField);
|
||||
}
|
||||
OMCHJHPFBDN.KBFLHNONOHF(this.<ActiveMesh>k__BackingField);
|
||||
PCIKHFEIHGO pcikhfeihgo = this.nativeMesh;
|
||||
int num = 0;
|
||||
this.<RequestedMesh>k__BackingField = num;
|
||||
this.<ActiveMesh>k__BackingField = num;
|
||||
pcikhfeihgo.Dispose();
|
||||
this.subdivideMeshData.Dispose();
|
||||
}
|
||||
|
||||
// Token: 0x06006B84 RID: 27524 RVA: 0x0017D8E4 File Offset: 0x0017BAE4
|
||||
[Token(Token = "0x6006B84")]
|
||||
[Address(RVA = "0x1461A90", Offset = "0x1460890", VA = "0x181461A90")]
|
||||
public ClusterInfo()
|
||||
{
|
||||
List<IClusterLODComponent> list = new List();
|
||||
this.components = list;
|
||||
PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO();
|
||||
this.nativeMesh = pcikhfeihgo;
|
||||
SubdivideMeshData subdivideMeshData = new SubdivideMeshData();
|
||||
this.subdivideMeshData = subdivideMeshData;
|
||||
base..ctor();
|
||||
}
|
||||
|
||||
// Token: 0x040047E1 RID: 18401
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047E1")]
|
||||
public Bounds bounds;
|
||||
|
||||
// Token: 0x040047E2 RID: 18402
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x40047E2")]
|
||||
public List<IClusterLODComponent> components;
|
||||
|
||||
// Token: 0x040047E5 RID: 18405
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x40047E5")]
|
||||
public Vector3 closestPos;
|
||||
|
||||
// Token: 0x040047E6 RID: 18406
|
||||
[FieldOffset(Offset = "0x4C")]
|
||||
[Token(Token = "0x40047E6")]
|
||||
public float closestDist;
|
||||
|
||||
// Token: 0x040047E7 RID: 18407
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x40047E7")]
|
||||
public byte requestedLod;
|
||||
|
||||
// Token: 0x040047E8 RID: 18408
|
||||
[FieldOffset(Offset = "0x54")]
|
||||
[Token(Token = "0x40047E8")]
|
||||
public Vector3 prevUpdatedEyePos;
|
||||
|
||||
// Token: 0x040047E9 RID: 18409
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x40047E9")]
|
||||
public int numLOD0Verts;
|
||||
|
||||
// Token: 0x040047EA RID: 18410
|
||||
[FieldOffset(Offset = "0x64")]
|
||||
[Token(Token = "0x40047EA")]
|
||||
public int numLOD1Verts;
|
||||
|
||||
// Token: 0x040047EB RID: 18411
|
||||
[FieldOffset(Offset = "0x68")]
|
||||
[Token(Token = "0x40047EB")]
|
||||
public int numAdditionalVerts;
|
||||
|
||||
// Token: 0x040047EC RID: 18412
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x40047EC")]
|
||||
public PCIKHFEIHGO nativeMesh;
|
||||
|
||||
// Token: 0x040047ED RID: 18413
|
||||
[FieldOffset(Offset = "0x78")]
|
||||
[Token(Token = "0x40047ED")]
|
||||
public SubdivideMeshData subdivideMeshData;
|
||||
|
||||
// Token: 0x040047EE RID: 18414
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x40047EE")]
|
||||
public Transform root;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Jobs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200127F RID: 4735
|
||||
[Token(Token = "0x200127F")]
|
||||
public class ClusterMeshAssetCache : IDisposable
|
||||
{
|
||||
// Token: 0x06006B85 RID: 27525 RVA: 0x0017D920 File Offset: 0x0017BB20
|
||||
[Token(Token = "0x6006B85")]
|
||||
[Address(RVA = "0x1464D90", Offset = "0x1463B90", VA = "0x181464D90", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = this.createMeshFromClusterJob;
|
||||
JobHandle <jobHandle>k__BackingField = createMeshFromClusterJob.<jobHandle>k__BackingField;
|
||||
createMeshFromClusterJob.sharedResultMesh.Dispose();
|
||||
createMeshFromClusterJob.optimizationData.Dispose();
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B86 RID: 27526 RVA: 0x0017D95C File Offset: 0x0017BB5C
|
||||
[Token(Token = "0x6006B86")]
|
||||
[Address(RVA = "0x1464D10", Offset = "0x1463B10", VA = "0x181464D10")]
|
||||
public void Clear()
|
||||
{
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = this.createMeshFromClusterJob;
|
||||
JobHandle <jobHandle>k__BackingField = createMeshFromClusterJob.<jobHandle>k__BackingField;
|
||||
createMeshFromClusterJob.<cluster>k__BackingField = (ulong)0L;
|
||||
this.createQueue.Clear();
|
||||
}
|
||||
|
||||
// Token: 0x06006B87 RID: 27527 RVA: 0x0017D994 File Offset: 0x0017BB94
|
||||
[Token(Token = "0x6006B87")]
|
||||
[Address(RVA = "0x1464C70", Offset = "0x1463A70", VA = "0x181464C70")]
|
||||
public void Add(ClusterMesh.ClusterInfo cluster, Transform root)
|
||||
{
|
||||
List<IClusterLODComponent> components = cluster.components;
|
||||
cluster.root = root;
|
||||
if (!this.createQueue.Contains(cluster))
|
||||
{
|
||||
this.createQueue.Enqueue(cluster);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B88 RID: 27528 RVA: 0x0017D9D0 File Offset: 0x0017BBD0
|
||||
[Token(Token = "0x6006B88")]
|
||||
[Address(RVA = "0x1465100", Offset = "0x1463F00", VA = "0x181465100")]
|
||||
public void Remove(ClusterMesh.ClusterInfo cluster)
|
||||
{
|
||||
if (this.createQueue.Contains(cluster))
|
||||
{
|
||||
Queue<ClusterMesh.ClusterInfo> queue = new Queue();
|
||||
ClusterMesh.ClusterInfo clusterInfo = this.createQueue.Dequeue();
|
||||
if (clusterInfo != cluster)
|
||||
{
|
||||
queue.Enqueue(clusterInfo);
|
||||
}
|
||||
Queue<ClusterMesh.ClusterInfo> queue2 = this.createQueue;
|
||||
this.createQueue = queue;
|
||||
}
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = this.createMeshFromClusterJob;
|
||||
ClusterMesh.ClusterInfo <cluster>k__BackingField = createMeshFromClusterJob.<cluster>k__BackingField;
|
||||
JobHandle <jobHandle>k__BackingField = createMeshFromClusterJob.<jobHandle>k__BackingField;
|
||||
createMeshFromClusterJob.<cluster>k__BackingField = (ulong)0L;
|
||||
if (this.activeClusters.Contains(cluster))
|
||||
{
|
||||
bool flag = this.activeClusters.Remove(cluster);
|
||||
int numLOD0Verts = cluster.numLOD0Verts;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B89 RID: 27529 RVA: 0x0017DA64 File Offset: 0x0017BC64
|
||||
[Token(Token = "0x6006B89")]
|
||||
[Address(RVA = "0x1464EA0", Offset = "0x1463CA0", VA = "0x181464EA0")]
|
||||
private ClusterMesh.ClusterInfo GetWorstActiveCluster()
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<ClusterMesh.ClusterInfo> list = this.activeClusters;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B8A RID: 27530 RVA: 0x0017DA90 File Offset: 0x0017BC90
|
||||
[Token(Token = "0x6006B8A")]
|
||||
[Address(RVA = "0x1464FD0", Offset = "0x1463DD0", VA = "0x181464FD0")]
|
||||
private bool IsClusterActive(ClusterMesh.ClusterInfo cluster)
|
||||
{
|
||||
return this.activeClusters.Contains(cluster);
|
||||
}
|
||||
|
||||
// Token: 0x06006B8B RID: 27531 RVA: 0x0017DAB0 File Offset: 0x0017BCB0
|
||||
[Token(Token = "0x6006B8B")]
|
||||
[Address(RVA = "0x1465070", Offset = "0x1463E70", VA = "0x181465070")]
|
||||
private bool RemoveActiveCluster(ClusterMesh.ClusterInfo cluster)
|
||||
{
|
||||
bool flag = this.activeClusters.Contains(cluster);
|
||||
if (!flag)
|
||||
{
|
||||
return flag;
|
||||
}
|
||||
bool flag2 = this.activeClusters.Remove(cluster);
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B8C RID: 27532 RVA: 0x0017DAE4 File Offset: 0x0017BCE4
|
||||
[Token(Token = "0x6006B8C")]
|
||||
[Address(RVA = "0x1464C10", Offset = "0x1463A10", VA = "0x181464C10")]
|
||||
private void AddActiveCluster(ClusterMesh.ClusterInfo cluster)
|
||||
{
|
||||
this.activeClusters.Add(cluster);
|
||||
int numLOD0Verts = cluster.numLOD0Verts;
|
||||
}
|
||||
|
||||
// Token: 0x06006B8D RID: 27533 RVA: 0x0017DB0C File Offset: 0x0017BD0C
|
||||
[Token(Token = "0x6006B8D")]
|
||||
[Address(RVA = "0x1465030", Offset = "0x1463E30", VA = "0x181465030")]
|
||||
public bool IsProcessing(ClusterMesh.ClusterInfo cluster)
|
||||
{
|
||||
ClusterMesh.ClusterInfo <cluster>k__BackingField = this.createMeshFromClusterJob.<cluster>k__BackingField;
|
||||
bool flag;
|
||||
return flag;
|
||||
}
|
||||
|
||||
// Token: 0x06006B8E RID: 27534 RVA: 0x0017DB30 File Offset: 0x0017BD30
|
||||
[Token(Token = "0x6006B8E")]
|
||||
[Address(RVA = "0x1465290", Offset = "0x1464090", VA = "0x181465290")]
|
||||
public bool Update()
|
||||
{
|
||||
ClusterMesh.ClusterInfo clusterInfo;
|
||||
ClusterMesh.ClusterInfo worstActiveCluster;
|
||||
do
|
||||
{
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = this.createMeshFromClusterJob;
|
||||
if (createMeshFromClusterJob.<cluster>k__BackingField > (ulong)0L)
|
||||
{
|
||||
if (!JobHandle.ScheduleBatchedJobsAndIsCompleted(createMeshFromClusterJob.<jobHandle>k__BackingField))
|
||||
{
|
||||
}
|
||||
ClusterMesh.ClusterInfo <cluster>k__BackingField = this.createMeshFromClusterJob.<cluster>k__BackingField;
|
||||
bool flag = this.RemoveActiveCluster(<cluster>k__BackingField);
|
||||
this.createMeshFromClusterJob.CreateMesh();
|
||||
this.activeClusters.Add(<cluster>k__BackingField);
|
||||
}
|
||||
clusterInfo = this.createQueue.Dequeue();
|
||||
while (clusterInfo == 0)
|
||||
{
|
||||
}
|
||||
int num = this.numActiveVerts;
|
||||
int maxDynamicNearVerts = ClusterLODManager._instance.<Config>k__BackingField.maxDynamicNearVerts;
|
||||
if (num <= maxDynamicNearVerts)
|
||||
{
|
||||
goto IL_B2;
|
||||
}
|
||||
worstActiveCluster = this.GetWorstActiveCluster();
|
||||
if (worstActiveCluster == 0)
|
||||
{
|
||||
goto IL_B2;
|
||||
}
|
||||
}
|
||||
while (clusterInfo.closestDist > worstActiveCluster.closestDist);
|
||||
bool flag2 = this.RemoveActiveCluster(worstActiveCluster);
|
||||
worstActiveCluster.RequestRemoveMesh();
|
||||
IL_B2:
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob2 = this.createMeshFromClusterJob;
|
||||
if (createMeshFromClusterJob2.<cluster>k__BackingField <= (ulong)0L)
|
||||
{
|
||||
List<IClusterLODComponent> components = clusterInfo.components;
|
||||
Transform root = clusterInfo.root;
|
||||
createMeshFromClusterJob2.Init(clusterInfo, root);
|
||||
JobHandle.ScheduleBatchedJobs();
|
||||
}
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006B8F RID: 27535 RVA: 0x0017DC30 File Offset: 0x0017BE30
|
||||
[Token(Token = "0x6006B8F")]
|
||||
[Address(RVA = "0x1464E40", Offset = "0x1463C40", VA = "0x181464E40")]
|
||||
private ClusterMesh.ClusterInfo GetClusterToCreate()
|
||||
{
|
||||
return this.createQueue.Dequeue();
|
||||
}
|
||||
|
||||
// Token: 0x06006B90 RID: 27536 RVA: 0x0017DC50 File Offset: 0x0017BE50
|
||||
[Token(Token = "0x6006B90")]
|
||||
[Address(RVA = "0x1465520", Offset = "0x1464320", VA = "0x181465520")]
|
||||
public ClusterMeshAssetCache()
|
||||
{
|
||||
Queue<ClusterMesh.ClusterInfo> queue = new Queue();
|
||||
this.createQueue = queue;
|
||||
CreateMeshFromClusterJob createMeshFromClusterJob = new CreateMeshFromClusterJob();
|
||||
PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO();
|
||||
createMeshFromClusterJob.sharedResultMesh = pcikhfeihgo;
|
||||
OCCMLFOBCEM occmlfobcem = new OCCMLFOBCEM();
|
||||
createMeshFromClusterJob.optimizationData = occmlfobcem;
|
||||
this.createMeshFromClusterJob = createMeshFromClusterJob;
|
||||
List<ClusterMesh.ClusterInfo> list = new List();
|
||||
this.activeClusters = list;
|
||||
base..ctor();
|
||||
}
|
||||
|
||||
// Token: 0x040047EF RID: 18415
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047EF")]
|
||||
private Queue<ClusterMesh.ClusterInfo> createQueue;
|
||||
|
||||
// Token: 0x040047F0 RID: 18416
|
||||
[FieldOffset(Offset = "0x18")]
|
||||
[Token(Token = "0x40047F0")]
|
||||
private CreateMeshFromClusterJob createMeshFromClusterJob;
|
||||
|
||||
// Token: 0x040047F1 RID: 18417
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x40047F1")]
|
||||
private readonly List<ClusterMesh.ClusterInfo> activeClusters;
|
||||
|
||||
// Token: 0x040047F2 RID: 18418
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x40047F2")]
|
||||
private int numActiveVerts;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001280 RID: 4736
|
||||
[Token(Token = "0x2001280")]
|
||||
public class ClusterMeshAssetEditorDebug : MonoBehaviour
|
||||
{
|
||||
// Token: 0x06006B91 RID: 27537 RVA: 0x0017DCA8 File Offset: 0x0017BEA8
|
||||
[Token(Token = "0x6006B91")]
|
||||
[Address(RVA = "0x74EA40", Offset = "0x74D840", VA = "0x18074EA40")]
|
||||
public ClusterMeshAssetEditorDebug()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
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<ClusterMesh> 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<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: 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<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: 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<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: 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<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: 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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
using RecRoom.Core.Rendering;
|
||||
using Unity.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001282 RID: 4738
|
||||
[Token(Token = "0x2001282")]
|
||||
public class ClusterMeshRenderer : MonoBehaviour
|
||||
{
|
||||
// Token: 0x06006B99 RID: 27545 RVA: 0x0017DF28 File Offset: 0x0017C128
|
||||
[Token(Token = "0x6006B99")]
|
||||
[Address(RVA = "0x1465B80", Offset = "0x1464980", VA = "0x181465B80")]
|
||||
public static ClusterMeshRenderer Create(ClusterMesh mesh, ClusterMeshRenderer clusterMeshRendererPrefab, MeshFilter clusterPrefab, Transform root, bool dynamic)
|
||||
{
|
||||
ClusterMeshRenderer clusterMeshRenderer = global::UnityEngine.Object.Instantiate<ClusterMeshRenderer>(clusterMeshRendererPrefab, root);
|
||||
MeshRenderer component = clusterMeshRenderer.GetComponent<MeshRenderer>();
|
||||
Material meshMaterial = ClusterLODManager._instance.GetMeshMaterial();
|
||||
component.SetMaterial(meshMaterial);
|
||||
clusterMeshRenderer.<Dynamic>k__BackingField = false;
|
||||
clusterMeshRenderer.Init(mesh, clusterPrefab);
|
||||
return clusterMeshRenderer;
|
||||
}
|
||||
|
||||
// Token: 0x06006B9A RID: 27546 RVA: 0x0017DF6C File Offset: 0x0017C16C
|
||||
[Token(Token = "0x6006B9A")]
|
||||
[Address(RVA = "0x1466140", Offset = "0x1464F40", VA = "0x181466140")]
|
||||
private void OnDestroy()
|
||||
{
|
||||
this.<Clusters>k__BackingField.Clear();
|
||||
this.<Mesh>k__BackingField.Dispose();
|
||||
}
|
||||
|
||||
// Token: 0x17001163 RID: 4451
|
||||
// (get) Token: 0x06006B9B RID: 27547 RVA: 0x0017DF98 File Offset: 0x0017C198
|
||||
// (set) Token: 0x06006B9C RID: 27548 RVA: 0x0017DFAC File Offset: 0x0017C1AC
|
||||
[Token(Token = "0x17001163")]
|
||||
public List<MeshFilter> Clusters
|
||||
{
|
||||
[Token(Token = "0x6006B9B")]
|
||||
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
|
||||
get;
|
||||
[Token(Token = "0x6006B9C")]
|
||||
[Address(RVA = "0x3F7210", Offset = "0x3F6010", VA = "0x1803F7210")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001164 RID: 4452
|
||||
// (get) Token: 0x06006B9D RID: 27549 RVA: 0x0017DFC0 File Offset: 0x0017C1C0
|
||||
// (set) Token: 0x06006B9E RID: 27550 RVA: 0x0017DFD4 File Offset: 0x0017C1D4
|
||||
[Token(Token = "0x17001164")]
|
||||
public ClusterMesh Mesh
|
||||
{
|
||||
[Token(Token = "0x6006B9D")]
|
||||
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
|
||||
get;
|
||||
[Token(Token = "0x6006B9E")]
|
||||
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x17001165 RID: 4453
|
||||
// (get) Token: 0x06006B9F RID: 27551 RVA: 0x0017DFE8 File Offset: 0x0017C1E8
|
||||
// (set) Token: 0x06006BA0 RID: 27552 RVA: 0x0017DFFC File Offset: 0x0017C1FC
|
||||
[Token(Token = "0x17001165")]
|
||||
public bool Dynamic
|
||||
{
|
||||
[Token(Token = "0x6006B9F")]
|
||||
[Address(RVA = "0x494270", Offset = "0x493070", VA = "0x180494270")]
|
||||
get;
|
||||
[Token(Token = "0x6006BA0")]
|
||||
[Address(RVA = "0x494500", Offset = "0x493300", VA = "0x180494500")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x06006BA1 RID: 27553 RVA: 0x0017E010 File Offset: 0x0017C210
|
||||
[Token(Token = "0x6006BA1")]
|
||||
[Address(RVA = "0x1465E70", Offset = "0x1464C70", VA = "0x181465E70")]
|
||||
public void Init(ClusterMesh mesh, MeshFilter clusterPrefab)
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
int num = 0;
|
||||
mesh.owner = this;
|
||||
this.<Mesh>k__BackingField = mesh;
|
||||
List<MeshFilter> list = new List(mesh.Clusters._size);
|
||||
this.<Clusters>k__BackingField = list;
|
||||
List<ClusterMesh.ClusterInfo> clusters = mesh.Clusters;
|
||||
List<MeshFilter>.Enumerator enumerator = list.GetEnumerator();
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (num == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
Transform transform = base.transform;
|
||||
MeshFilter meshFilter = global::UnityEngine.Object.Instantiate<MeshFilter>(clusterPrefab, transform);
|
||||
MeshRenderer component = meshFilter.GetComponent<MeshRenderer>();
|
||||
Material[] sharedMaterialArray = meshFilter.GetComponent<MeshRenderer>().GetSharedMaterialArray();
|
||||
throw new ArrayTypeMismatchException();
|
||||
}
|
||||
|
||||
// Token: 0x06006BA2 RID: 27554 RVA: 0x0017E0EC File Offset: 0x0017C2EC
|
||||
[Token(Token = "0x6006BA2")]
|
||||
[Address(RVA = "0x1465CE0", Offset = "0x1464AE0", VA = "0x181465CE0")]
|
||||
public void GenerateLOD()
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
ClusterMesh clusterMesh = this.<Mesh>k__BackingField;
|
||||
Transform transform = base.transform;
|
||||
bool flag = this.<Dynamic>k__BackingField;
|
||||
clusterMesh.GenerateLODMesh(transform, flag);
|
||||
MeshFilter component = base.GetComponent<MeshFilter>();
|
||||
Mesh mesh = this.<Mesh>k__BackingField.<Mesh>k__BackingField;
|
||||
component.sharedMesh = mesh;
|
||||
List<MeshFilter> list = this.<Clusters>k__BackingField;
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
GameObject gameObject = component.gameObject;
|
||||
int num2 = 0;
|
||||
gameObject.SetActive(num2 != 0);
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006BA3 RID: 27555 RVA: 0x0017E168 File Offset: 0x0017C368
|
||||
[Token(Token = "0x6006BA3")]
|
||||
[Address(RVA = "0x14664E0", Offset = "0x14652E0", VA = "0x1814664E0")]
|
||||
public void UpdateClusterDistances(Vector3 pos)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
if ((this.<Dynamic>k__BackingField ? 1 : 0) != num)
|
||||
{
|
||||
Transform transform = base.transform;
|
||||
Vector3 vector;
|
||||
float z = vector.z;
|
||||
pos.z = z;
|
||||
}
|
||||
List<ClusterMesh.ClusterInfo> clusters = this.<Mesh>k__BackingField.Clusters;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
List<ClusterMesh.ClusterInfo>.Enumerator enumerator;
|
||||
int index = enumerator.index;
|
||||
float z2 = pos.z;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006BA4 RID: 27556 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006BA4")]
|
||||
[Address(RVA = "0x1466720", Offset = "0x1465520", VA = "0x181466720")]
|
||||
public bool UpdateVisibility()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006BA5 RID: 27557 RVA: 0x0017E1C4 File Offset: 0x0017C3C4
|
||||
[Token(Token = "0x6006BA5")]
|
||||
[Address(RVA = "0x14661C0", Offset = "0x1464FC0", VA = "0x1814661C0")]
|
||||
public void RenderOutline(OutlineRendererEffect.HLEDHCIGMPJ outlineType)
|
||||
{
|
||||
OEIHLPKBJKH nextOutlineRenderHandle = OutlineRendererEffect.GetNextOutlineRenderHandle();
|
||||
List<MeshFilter> list = this.<Clusters>k__BackingField;
|
||||
int num = 0;
|
||||
NativeArray<int> componentLod = this.<Mesh>k__BackingField.updateData.componentLod;
|
||||
GameObject gameObject;
|
||||
Renderer component = gameObject.GetComponent<Renderer>();
|
||||
num++;
|
||||
num += 4;
|
||||
}
|
||||
|
||||
// Token: 0x06006BA6 RID: 27558 RVA: 0x0017E20C File Offset: 0x0017C40C
|
||||
[Token(Token = "0x6006BA6")]
|
||||
[Address(RVA = "0x1466330", Offset = "0x1465130", VA = "0x181466330")]
|
||||
public void SetupTagAndLayer(string tag, int layer)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
base.gameObject.layer = layer;
|
||||
base.gameObject.tag = tag;
|
||||
List<MeshFilter> list = this.<Clusters>k__BackingField;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
base.gameObject.layer = layer;
|
||||
base.gameObject.tag = tag;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006BA7 RID: 27559 RVA: 0x0017E26C File Offset: 0x0017C46C
|
||||
[Token(Token = "0x6006BA7")]
|
||||
[Address(RVA = "0x14661A0", Offset = "0x1464FA0", VA = "0x1814661A0")]
|
||||
public bool Remove(IClusterLODComponent component)
|
||||
{
|
||||
return this.<Mesh>k__BackingField.Remove(component);
|
||||
}
|
||||
|
||||
// Token: 0x06006BA8 RID: 27560 RVA: 0x0017E28C File Offset: 0x0017C48C
|
||||
[Token(Token = "0x6006BA8")]
|
||||
[Address(RVA = "0x74EA40", Offset = "0x74D840", VA = "0x18074EA40")]
|
||||
public ClusterMeshRenderer()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001285 RID: 4741
|
||||
[Token(Token = "0x2001285")]
|
||||
[BurstCompile]
|
||||
public struct ClusterMeshUpdateJob : IJob
|
||||
{
|
||||
// Token: 0x06006BB2 RID: 27570 RVA: 0x0017E3E8 File Offset: 0x0017C5E8
|
||||
[Token(Token = "0x6006BB2")]
|
||||
[Address(RVA = "0x1468400", Offset = "0x1467200", VA = "0x181468400")]
|
||||
public ClusterMeshUpdateJob(ClusterMeshUpdateJobData jobData, Vector3 eyePos, bool dynamicCluster, float faceFactor, float meshScale, float distFactor)
|
||||
{
|
||||
NativeList<float3> nativeList = jobData.verts;
|
||||
float z = eyePos.z;
|
||||
this.verts = nativeList;
|
||||
NativeList<int> nativeList2 = jobData.origIndices;
|
||||
this.origIndices = nativeList2;
|
||||
NativeList<int> nativeList3 = jobData.indices;
|
||||
this.indices = nativeList3;
|
||||
NativeList<MeshComponentInfo> componentInfo = jobData.componentInfo;
|
||||
this.clusterInfo = componentInfo;
|
||||
NativeArray<int> nativeArray = jobData.componentLod;
|
||||
this.componentLod = nativeArray;
|
||||
NativeArray<float3> nativeArray2 = jobData.triNormals;
|
||||
this.triNormals = nativeArray2;
|
||||
NativeArray<float> nativeArray3 = jobData.triSizes;
|
||||
this.triSizes = nativeArray3;
|
||||
this.meshScale = (float)0;
|
||||
this.dynamicCluster = dynamicCluster;
|
||||
float3 @float;
|
||||
float z2 = @float.z;
|
||||
this.faceFactor = (float)0;
|
||||
this.distFactor = (float)0;
|
||||
this.eyePos.z = z2;
|
||||
}
|
||||
|
||||
// Token: 0x06006BB3 RID: 27571 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006BB3")]
|
||||
[Address(RVA = "0x1467F60", Offset = "0x1466D60", VA = "0x181467F60", Slot = "4")]
|
||||
public void Execute()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x04004807 RID: 18439
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x4004807")]
|
||||
[ReadOnly]
|
||||
private NativeList<float3> verts;
|
||||
|
||||
// Token: 0x04004808 RID: 18440
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x4004808")]
|
||||
[ReadOnly]
|
||||
public NativeList<int> origIndices;
|
||||
|
||||
// Token: 0x04004809 RID: 18441
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x4004809")]
|
||||
[ReadOnly]
|
||||
private NativeList<MeshComponentInfo> clusterInfo;
|
||||
|
||||
// Token: 0x0400480A RID: 18442
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x400480A")]
|
||||
[ReadOnly]
|
||||
private NativeArray<int> componentLod;
|
||||
|
||||
// Token: 0x0400480B RID: 18443
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x400480B")]
|
||||
[ReadOnly]
|
||||
private float3 eyePos;
|
||||
|
||||
// Token: 0x0400480C RID: 18444
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x400480C")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float3> triNormals;
|
||||
|
||||
// Token: 0x0400480D RID: 18445
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x400480D")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float> triSizes;
|
||||
|
||||
// Token: 0x0400480E RID: 18446
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x400480E")]
|
||||
[ReadOnly]
|
||||
private bool dynamicCluster;
|
||||
|
||||
// Token: 0x0400480F RID: 18447
|
||||
[FieldOffset(Offset = "0x74")]
|
||||
[Token(Token = "0x400480F")]
|
||||
[ReadOnly]
|
||||
private float faceFactor;
|
||||
|
||||
// Token: 0x04004810 RID: 18448
|
||||
[FieldOffset(Offset = "0x78")]
|
||||
[Token(Token = "0x4004810")]
|
||||
[ReadOnly]
|
||||
private float meshScale;
|
||||
|
||||
// Token: 0x04004811 RID: 18449
|
||||
[FieldOffset(Offset = "0x7C")]
|
||||
[Token(Token = "0x4004811")]
|
||||
[ReadOnly]
|
||||
private float distFactor;
|
||||
|
||||
// Token: 0x04004812 RID: 18450
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x4004812")]
|
||||
private NativeList<int> indices;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001284 RID: 4740
|
||||
[Token(Token = "0x2001284")]
|
||||
public class ClusterMeshUpdateJobData : IDisposable
|
||||
{
|
||||
// Token: 0x17001166 RID: 4454
|
||||
// (get) Token: 0x06006BAA RID: 27562 RVA: 0x0017E2CC File Offset: 0x0017C4CC
|
||||
// (set) Token: 0x06006BAB RID: 27563 RVA: 0x0017E2E0 File Offset: 0x0017C4E0
|
||||
[Token(Token = "0x17001166")]
|
||||
public bool IsActive
|
||||
{
|
||||
[Token(Token = "0x6006BAA")]
|
||||
[Address(RVA = "0x607800", Offset = "0x606600", VA = "0x180607800")]
|
||||
get;
|
||||
[Token(Token = "0x6006BAB")]
|
||||
[Address(RVA = "0x7A52E0", Offset = "0x7A40E0", VA = "0x1807A52E0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x06006BAC RID: 27564 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006BAC")]
|
||||
[Address(RVA = "0x1467370", Offset = "0x1466170", VA = "0x181467370")]
|
||||
public void Init(PCIKHFEIHGO srcMesh, NativeList<MeshComponentInfo> componentInfo, float scale)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006BAD RID: 27565 RVA: 0x0017E2F4 File Offset: 0x0017C4F4
|
||||
[Token(Token = "0x6006BAD")]
|
||||
[Address(RVA = "0x1466E50", Offset = "0x1465C50", VA = "0x181466E50")]
|
||||
public void CreateUpdateJob(Transform root, bool dynamicCluster)
|
||||
{
|
||||
float z = ClusterLODManager._instance.<EyePos>k__BackingField.z;
|
||||
Vector3 vector;
|
||||
float z2 = vector.z;
|
||||
ClusterLODConfig <Config>k__BackingField = ClusterLODManager._instance.<Config>k__BackingField;
|
||||
float backfaceCullingThreshold = <Config>k__BackingField.backfaceCullingThreshold;
|
||||
float triangleCullingDistFactor = <Config>k__BackingField.triangleCullingDistFactor;
|
||||
JobHandle.ScheduleBatchedJobs();
|
||||
this.<IsActive>k__BackingField = true;
|
||||
}
|
||||
|
||||
// Token: 0x06006BAE RID: 27566 RVA: 0x0017E34C File Offset: 0x0017C54C
|
||||
[Token(Token = "0x6006BAE")]
|
||||
[Address(RVA = "0x14671E0", Offset = "0x1465FE0", VA = "0x1814671E0")]
|
||||
public void FinalizeUpdate(ClusterMesh owner, bool setOrigIndices)
|
||||
{
|
||||
this.<IsActive>k__BackingField = false;
|
||||
if (owner != 0)
|
||||
{
|
||||
Mesh <Mesh>k__BackingField = owner.<Mesh>k__BackingField;
|
||||
int num = 0;
|
||||
if (!(<Mesh>k__BackingField == num))
|
||||
{
|
||||
owner.<Mesh>k__BackingField.subMeshCount = 2;
|
||||
NativeList<int> nativeList = this.indices;
|
||||
Mesh <Mesh>k__BackingField2 = owner.<Mesh>k__BackingField;
|
||||
if (setOrigIndices)
|
||||
{
|
||||
NativeList<int> nativeList2 = this.origIndices;
|
||||
Mesh <Mesh>k__BackingField3 = owner.<Mesh>k__BackingField;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006BAF RID: 27567 RVA: 0x0017E3AC File Offset: 0x0017C5AC
|
||||
[Token(Token = "0x6006BAF")]
|
||||
[Address(RVA = "0x1467110", Offset = "0x1465F10", VA = "0x181467110", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006BB0 RID: 27568 RVA: 0x0017E3C0 File Offset: 0x0017C5C0
|
||||
[Token(Token = "0x6006BB0")]
|
||||
[Address(RVA = "0x1466E20", Offset = "0x1465C20", VA = "0x181466E20")]
|
||||
public void Clear()
|
||||
{
|
||||
this.<IsActive>k__BackingField = false;
|
||||
}
|
||||
|
||||
// Token: 0x06006BB1 RID: 27569 RVA: 0x0017E3D4 File Offset: 0x0017C5D4
|
||||
[Token(Token = "0x6006BB1")]
|
||||
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
||||
public ClusterMeshUpdateJobData()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x040047FE RID: 18430
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047FE")]
|
||||
public NativeList<float3> verts;
|
||||
|
||||
// Token: 0x040047FF RID: 18431
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x40047FF")]
|
||||
public NativeList<int> origIndices;
|
||||
|
||||
// Token: 0x04004800 RID: 18432
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x4004800")]
|
||||
public NativeList<int> indices;
|
||||
|
||||
// Token: 0x04004801 RID: 18433
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x4004801")]
|
||||
public NativeList<MeshComponentInfo> componentInfo;
|
||||
|
||||
// Token: 0x04004802 RID: 18434
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x4004802")]
|
||||
public NativeArray<int> componentLod;
|
||||
|
||||
// Token: 0x04004803 RID: 18435
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x4004803")]
|
||||
public NativeArray<float3> triNormals;
|
||||
|
||||
// Token: 0x04004804 RID: 18436
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x4004804")]
|
||||
public NativeArray<float> triSizes;
|
||||
|
||||
// Token: 0x04004805 RID: 18437
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x4004805")]
|
||||
public JobHandle jobHandle;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001287 RID: 4743
|
||||
[Token(Token = "0x2001287")]
|
||||
public class ClusterNode
|
||||
{
|
||||
// Token: 0x06006BB6 RID: 27574 RVA: 0x0017E4A0 File Offset: 0x0017C6A0
|
||||
[Token(Token = "0x6006BB6")]
|
||||
[Address(RVA = "0x14697C0", Offset = "0x14685C0", VA = "0x1814697C0")]
|
||||
public ClusterNode(List<IClusterLODComponent> components, [Optional] ClusterNode parent)
|
||||
{
|
||||
this.parent = parent;
|
||||
int num = 0;
|
||||
this.components = components;
|
||||
int num2 = ClusterUtil.GetVertexCount(components, (NPBPPKDLKDN)num);
|
||||
this.vertexCount = num2;
|
||||
}
|
||||
|
||||
// Token: 0x04004813 RID: 18451
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x4004813")]
|
||||
public List<IClusterLODComponent> components;
|
||||
|
||||
// Token: 0x04004814 RID: 18452
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
||||
[Token(Token = "0x4004814")]
|
||||
public ClusterNode parent;
|
||||
|
||||
// Token: 0x04004815 RID: 18453
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x4004815")]
|
||||
public ClusterNode child1;
|
||||
|
||||
// Token: 0x04004816 RID: 18454
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x4004816")]
|
||||
public ClusterNode child2;
|
||||
|
||||
// Token: 0x04004817 RID: 18455
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x4004817")]
|
||||
public int vertexCount;
|
||||
|
||||
// Token: 0x04004818 RID: 18456
|
||||
[global::Cpp2IlInjected.FieldOffset(Offset = "0x34")]
|
||||
[Token(Token = "0x4004818")]
|
||||
public Bounds bounds;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001288 RID: 4744
|
||||
[Token(Token = "0x2001288")]
|
||||
public class ClusterTree
|
||||
{
|
||||
// Token: 0x17001169 RID: 4457
|
||||
// (get) Token: 0x06006BB7 RID: 27575 RVA: 0x0017E4D4 File Offset: 0x0017C6D4
|
||||
// (set) Token: 0x06006BB8 RID: 27576 RVA: 0x0017E4E8 File Offset: 0x0017C6E8
|
||||
[Token(Token = "0x17001169")]
|
||||
public ClusterNode Root
|
||||
{
|
||||
[Token(Token = "0x6006BB7")]
|
||||
[Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")]
|
||||
get;
|
||||
[Token(Token = "0x6006BB8")]
|
||||
[Address(RVA = "0x3F7200", Offset = "0x3F6000", VA = "0x1803F7200")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x06006BB9 RID: 27577 RVA: 0x0017E4FC File Offset: 0x0017C6FC
|
||||
[Token(Token = "0x6006BB9")]
|
||||
[Address(RVA = "0x146B410", Offset = "0x146A210", VA = "0x18146B410")]
|
||||
public ClusterTree(ClusterNode root)
|
||||
{
|
||||
List<ClusterNode> list = new List();
|
||||
this.Nodes = list;
|
||||
base..ctor();
|
||||
List<ClusterNode> nodes = this.Nodes;
|
||||
this.Root = root;
|
||||
nodes.Add(root);
|
||||
}
|
||||
|
||||
// Token: 0x0400481A RID: 18458
|
||||
[FieldOffset(Offset = "0x18")]
|
||||
[Token(Token = "0x400481A")]
|
||||
public List<ClusterNode> Nodes;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,317 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001289 RID: 4745
|
||||
[Token(Token = "0x2001289")]
|
||||
public class ClusterTreeGenerator
|
||||
{
|
||||
// Token: 0x06006BBA RID: 27578 RVA: 0x0017E538 File Offset: 0x0017C738
|
||||
[Token(Token = "0x6006BBA")]
|
||||
[Address(RVA = "0x146B3B0", Offset = "0x146A1B0", VA = "0x18146B3B0")]
|
||||
public ClusterTreeGenerator(int minNumVerts, int maxNumVerts, float maxRadius, int minNumObjectPerCluster, float distributeVSminimize = 0.5f)
|
||||
{
|
||||
this.maxRadius = maxRadius;
|
||||
this.minNumVerts = minNumVerts;
|
||||
this.distributeVSminimize = (float)0;
|
||||
this.maxNumVerts = maxNumVerts;
|
||||
this.minNumObjectPerCluster = 0;
|
||||
}
|
||||
|
||||
// Token: 0x1700116A RID: 4458
|
||||
// (get) Token: 0x06006BBB RID: 27579 RVA: 0x0017E570 File Offset: 0x0017C770
|
||||
// (set) Token: 0x06006BBC RID: 27580 RVA: 0x0017E584 File Offset: 0x0017C784
|
||||
[Token(Token = "0x1700116A")]
|
||||
public ClusterTree Tree
|
||||
{
|
||||
[Token(Token = "0x6006BBB")]
|
||||
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
|
||||
get;
|
||||
[Token(Token = "0x6006BBC")]
|
||||
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x06006BBD RID: 27581 RVA: 0x0017E598 File Offset: 0x0017C798
|
||||
[Token(Token = "0x6006BBD")]
|
||||
[Address(RVA = "0x146A580", Offset = "0x1469380", VA = "0x18146A580")]
|
||||
public void InitTree(List<IClusterLODComponent> components)
|
||||
{
|
||||
int num = 0;
|
||||
ClusterNode clusterNode;
|
||||
clusterNode.components = components;
|
||||
int vertexCount = ClusterUtil.GetVertexCount(components, (NPBPPKDLKDN)num);
|
||||
clusterNode.vertexCount = vertexCount;
|
||||
List<ClusterNode> list = new List();
|
||||
ClusterTree clusterTree;
|
||||
clusterTree.Nodes = list;
|
||||
List<ClusterNode> nodes = clusterTree.Nodes;
|
||||
clusterTree.<Root>k__BackingField = clusterNode;
|
||||
nodes.Add(clusterNode);
|
||||
this.<Tree>k__BackingField = clusterTree;
|
||||
Stack<ClusterNode> stack = new Stack();
|
||||
ClusterTree clusterTree2 = this.<Tree>k__BackingField;
|
||||
this.unProcessedClusters = stack;
|
||||
ClusterNode <Root>k__BackingField = clusterTree2.<Root>k__BackingField;
|
||||
stack.Push(<Root>k__BackingField);
|
||||
}
|
||||
|
||||
// Token: 0x06006BBE RID: 27582 RVA: 0x0017E620 File Offset: 0x0017C820
|
||||
[Token(Token = "0x6006BBE")]
|
||||
[Address(RVA = "0x1469830", Offset = "0x1468630", VA = "0x181469830")]
|
||||
public bool GenerateTreeCluster()
|
||||
{
|
||||
ClusterNode clusterNode = this.unProcessedClusters.Pop();
|
||||
bool flag = this.SplitCluster(clusterNode);
|
||||
Stack<ClusterNode> stack = this.unProcessedClusters;
|
||||
bool flag2;
|
||||
return flag2;
|
||||
}
|
||||
|
||||
// Token: 0x06006BBF RID: 27583 RVA: 0x0017E650 File Offset: 0x0017C850
|
||||
[Token(Token = "0x6006BBF")]
|
||||
[Address(RVA = "0x146A470", Offset = "0x1469270", VA = "0x18146A470")]
|
||||
private float GetVolume(Vector3 min, Vector3 max)
|
||||
{
|
||||
float z = min.z;
|
||||
float z2 = max.z;
|
||||
Vector3 vector;
|
||||
float num = vector.z;
|
||||
float num2;
|
||||
num = num2;
|
||||
num2 = num;
|
||||
return num2;
|
||||
}
|
||||
|
||||
// Token: 0x06006BC0 RID: 27584 RVA: 0x0017E680 File Offset: 0x0017C880
|
||||
[Token(Token = "0x6006BC0")]
|
||||
[Address(RVA = "0x146A3D0", Offset = "0x14691D0", VA = "0x18146A3D0")]
|
||||
private float GetVolume(Vector3 size)
|
||||
{
|
||||
float num = size.z;
|
||||
float num2;
|
||||
num = num2;
|
||||
num2 = num;
|
||||
return num2;
|
||||
}
|
||||
|
||||
// Token: 0x06006BC1 RID: 27585 RVA: 0x0017E69C File Offset: 0x0017C89C
|
||||
[Token(Token = "0x6006BC1")]
|
||||
[Address(RVA = "0x146AA70", Offset = "0x1469870", VA = "0x18146AA70")]
|
||||
private bool SplitCluster(ClusterNode cluster)
|
||||
{
|
||||
int num;
|
||||
List<IClusterLODComponent> list;
|
||||
int num8;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<IClusterLODComponent> components = cluster.components;
|
||||
int num2 = this.minNumObjectPerCluster;
|
||||
num2 += num2;
|
||||
float num3;
|
||||
if (cluster.vertexCount < this.maxNumVerts && this.maxRadius > num3)
|
||||
{
|
||||
goto IL_20D;
|
||||
}
|
||||
list = new List();
|
||||
float num5;
|
||||
float num4 = Mathf.Max(num5, num5) * 0.3f;
|
||||
List<IClusterLODComponent> components2 = cluster.components;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
Vector3 vector;
|
||||
float num6 = vector.z;
|
||||
float num7;
|
||||
num5 = num7;
|
||||
num5 = Mathf.Max(num7, num5);
|
||||
while (num5 <= num4)
|
||||
{
|
||||
}
|
||||
num6 += 2.7E-44f;
|
||||
}
|
||||
if (num != 0)
|
||||
{
|
||||
goto IL_21F;
|
||||
}
|
||||
if (num != -1)
|
||||
{
|
||||
}
|
||||
if (list._size <= 0)
|
||||
{
|
||||
goto IL_EA;
|
||||
}
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
}
|
||||
num8 = 0;
|
||||
}
|
||||
while (num != 0);
|
||||
ClusterNode clusterNode = new ClusterNode(num, cluster);
|
||||
cluster.child1 = clusterNode;
|
||||
this.<Tree>k__BackingField.Nodes.Add(clusterNode);
|
||||
ClusterNode clusterNode2 = new ClusterNode(list, cluster);
|
||||
cluster.child2 = clusterNode2;
|
||||
List<ClusterNode> nodes = this.<Tree>k__BackingField.Nodes;
|
||||
IL_EA:
|
||||
ClusterTreeGenerator.SplitResult splitResult;
|
||||
int bestIndex = splitResult.bestIndex;
|
||||
int num9 = 0;
|
||||
List<IClusterLODComponent> range = list.GetRange(num9, bestIndex);
|
||||
ClusterNode clusterNode3;
|
||||
clusterNode3.parent = cluster;
|
||||
clusterNode3.components = range;
|
||||
int num10 = 0;
|
||||
int vertexCount = ClusterUtil.GetVertexCount(range, (NPBPPKDLKDN)num10);
|
||||
clusterNode3.vertexCount = vertexCount;
|
||||
cluster.child1 = clusterNode3;
|
||||
this.<Tree>k__BackingField.Nodes.Add(clusterNode3);
|
||||
int num11 = list._size;
|
||||
num11 -= clusterNode3;
|
||||
ClusterNode clusterNode4;
|
||||
clusterNode4.parent = cluster;
|
||||
List<IClusterLODComponent> list2;
|
||||
clusterNode4.components = list2;
|
||||
int num12 = 0;
|
||||
int vertexCount2 = ClusterUtil.GetVertexCount(list2, (NPBPPKDLKDN)num12);
|
||||
clusterNode4.vertexCount = vertexCount2;
|
||||
cluster.child2 = clusterNode4;
|
||||
this.<Tree>k__BackingField.Nodes.Add(clusterNode4);
|
||||
Stack<ClusterNode> stack = this.unProcessedClusters;
|
||||
ClusterNode child = cluster.child1;
|
||||
stack.Push(child);
|
||||
Stack<ClusterNode> stack2 = this.unProcessedClusters;
|
||||
ClusterNode child2 = cluster.child2;
|
||||
stack2.Push(child2);
|
||||
List<ClusterNode> nodes2 = this.<Tree>k__BackingField.Nodes;
|
||||
ClusterNode child3 = cluster.child1;
|
||||
nodes2.Add(child3);
|
||||
List<ClusterNode> nodes3 = this.<Tree>k__BackingField.Nodes;
|
||||
ClusterNode child4 = cluster.child2;
|
||||
nodes3.Add(child4);
|
||||
cluster.components = num8;
|
||||
IL_20D:
|
||||
throw new NullReferenceException();
|
||||
IL_21F:
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006BC2 RID: 27586 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006BC2")]
|
||||
[Address(RVA = "0x14698A0", Offset = "0x14686A0", VA = "0x1814698A0")]
|
||||
private ClusterTreeGenerator.SplitResult GetSplitResult(List<IClusterLODComponent> rawComponents, ClusterTreeGenerator.Axis axis)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006BC3 RID: 27587 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006BC3")]
|
||||
[Address(RVA = "0x146A6E0", Offset = "0x14694E0", VA = "0x18146A6E0")]
|
||||
private void SetupMinMaxBuffers(List<IClusterLODComponent> components, Vector3[] minValues, Vector3[] maxValues)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x0400481B RID: 18459
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x400481B")]
|
||||
private ClusterTreeGenerator.Stats stats;
|
||||
|
||||
// Token: 0x0400481D RID: 18461
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x400481D")]
|
||||
private int minNumObjectPerCluster;
|
||||
|
||||
// Token: 0x0400481E RID: 18462
|
||||
[FieldOffset(Offset = "0x2C")]
|
||||
[Token(Token = "0x400481E")]
|
||||
private int minNumVerts;
|
||||
|
||||
// Token: 0x0400481F RID: 18463
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x400481F")]
|
||||
private int maxNumVerts;
|
||||
|
||||
// Token: 0x04004820 RID: 18464
|
||||
[FieldOffset(Offset = "0x34")]
|
||||
[Token(Token = "0x4004820")]
|
||||
private float maxRadius;
|
||||
|
||||
// Token: 0x04004821 RID: 18465
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x4004821")]
|
||||
private float distributeVSminimize;
|
||||
|
||||
// Token: 0x04004822 RID: 18466
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x4004822")]
|
||||
private Stack<ClusterNode> unProcessedClusters;
|
||||
|
||||
// Token: 0x0200128A RID: 4746
|
||||
[Token(Token = "0x200128A")]
|
||||
private struct Stats
|
||||
{
|
||||
// Token: 0x04004823 RID: 18467
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x4004823")]
|
||||
public int numOverSized;
|
||||
|
||||
// Token: 0x04004824 RID: 18468
|
||||
[FieldOffset(Offset = "0x4")]
|
||||
[Token(Token = "0x4004824")]
|
||||
public int xSplits;
|
||||
|
||||
// Token: 0x04004825 RID: 18469
|
||||
[FieldOffset(Offset = "0x8")]
|
||||
[Token(Token = "0x4004825")]
|
||||
public int ySplits;
|
||||
|
||||
// Token: 0x04004826 RID: 18470
|
||||
[FieldOffset(Offset = "0xC")]
|
||||
[Token(Token = "0x4004826")]
|
||||
public int zSplits;
|
||||
}
|
||||
|
||||
// Token: 0x0200128B RID: 4747
|
||||
[Token(Token = "0x200128B")]
|
||||
private struct SplitResult
|
||||
{
|
||||
// Token: 0x04004827 RID: 18471
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x4004827")]
|
||||
public int bestIndex;
|
||||
|
||||
// Token: 0x04004828 RID: 18472
|
||||
[FieldOffset(Offset = "0x4")]
|
||||
[Token(Token = "0x4004828")]
|
||||
public float bestVolume;
|
||||
|
||||
// Token: 0x04004829 RID: 18473
|
||||
[FieldOffset(Offset = "0x8")]
|
||||
[Token(Token = "0x4004829")]
|
||||
public List<IClusterLODComponent> components;
|
||||
}
|
||||
|
||||
// Token: 0x0200128C RID: 4748
|
||||
[Token(Token = "0x200128C")]
|
||||
private enum Axis
|
||||
{
|
||||
// Token: 0x0400482B RID: 18475
|
||||
[Token(Token = "0x400482B")]
|
||||
X_AXIS,
|
||||
// Token: 0x0400482C RID: 18476
|
||||
[Token(Token = "0x400482C")]
|
||||
Y_AXIS,
|
||||
// Token: 0x0400482D RID: 18477
|
||||
[Token(Token = "0x400482D")]
|
||||
Z_AXIS
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200128E RID: 4750
|
||||
[Token(Token = "0x200128E")]
|
||||
internal static class ClusterUtil
|
||||
{
|
||||
// Token: 0x06006BC9 RID: 27593 RVA: 0x0017E9D8 File Offset: 0x0017CBD8
|
||||
[Token(Token = "0x6006BC9")]
|
||||
[Address(RVA = "0x146B4A0", Offset = "0x146A2A0", VA = "0x18146B4A0")]
|
||||
public static Bounds GetBounds(List<IClusterLODComponent> components)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
bool flag;
|
||||
if (!flag || (ulong)1L == 0UL)
|
||||
{
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006BCA RID: 27594 RVA: 0x0017EA08 File Offset: 0x0017CC08
|
||||
[Token(Token = "0x6006BCA")]
|
||||
[Address(RVA = "0x146B650", Offset = "0x146A450", VA = "0x18146B650")]
|
||||
public static int GetVertexCount(List<IClusterLODComponent> components, NPBPPKDLKDN lod)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
num += num;
|
||||
num++;
|
||||
num += num;
|
||||
int num2 = (int)(lod + (int)lod);
|
||||
num++;
|
||||
num += 19;
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
return num;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,250 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200128F RID: 4751
|
||||
[Token(Token = "0x200128F")]
|
||||
public class CreateMeshFromClusterJob : IDisposable
|
||||
{
|
||||
// Token: 0x1700116B RID: 4459
|
||||
// (get) Token: 0x06006BCB RID: 27595 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
// (set) Token: 0x06006BCC RID: 27596 RVA: 0x0017EA48 File Offset: 0x0017CC48
|
||||
[Token(Token = "0x1700116B")]
|
||||
public JobHandle jobHandle
|
||||
{
|
||||
[Token(Token = "0x6006BCB")]
|
||||
[Address(RVA = "0x6808B0", Offset = "0x67F6B0", VA = "0x1806808B0")]
|
||||
[CompilerGenerated]
|
||||
get
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
[Token(Token = "0x6006BCC")]
|
||||
[Address(RVA = "0x687260", Offset = "0x686060", VA = "0x180687260")]
|
||||
[CompilerGenerated]
|
||||
private set
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700116C RID: 4460
|
||||
// (get) Token: 0x06006BCD RID: 27597 RVA: 0x0017EA58 File Offset: 0x0017CC58
|
||||
// (set) Token: 0x06006BCE RID: 27598 RVA: 0x0017EA6C File Offset: 0x0017CC6C
|
||||
[Token(Token = "0x1700116C")]
|
||||
public ClusterMesh.ClusterInfo cluster
|
||||
{
|
||||
[Token(Token = "0x6006BCD")]
|
||||
[Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")]
|
||||
get;
|
||||
[Token(Token = "0x6006BCE")]
|
||||
[Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x1700116D RID: 4461
|
||||
// (get) Token: 0x06006BCF RID: 27599 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x1700116D")]
|
||||
public bool Active
|
||||
{
|
||||
[Token(Token = "0x6006BCF")]
|
||||
[Address(RVA = "0x47C020", Offset = "0x47AE20", VA = "0x18047C020")]
|
||||
get
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006BD0 RID: 27600 RVA: 0x0017EA80 File Offset: 0x0017CC80
|
||||
[Token(Token = "0x6006BD0")]
|
||||
[Address(RVA = "0x146CB60", Offset = "0x146B960", VA = "0x18146CB60")]
|
||||
public void Init(ClusterMesh.ClusterInfo clusterInfo, Transform rootTranform)
|
||||
{
|
||||
this.<cluster>k__BackingField = clusterInfo;
|
||||
ClusterLODConfig.LODSettings near = ClusterLODManager._instance.<Config>k__BackingField.near;
|
||||
float maxSubDivideEdgeSize = near.maxSubDivideEdgeSize;
|
||||
int num = 0;
|
||||
if (maxSubDivideEdgeSize <= (float)num)
|
||||
{
|
||||
}
|
||||
float maxSubDivideDistance = near.maxSubDivideDistance;
|
||||
bool useMaterials = near.useMaterials;
|
||||
PCIKHFEIHGO pcikhfeihgo = this.sharedResultMesh;
|
||||
this.resultMesh = pcikhfeihgo;
|
||||
if (pcikhfeihgo.MEBGJGNMIMG)
|
||||
{
|
||||
List<IClusterLODComponent> components = this.<cluster>k__BackingField.components;
|
||||
ClusterMesh.ClusterInfo clusterInfo2 = this.<cluster>k__BackingField;
|
||||
NativeList<CJJFNIHNLBD> nativeList = this.occlusion;
|
||||
PCIKHFEIHGO pcikhfeihgo2 = this.resultMesh;
|
||||
OCCMLFOBCEM occmlfobcem = this.optimizationData;
|
||||
ClusterMesh.ClusterInfo clusterInfo3 = this.<cluster>k__BackingField;
|
||||
OCCMLFOBCEM occmlfobcem2 = this.optimizationData;
|
||||
NativeList<CJJFNIHNLBD> nativeList2 = this.occlusion;
|
||||
OCCMLFOBCEM occmlfobcem3 = this.optimizationData;
|
||||
PCIKHFEIHGO pcikhfeihgo3 = this.resultMesh;
|
||||
JobHandle jobHandle = this.<jobHandle>k__BackingField;
|
||||
SubdivideMeshData subdivideMeshData = clusterInfo.subdivideMeshData;
|
||||
bool flag;
|
||||
if (!flag)
|
||||
{
|
||||
}
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
}
|
||||
bool flag3;
|
||||
if (flag3)
|
||||
{
|
||||
}
|
||||
int num2 = 0;
|
||||
subdivideMeshData.origIndices = num2;
|
||||
bool flag4;
|
||||
if (!flag4)
|
||||
{
|
||||
int num3 = 0;
|
||||
int num4 = 0;
|
||||
SubdivideMeshData.vertexMap = num3;
|
||||
SubdivideMeshData.indexRemap = num4;
|
||||
}
|
||||
PCIKHFEIHGO pcikhfeihgo4 = this.resultMesh;
|
||||
SubdivideMeshData subdivideMeshData2 = clusterInfo.subdivideMeshData;
|
||||
JobHandle jobHandle2 = this.<jobHandle>k__BackingField;
|
||||
}
|
||||
if (CreateMeshFromClusterJob.SharedAdditionalMesh.MEBGJGNMIMG)
|
||||
{
|
||||
PCIKHFEIHGO sharedAdditionalMesh = CreateMeshFromClusterJob.SharedAdditionalMesh;
|
||||
}
|
||||
PCIKHFEIHGO sharedAdditionalMesh2 = CreateMeshFromClusterJob.SharedAdditionalMesh;
|
||||
PCIKHFEIHGO sharedAdditionalMesh3 = CreateMeshFromClusterJob.SharedAdditionalMesh;
|
||||
float z = ClusterLODManager._instance.<EyePos>k__BackingField.z;
|
||||
Vector3 vector;
|
||||
float z2 = vector.z;
|
||||
float maxSubDivideEdgeSize2 = near.maxSubDivideEdgeSize;
|
||||
float maxSubDivideDistance2 = near.maxSubDivideDistance;
|
||||
JobHandle jobHandle3 = this.<jobHandle>k__BackingField;
|
||||
PCIKHFEIHGO pcikhfeihgo5 = this.resultMesh;
|
||||
NativeArray<int> indexRemap = SubdivideMeshData.indexRemap;
|
||||
NativeMultiHashMap<int, int> vertexMap = SubdivideMeshData.vertexMap;
|
||||
JobHandle jobHandle4 = this.<jobHandle>k__BackingField;
|
||||
SubdivideMeshData.vertexMap = jobHandle4;
|
||||
SubdivideMeshData.indexRemap = vertexMap;
|
||||
SubdivideMeshData.refCount = jobHandle4;
|
||||
}
|
||||
|
||||
// Token: 0x06006BD1 RID: 27601 RVA: 0x0017EC28 File Offset: 0x0017CE28
|
||||
[Token(Token = "0x6006BD1")]
|
||||
[Address(RVA = "0x146C400", Offset = "0x146B200", VA = "0x18146C400")]
|
||||
public void CreateMesh()
|
||||
{
|
||||
ClusterLODConfig.LODSettings near = ClusterLODManager._instance.<Config>k__BackingField.near;
|
||||
float maxSubDivideEdgeSize = near.maxSubDivideEdgeSize;
|
||||
int num = 0;
|
||||
if (maxSubDivideEdgeSize <= (float)num)
|
||||
{
|
||||
}
|
||||
float maxSubDivideDistance = near.maxSubDivideDistance;
|
||||
Mesh mesh = new Mesh();
|
||||
ulong num2;
|
||||
bool flag = this.resultMesh.KDBPJKOOMGC(mesh, num2 != 0UL);
|
||||
PCIKHFEIHGO pcikhfeihgo = this.resultMesh;
|
||||
PCIKHFEIHGO sharedAdditionalMesh = CreateMeshFromClusterJob.SharedAdditionalMesh;
|
||||
ulong num3;
|
||||
bool flag2 = pcikhfeihgo.NFNAPELMHNM(mesh, sharedAdditionalMesh, num3 != 0UL);
|
||||
ClusterMesh.ClusterInfo clusterInfo = this.<cluster>k__BackingField;
|
||||
int num4 = this.resultMesh.KHFAJBCGLCL;
|
||||
clusterInfo.numLOD0Verts = num4;
|
||||
ClusterMesh.ClusterInfo clusterInfo2 = this.<cluster>k__BackingField;
|
||||
Mesh <RequestedMesh>k__BackingField = clusterInfo2.<RequestedMesh>k__BackingField;
|
||||
Mesh <ActiveMesh>k__BackingField = clusterInfo2.<ActiveMesh>k__BackingField;
|
||||
if (<RequestedMesh>k__BackingField != <ActiveMesh>k__BackingField)
|
||||
{
|
||||
OMCHJHPFBDN.KBFLHNONOHF(clusterInfo2.<RequestedMesh>k__BackingField);
|
||||
}
|
||||
clusterInfo2.<RequestedMesh>k__BackingField = mesh;
|
||||
ulong num5;
|
||||
mesh.UploadMeshData(num5 != 0UL);
|
||||
this.<cluster>k__BackingField.numAdditionalVerts = (int)((ulong)0L);
|
||||
PCIKHFEIHGO sharedAdditionalMesh2 = CreateMeshFromClusterJob.SharedAdditionalMesh;
|
||||
bool flag3;
|
||||
int num6;
|
||||
if (flag3)
|
||||
{
|
||||
num6 = CreateMeshFromClusterJob.SharedAdditionalMesh.KHFAJBCGLCL;
|
||||
}
|
||||
ClusterLODManager instance = ClusterLODManager._instance;
|
||||
int numAdditionalVerts = this.<cluster>k__BackingField.numAdditionalVerts;
|
||||
num6 -= numAdditionalVerts;
|
||||
this.<cluster>k__BackingField.numAdditionalVerts = num6;
|
||||
if (SingletonMonoBehaviour.ONCPNMDGGKG.SystemMemorySizeMB() == 0)
|
||||
{
|
||||
}
|
||||
object[] array = new object[5];
|
||||
throw new ArrayTypeMismatchException();
|
||||
}
|
||||
|
||||
// Token: 0x06006BD2 RID: 27602 RVA: 0x0017EE48 File Offset: 0x0017D048
|
||||
[Token(Token = "0x6006BD2")]
|
||||
[Address(RVA = "0x146CAC0", Offset = "0x146B8C0", VA = "0x18146CAC0", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
JobHandle jobHandle = this.<jobHandle>k__BackingField;
|
||||
this.sharedResultMesh.Dispose();
|
||||
this.optimizationData.Dispose();
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006BD3 RID: 27603 RVA: 0x0017EE7C File Offset: 0x0017D07C
|
||||
[Token(Token = "0x6006BD3")]
|
||||
[Address(RVA = "0x146C3D0", Offset = "0x146B1D0", VA = "0x18146C3D0")]
|
||||
public void Clear()
|
||||
{
|
||||
JobHandle jobHandle = this.<jobHandle>k__BackingField;
|
||||
this.<cluster>k__BackingField = (ulong)0L;
|
||||
}
|
||||
|
||||
// Token: 0x06006BD4 RID: 27604 RVA: 0x0017EE9C File Offset: 0x0017D09C
|
||||
[Token(Token = "0x6006BD4")]
|
||||
[Address(RVA = "0x146D610", Offset = "0x146C410", VA = "0x18146D610")]
|
||||
public CreateMeshFromClusterJob()
|
||||
{
|
||||
PCIKHFEIHGO pcikhfeihgo = new PCIKHFEIHGO();
|
||||
this.sharedResultMesh = pcikhfeihgo;
|
||||
OCCMLFOBCEM occmlfobcem = new OCCMLFOBCEM();
|
||||
this.optimizationData = occmlfobcem;
|
||||
base..ctor();
|
||||
}
|
||||
|
||||
// Token: 0x04004834 RID: 18484
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x4004834")]
|
||||
private PCIKHFEIHGO sharedResultMesh;
|
||||
|
||||
// Token: 0x04004835 RID: 18485
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x4004835")]
|
||||
private PCIKHFEIHGO resultMesh;
|
||||
|
||||
// Token: 0x04004836 RID: 18486
|
||||
[Token(Token = "0x4004836")]
|
||||
public static readonly PCIKHFEIHGO SharedAdditionalMesh = new PCIKHFEIHGO();
|
||||
|
||||
// Token: 0x04004837 RID: 18487
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x4004837")]
|
||||
private OCCMLFOBCEM optimizationData;
|
||||
|
||||
// Token: 0x04004838 RID: 18488
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x4004838")]
|
||||
private NativeList<CJJFNIHNLBD> occlusion;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001286 RID: 4742
|
||||
[Token(Token = "0x2001286")]
|
||||
public interface IClusterLODComponent : IPMIEGJGMGN
|
||||
{
|
||||
// Token: 0x17001167 RID: 4455
|
||||
// (get) Token: 0x06006BB4 RID: 27572
|
||||
[Token(Token = "0x17001167")]
|
||||
Bounds ClusterLODBounds
|
||||
{
|
||||
[Token(Token = "0x6006BB4")]
|
||||
[Address(Slot = "0")]
|
||||
get;
|
||||
}
|
||||
|
||||
// Token: 0x17001168 RID: 4456
|
||||
// (get) Token: 0x06006BB5 RID: 27573
|
||||
[Token(Token = "0x17001168")]
|
||||
CJJFNIHNLBD OcclusionData
|
||||
{
|
||||
[Token(Token = "0x6006BB5")]
|
||||
[Address(Slot = "1")]
|
||||
get;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200127B RID: 4731
|
||||
[Token(Token = "0x200127B")]
|
||||
[BurstCompile]
|
||||
public struct InitSubdivideMeshData : IJob
|
||||
{
|
||||
// Token: 0x06006B60 RID: 27488 RVA: 0x0017D128 File Offset: 0x0017B328
|
||||
[Token(Token = "0x6006B60")]
|
||||
[Address(RVA = "0x146DA40", Offset = "0x146C840", VA = "0x18146DA40")]
|
||||
public InitSubdivideMeshData(SubdivideMeshData subdivideData, PCIKHFEIHGO mesh)
|
||||
{
|
||||
NativeList<int> elflbeckfef = mesh.ELFLBECKFEF;
|
||||
this.srcIndices = elflbeckfef;
|
||||
NativeList<int> origIndices = subdivideData.origIndices;
|
||||
this.destIndices = origIndices;
|
||||
}
|
||||
|
||||
// Token: 0x06006B61 RID: 27489 RVA: 0x0017D158 File Offset: 0x0017B358
|
||||
[Token(Token = "0x6006B61")]
|
||||
[Address(RVA = "0x146D9B0", Offset = "0x146C7B0", VA = "0x18146D9B0", Slot = "4")]
|
||||
public void Execute()
|
||||
{
|
||||
int num = 0;
|
||||
int num2;
|
||||
if (num2 > 0)
|
||||
{
|
||||
num++;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x040047C5 RID: 18373
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x40047C5")]
|
||||
[ReadOnly]
|
||||
public NativeList<int> srcIndices;
|
||||
|
||||
// Token: 0x040047C6 RID: 18374
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047C6")]
|
||||
public NativeList<int> destIndices;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x02001283 RID: 4739
|
||||
[Token(Token = "0x2001283")]
|
||||
public struct MeshComponentInfo
|
||||
{
|
||||
// Token: 0x06006BA9 RID: 27561 RVA: 0x0017E2A0 File Offset: 0x0017C4A0
|
||||
[Token(Token = "0x6006BA9")]
|
||||
[Address(RVA = "0x146E0D0", Offset = "0x146CED0", VA = "0x18146E0D0")]
|
||||
public MeshComponentInfo(int startIndex, int indexCount, int startVertex, int vertexCount)
|
||||
{
|
||||
this.vertexCount = 0;
|
||||
this.startIndex = startIndex;
|
||||
this.indexCount = indexCount;
|
||||
this.startVertex = startVertex;
|
||||
}
|
||||
|
||||
// Token: 0x040047FA RID: 18426
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x40047FA")]
|
||||
public int startVertex;
|
||||
|
||||
// Token: 0x040047FB RID: 18427
|
||||
[FieldOffset(Offset = "0x4")]
|
||||
[Token(Token = "0x40047FB")]
|
||||
public int startIndex;
|
||||
|
||||
// Token: 0x040047FC RID: 18428
|
||||
[FieldOffset(Offset = "0x8")]
|
||||
[Token(Token = "0x40047FC")]
|
||||
public int indexCount;
|
||||
|
||||
// Token: 0x040047FD RID: 18429
|
||||
[FieldOffset(Offset = "0xC")]
|
||||
[Token(Token = "0x40047FD")]
|
||||
public int vertexCount;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Collections;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200127A RID: 4730
|
||||
[Token(Token = "0x200127A")]
|
||||
public class SubdivideMeshData : IDisposable
|
||||
{
|
||||
// Token: 0x06006B5D RID: 27485 RVA: 0x0017D0C0 File Offset: 0x0017B2C0
|
||||
[Token(Token = "0x6006B5D")]
|
||||
[Address(RVA = "0x14717F0", Offset = "0x14705F0", VA = "0x1814717F0")]
|
||||
public void InitMemory(int numIndices, Allocator allocator)
|
||||
{
|
||||
bool flag;
|
||||
if (!flag)
|
||||
{
|
||||
}
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
}
|
||||
bool flag3;
|
||||
if (flag3)
|
||||
{
|
||||
}
|
||||
int num = 0;
|
||||
this.origIndices = num;
|
||||
bool flag4;
|
||||
if (!flag4)
|
||||
{
|
||||
int num2 = 0;
|
||||
int num3 = 0;
|
||||
SubdivideMeshData.vertexMap = num2;
|
||||
SubdivideMeshData.indexRemap = num3;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B5E RID: 27486 RVA: 0x0017D100 File Offset: 0x0017B300
|
||||
[Token(Token = "0x6006B5E")]
|
||||
[Address(RVA = "0x1471740", Offset = "0x1470540", VA = "0x181471740", Slot = "4")]
|
||||
public void Dispose()
|
||||
{
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006B5F RID: 27487 RVA: 0x0017D114 File Offset: 0x0017B314
|
||||
[Token(Token = "0x6006B5F")]
|
||||
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
||||
public SubdivideMeshData()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x040047C1 RID: 18369
|
||||
[Token(Token = "0x40047C1")]
|
||||
public static NativeMultiHashMap<int, int> vertexMap;
|
||||
|
||||
// Token: 0x040047C2 RID: 18370
|
||||
[Token(Token = "0x40047C2")]
|
||||
public static NativeArray<int> indexRemap;
|
||||
|
||||
// Token: 0x040047C3 RID: 18371
|
||||
[Token(Token = "0x40047C3")]
|
||||
private static int refCount;
|
||||
|
||||
// Token: 0x040047C4 RID: 18372
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047C4")]
|
||||
public NativeList<int> origIndices;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,297 @@
|
||||
using System;
|
||||
using Cpp2IlInjected;
|
||||
using Unity.Burst;
|
||||
using Unity.Collections;
|
||||
using Unity.Jobs;
|
||||
using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace ClusterLOD
|
||||
{
|
||||
// Token: 0x0200127C RID: 4732
|
||||
[Token(Token = "0x200127C")]
|
||||
[BurstCompile]
|
||||
public struct SubdivideMeshJob : IJob
|
||||
{
|
||||
// Token: 0x06006B62 RID: 27490 RVA: 0x0017D170 File Offset: 0x0017B370
|
||||
[Token(Token = "0x6006B62")]
|
||||
[Address(RVA = "0x1473010", Offset = "0x1471E10", VA = "0x181473010")]
|
||||
public SubdivideMeshJob(SubdivideMeshData subdiveData, PCIKHFEIHGO mesh, PCIKHFEIHGO additionalMesh, float maxEdgeSize, float maxDistance, Vector3 eyePos, float rootScale)
|
||||
{
|
||||
NativeList<float3> ddpnlakckdp = mesh.DDPNLAKCKDP;
|
||||
this.srcVerts = ddpnlakckdp;
|
||||
NativeArray<float3> cdpiecocian = mesh.CDPIECOCIAN;
|
||||
this.srcNormals = cdpiecocian;
|
||||
NativeArray<float4> nmfapcbmggf = mesh.NMFAPCBMGGF;
|
||||
this.srcTangents = nmfapcbmggf;
|
||||
NativeArray<float2> maeaklfbpmo = mesh.MAEAKLFBPMO;
|
||||
this.srcUVs = maeaklfbpmo;
|
||||
NativeArray<float4> pjnfmocjcal = mesh.PJNFMOCJCAL;
|
||||
this.srcMaterialIndices = pjnfmocjcal;
|
||||
NativeList<int> elflbeckfef = mesh.ELFLBECKFEF;
|
||||
this.srcIndices = elflbeckfef;
|
||||
NativeList<int> nativeList = subdiveData.origIndices;
|
||||
this.origIndices = nativeList;
|
||||
NativeList<float3> ddpnlakckdp2 = additionalMesh.DDPNLAKCKDP;
|
||||
this.newVerts = ddpnlakckdp2;
|
||||
NativeArray<float3> cdpiecocian2 = additionalMesh.CDPIECOCIAN;
|
||||
this.maxEdgeSize = (float)0;
|
||||
this.newNormals = cdpiecocian2;
|
||||
NativeArray<float4> nmfapcbmggf2 = additionalMesh.NMFAPCBMGGF;
|
||||
this.newTangents = nmfapcbmggf2;
|
||||
NativeArray<float4> pjnfmocjcal2 = additionalMesh.PJNFMOCJCAL;
|
||||
this.maxEdgeSizeSq = (float)0;
|
||||
this.newMaterialIndices = pjnfmocjcal2;
|
||||
NativeArray<float2> maeaklfbpmo2 = additionalMesh.MAEAKLFBPMO;
|
||||
this.newUVs = maeaklfbpmo2;
|
||||
NativeList<int> elflbeckfef2 = additionalMesh.ELFLBECKFEF;
|
||||
this.newIndices = elflbeckfef2;
|
||||
this.maxDistance = (float)0;
|
||||
this.maxDistanceSq = (float)0;
|
||||
float3 @float;
|
||||
float z = @float.z;
|
||||
this.rootScale = (float)0;
|
||||
this.eyePos.z = z;
|
||||
}
|
||||
|
||||
// Token: 0x06006B63 RID: 27491 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B63")]
|
||||
[Address(RVA = "0x1472BE0", Offset = "0x14719E0", VA = "0x181472BE0")]
|
||||
private float3 GetVert(int i)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B64 RID: 27492 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B64")]
|
||||
[Address(RVA = "0x1472C80", Offset = "0x1471A80", VA = "0x181472C80")]
|
||||
private void SetupVertFromIndex(int i, out float3 newVert, out float3 newNormal, out float4 newTangent, out float4 newMatIdx, out float2 newUV)
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006B65 RID: 27493 RVA: 0x0017D284 File Offset: 0x0017B484
|
||||
[Token(Token = "0x6006B65")]
|
||||
[Address(RVA = "0x1471EB0", Offset = "0x1470CB0", VA = "0x181471EB0")]
|
||||
private int CreateVert(int i1, int i2)
|
||||
{
|
||||
int num = 0;
|
||||
NativeArray<float3> nativeArray = this.newNormals;
|
||||
int num3;
|
||||
int num2 = num3 - 1;
|
||||
nativeArray.m_Length = num;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
this.newTangents.m_Buffer = num;
|
||||
}
|
||||
NativeArray<float4> nativeArray2 = this.newMaterialIndices;
|
||||
this.newUVs.m_Buffer = num;
|
||||
int num4;
|
||||
num4 += num2;
|
||||
return num4;
|
||||
}
|
||||
|
||||
// Token: 0x06006B66 RID: 27494 RVA: 0x0017D2D8 File Offset: 0x0017B4D8
|
||||
[Token(Token = "0x6006B66")]
|
||||
[Address(RVA = "0x1471CB0", Offset = "0x1470AB0", VA = "0x181471CB0")]
|
||||
private void AddTriangle(int i1, int i2, int i3)
|
||||
{
|
||||
float3 @float;
|
||||
float z = @float.z;
|
||||
float3 float2;
|
||||
float z2 = float2.z;
|
||||
float3 float3;
|
||||
float z3 = float3.z;
|
||||
}
|
||||
|
||||
// Token: 0x06006B67 RID: 27495 RVA: 0x0017D2FC File Offset: 0x0017B4FC
|
||||
[Token(Token = "0x6006B67")]
|
||||
[Address(RVA = "0x1472E60", Offset = "0x1471C60", VA = "0x181472E60")]
|
||||
private bool ShouldSplit(int i1, int i2, float splitSizeSq)
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006B67)
|
||||
|
||||
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean ClusterLOD.SubdivideMeshJob::ShouldSplit(System.Int32,System.Int32,System.Single)
|
||||
|
||||
---> System.Exception: Basic block has to end with unconditional control flow.
|
||||
{
|
||||
Block_0:
|
||||
stloc:float32(var_1_06, ldfld:float32(float3::z, ldloc:float3[exp:valuetype [Unity.Mathematics]Unity.Mathematics.float3&](var_0)))
|
||||
stloc:float32(var_3_0D, ldfld:float32(float3::z, ldloc:float3[exp:valuetype [Unity.Mathematics]Unity.Mathematics.float3&](var_2)))
|
||||
stloc:float32(var_4_19, ldfld:float32(float3::z, ldfld:float3[exp:valuetype [Unity.Mathematics]Unity.Mathematics.float3&](SubdivideMeshJob::eyePos, ldloc:valuetype ClusterLOD.SubdivideMeshJob&(this))))
|
||||
}
|
||||
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
||||
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
||||
--- End of inner exception stack trace ---
|
||||
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
||||
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
||||
*/;
|
||||
}
|
||||
|
||||
// Token: 0x06006B68 RID: 27496 RVA: 0x0017D328 File Offset: 0x0017B528
|
||||
[Token(Token = "0x6006B68")]
|
||||
[Address(RVA = "0x1471BF0", Offset = "0x14709F0", VA = "0x181471BF0")]
|
||||
private bool Add2SideSplitTriangle(int i1, int i2, int i3, float splitSizeSq, bool add)
|
||||
{
|
||||
bool flag;
|
||||
if (!flag)
|
||||
{
|
||||
this.AddTriangle(i1, i2, i3);
|
||||
}
|
||||
int num = this.CreateVert(i1, i2);
|
||||
this.AddTriangle(i1, i2, i3);
|
||||
this.AddTriangle(i1, i2, i3);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06006B69 RID: 27497 RVA: 0x0017D360 File Offset: 0x0017B560
|
||||
[Token(Token = "0x6006B69")]
|
||||
[Address(RVA = "0x1471990", Offset = "0x1470790", VA = "0x181471990")]
|
||||
private bool Add1SideSplitTriangle(int i1, int i2, int i3, float splitSizeSq, bool add)
|
||||
{
|
||||
bool flag;
|
||||
if (!flag)
|
||||
{
|
||||
}
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
float3 @float;
|
||||
float z = @float.z;
|
||||
float3 float2;
|
||||
float z2 = float2.z;
|
||||
float3 float3;
|
||||
float z3 = float3.z;
|
||||
int num = this.CreateVert(i3, i2);
|
||||
}
|
||||
int num2 = this.CreateVert(i1, i2);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Token: 0x06006B6A RID: 27498 RVA: 0x0017D3A8 File Offset: 0x0017B5A8
|
||||
[Token(Token = "0x6006B6A")]
|
||||
[Address(RVA = "0x1472FF0", Offset = "0x1471DF0", VA = "0x181472FF0")]
|
||||
private void SwapOrder(int i1, int i2, int i3, out int i1o, out int i2o, out int i3o)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06006B6B RID: 27499 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006B6B")]
|
||||
[Address(RVA = "0x1472280", Offset = "0x1471080", VA = "0x181472280", Slot = "4")]
|
||||
public void Execute()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x040047C7 RID: 18375
|
||||
[FieldOffset(Offset = "0x0")]
|
||||
[Token(Token = "0x40047C7")]
|
||||
[ReadOnly]
|
||||
private NativeList<float3> srcVerts;
|
||||
|
||||
// Token: 0x040047C8 RID: 18376
|
||||
[FieldOffset(Offset = "0x10")]
|
||||
[Token(Token = "0x40047C8")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float3> srcNormals;
|
||||
|
||||
// Token: 0x040047C9 RID: 18377
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x40047C9")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float4> srcTangents;
|
||||
|
||||
// Token: 0x040047CA RID: 18378
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x40047CA")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float2> srcUVs;
|
||||
|
||||
// Token: 0x040047CB RID: 18379
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x40047CB")]
|
||||
[ReadOnly]
|
||||
private NativeArray<float4> srcMaterialIndices;
|
||||
|
||||
// Token: 0x040047CC RID: 18380
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x40047CC")]
|
||||
private NativeList<int> origIndices;
|
||||
|
||||
// Token: 0x040047CD RID: 18381
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x40047CD")]
|
||||
private NativeList<int> srcIndices;
|
||||
|
||||
// Token: 0x040047CE RID: 18382
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x40047CE")]
|
||||
private NativeList<float3> newVerts;
|
||||
|
||||
// Token: 0x040047CF RID: 18383
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x40047CF")]
|
||||
private NativeArray<float3> newNormals;
|
||||
|
||||
// Token: 0x040047D0 RID: 18384
|
||||
[FieldOffset(Offset = "0x90")]
|
||||
[Token(Token = "0x40047D0")]
|
||||
private NativeArray<float4> newTangents;
|
||||
|
||||
// Token: 0x040047D1 RID: 18385
|
||||
[FieldOffset(Offset = "0xA0")]
|
||||
[Token(Token = "0x40047D1")]
|
||||
private NativeArray<float4> newMaterialIndices;
|
||||
|
||||
// Token: 0x040047D2 RID: 18386
|
||||
[FieldOffset(Offset = "0xB0")]
|
||||
[Token(Token = "0x40047D2")]
|
||||
private NativeArray<float2> newUVs;
|
||||
|
||||
// Token: 0x040047D3 RID: 18387
|
||||
[FieldOffset(Offset = "0xC0")]
|
||||
[Token(Token = "0x40047D3")]
|
||||
private NativeList<int> newIndices;
|
||||
|
||||
// Token: 0x040047D4 RID: 18388
|
||||
[FieldOffset(Offset = "0xD0")]
|
||||
[Token(Token = "0x40047D4")]
|
||||
[ReadOnly]
|
||||
private float maxEdgeSizeSq;
|
||||
|
||||
// Token: 0x040047D5 RID: 18389
|
||||
[FieldOffset(Offset = "0xD4")]
|
||||
[Token(Token = "0x40047D5")]
|
||||
[ReadOnly]
|
||||
public float maxDistanceSq;
|
||||
|
||||
// Token: 0x040047D6 RID: 18390
|
||||
[FieldOffset(Offset = "0xD8")]
|
||||
[Token(Token = "0x40047D6")]
|
||||
[ReadOnly]
|
||||
private float3 eyePos;
|
||||
|
||||
// Token: 0x040047D7 RID: 18391
|
||||
[FieldOffset(Offset = "0xE4")]
|
||||
[Token(Token = "0x40047D7")]
|
||||
[ReadOnly]
|
||||
private float rootScale;
|
||||
|
||||
// Token: 0x040047D8 RID: 18392
|
||||
[FieldOffset(Offset = "0xE8")]
|
||||
[Token(Token = "0x40047D8")]
|
||||
[ReadOnly]
|
||||
private float maxEdgeSize;
|
||||
|
||||
// Token: 0x040047D9 RID: 18393
|
||||
[FieldOffset(Offset = "0xEC")]
|
||||
[Token(Token = "0x40047D9")]
|
||||
[ReadOnly]
|
||||
public float maxDistance;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user