m
This commit is contained in:
@@ -0,0 +1,907 @@
|
||||
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: 0x02001342 RID: 4930
|
||||
[Token(Token = "0x2001342")]
|
||||
public class ClusterLODManager : MonoBehaviour
|
||||
{
|
||||
// Token: 0x170011CF RID: 4559
|
||||
// (get) Token: 0x06006E93 RID: 28307 RVA: 0x00184328 File Offset: 0x00182528
|
||||
// (set) Token: 0x06006E94 RID: 28308 RVA: 0x0018433C File Offset: 0x0018253C
|
||||
[Token(Token = "0x170011CF")]
|
||||
public ClusterLODConfig Config
|
||||
{
|
||||
[Token(Token = "0x6006E93")]
|
||||
[Address(RVA = "0x4157B0", Offset = "0x4147B0", VA = "0x1804157B0")]
|
||||
get;
|
||||
[Token(Token = "0x6006E94")]
|
||||
[Address(RVA = "0x4157F0", Offset = "0x4147F0", VA = "0x1804157F0")]
|
||||
private set;
|
||||
}
|
||||
|
||||
// Token: 0x170011D0 RID: 4560
|
||||
// (get) Token: 0x06006E95 RID: 28309 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
// (set) Token: 0x06006E96 RID: 28310 RVA: 0x00184350 File Offset: 0x00182550
|
||||
[Token(Token = "0x170011D0")]
|
||||
public Vector3 EyePos
|
||||
{
|
||||
[Token(Token = "0x6006E95")]
|
||||
[Address(RVA = "0x169B820", Offset = "0x169A820", VA = "0x18169B820")]
|
||||
[CompilerGenerated]
|
||||
get
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
[Token(Token = "0x6006E96")]
|
||||
[Address(RVA = "0x169B420", Offset = "0x169A420", VA = "0x18169B420")]
|
||||
[CompilerGenerated]
|
||||
private set
|
||||
{
|
||||
float z = value.z;
|
||||
this.<EyePos>k__BackingField.z = z;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170011D1 RID: 4561
|
||||
// (get) Token: 0x06006E97 RID: 28311 RVA: 0x00184370 File Offset: 0x00182570
|
||||
[Token(Token = "0x170011D1")]
|
||||
public static ClusterLODManager Instance
|
||||
{
|
||||
[Token(Token = "0x6006E97")]
|
||||
[Address(RVA = "0x1F3F680", Offset = "0x1F3E680", VA = "0x181F3F680")]
|
||||
get
|
||||
{
|
||||
return ClusterLODManager._instance;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006E98 RID: 28312 RVA: 0x00184384 File Offset: 0x00182584
|
||||
[Token(Token = "0x6006E98")]
|
||||
[Address(RVA = "0x1F3DA30", Offset = "0x1F3CA30", VA = "0x181F3DA30")]
|
||||
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: 0x06006E99 RID: 28313 RVA: 0x0018440C File Offset: 0x0018260C
|
||||
[Token(Token = "0x6006E99")]
|
||||
[Address(RVA = "0x1F3E6A0", Offset = "0x1F3D6A0", VA = "0x181F3E6A0")]
|
||||
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: 0x170011D2 RID: 4562
|
||||
// (get) Token: 0x06006E9A RID: 28314 RVA: 0x0018444C File Offset: 0x0018264C
|
||||
[Token(Token = "0x170011D2")]
|
||||
public static bool WorldCreated
|
||||
{
|
||||
[Token(Token = "0x6006E9A")]
|
||||
[Address(RVA = "0x1F3F740", Offset = "0x1F3E740", VA = "0x181F3F740")]
|
||||
get
|
||||
{
|
||||
ClusterLODManager instance = ClusterLODManager._instance;
|
||||
int num = 0;
|
||||
return instance == num || ClusterLODManager._instance.CurrentState == ClusterLODManager.State.Running;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x170011D3 RID: 4563
|
||||
// (get) Token: 0x06006E9B RID: 28315 RVA: 0x00184480 File Offset: 0x00182680
|
||||
[Token(Token = "0x170011D3")]
|
||||
public static bool ComponentCollectionEnabled
|
||||
{
|
||||
[Token(Token = "0x6006E9B")]
|
||||
[Address(RVA = "0x1F3F570", Offset = "0x1F3E570", VA = "0x181F3F570")]
|
||||
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: 0x06006E9C RID: 28316 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006E9C")]
|
||||
[Address(RVA = "0x1F3CE60", Offset = "0x1F3BE60", VA = "0x181F3CE60")]
|
||||
private void Awake()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x06006E9D RID: 28317 RVA: 0x001844C8 File Offset: 0x001826C8
|
||||
[Token(Token = "0x6006E9D")]
|
||||
[Address(RVA = "0x1F3ED50", Offset = "0x1F3DD50", VA = "0x181F3ED50")]
|
||||
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: 0x06006E9E RID: 28318 RVA: 0x0018450C File Offset: 0x0018270C
|
||||
[Token(Token = "0x6006E9E")]
|
||||
[Address(RVA = "0x1F3DC60", Offset = "0x1F3CC60", VA = "0x181F3DC60")]
|
||||
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: 0x06006E9F RID: 28319 RVA: 0x00184674 File Offset: 0x00182874
|
||||
[Token(Token = "0x6006E9F")]
|
||||
[Address(RVA = "0x1F3E970", Offset = "0x1F3D970", VA = "0x181F3E970")]
|
||||
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: 0x06006EA0 RID: 28320 RVA: 0x001847B0 File Offset: 0x001829B0
|
||||
[Token(Token = "0x6006EA0")]
|
||||
[Address(RVA = "0x1F3F330", Offset = "0x1F3E330", VA = "0x181F3F330")]
|
||||
private void Update()
|
||||
{
|
||||
if (this.CurrentState == ClusterLODManager.State.Running)
|
||||
{
|
||||
this.UpdateLODs();
|
||||
bool flag = this.ClusterMeshAssetCache.Update();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06006EA1 RID: 28321 RVA: 0x001847E0 File Offset: 0x001829E0
|
||||
[Token(Token = "0x6006EA1")]
|
||||
[Address(RVA = "0x1F3D050", Offset = "0x1F3C050", VA = "0x181F3D050")]
|
||||
private IEnumerator CreateWorld()
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006EA1)
|
||||
|
||||
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: 0x06006EA2 RID: 28322 RVA: 0x00184804 File Offset: 0x00182A04
|
||||
[Token(Token = "0x6006EA2")]
|
||||
[Address(RVA = "0x1F3D800", Offset = "0x1F3C800", VA = "0x181F3D800")]
|
||||
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: 0x06006EA3 RID: 28323 RVA: 0x00184840 File Offset: 0x00182A40
|
||||
[Token(Token = "0x6006EA3")]
|
||||
[Address(RVA = "0x1F3EFA0", Offset = "0x1F3DFA0", VA = "0x181F3EFA0")]
|
||||
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: 0x06006EA4 RID: 28324 RVA: 0x001848EC File Offset: 0x00182AEC
|
||||
[Token(Token = "0x6006EA4")]
|
||||
[Address(RVA = "0x1F3CD80", Offset = "0x1F3BD80", VA = "0x181F3CD80")]
|
||||
public void AddClusterMeshRenderers(List<ClusterMeshRenderer> newClusters, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
this.worldClusterMeshRenderers[(int)layer].AddRange(newClusters);
|
||||
}
|
||||
|
||||
// Token: 0x06006EA5 RID: 28325 RVA: 0x00184914 File Offset: 0x00182B14
|
||||
[Token(Token = "0x6006EA5")]
|
||||
[Address(RVA = "0x1F3E160", Offset = "0x1F3D160", VA = "0x181F3E160")]
|
||||
public void RemoveClusterMeshRenderers(List<ClusterMeshRenderer> newClusters, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
object syncRoot = newClusters._syncRoot;
|
||||
bool flag2;
|
||||
if (flag2)
|
||||
{
|
||||
}
|
||||
if (num != 0)
|
||||
{
|
||||
goto IL_33;
|
||||
}
|
||||
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
||||
{
|
||||
}
|
||||
List<ClusterMeshRenderer> list = this.worldClusterMeshRenderers[(int)layer];
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
return;
|
||||
IL_33:
|
||||
throw new IndexOutOfRangeException();
|
||||
}
|
||||
|
||||
// Token: 0x06006EA6 RID: 28326 RVA: 0x00184978 File Offset: 0x00182B78
|
||||
[Token(Token = "0x6006EA6")]
|
||||
[Address(RVA = "0x1F3D0B0", Offset = "0x1F3C0B0", VA = "0x181F3D0B0")]
|
||||
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: 0x06006EA7 RID: 28327 RVA: 0x00184BCC File Offset: 0x00182DCC
|
||||
[Token(Token = "0x6006EA7")]
|
||||
[Address(RVA = "0x1F3D9F0", Offset = "0x1F3C9F0", VA = "0x181F3D9F0")]
|
||||
public ClusterLODManager.RenderLayer GetRenderLayer(Vector3 extents)
|
||||
{
|
||||
float sqrMagnitude = extents.sqrMagnitude;
|
||||
float maxRadiusForDetailObjects = this.<Config>k__BackingField.maxRadiusForDetailObjects;
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x06006EA8 RID: 28328 RVA: 0x00184BF4 File Offset: 0x00182DF4
|
||||
[Token(Token = "0x6006EA8")]
|
||||
[Address(RVA = "0x1F3DFE0", Offset = "0x1F3CFE0", VA = "0x181F3DFE0")]
|
||||
public void RegisterShapeContainer(ShapeContainer newShapeContainer)
|
||||
{
|
||||
this.newShapeContainers.Add(newShapeContainer);
|
||||
}
|
||||
|
||||
// Token: 0x06006EA9 RID: 28329 RVA: 0x00184C14 File Offset: 0x00182E14
|
||||
[Token(Token = "0x6006EA9")]
|
||||
[Address(RVA = "0x1F3EDA0", Offset = "0x1F3DDA0", VA = "0x181F3EDA0")]
|
||||
public bool TryDeRegisterShapeContainer(ShapeContainer newShapeContainer)
|
||||
{
|
||||
return this.newShapeContainers.Remove(newShapeContainer);
|
||||
}
|
||||
|
||||
// Token: 0x06006EAA RID: 28330 RVA: 0x00184C34 File Offset: 0x00182E34
|
||||
[Token(Token = "0x6006EAA")]
|
||||
[Address(RVA = "0x1F3DF80", Offset = "0x1F3CF80", VA = "0x181F3DF80")]
|
||||
public void RegisterComponent(IClusterLODComponent newComponent)
|
||||
{
|
||||
this.newAddedStaticComponents.Add(newComponent);
|
||||
}
|
||||
|
||||
// Token: 0x06006EAB RID: 28331 RVA: 0x00184C54 File Offset: 0x00182E54
|
||||
[Token(Token = "0x6006EAB")]
|
||||
[Address(RVA = "0x1F3CCF0", Offset = "0x1F3BCF0", VA = "0x181F3CCF0")]
|
||||
private void AddClusterMeshClusterInfo(ClusterMesh.ClusterInfo info, int layer)
|
||||
{
|
||||
this.clusterInfos[layer].Add(info);
|
||||
}
|
||||
|
||||
// Token: 0x06006EAC RID: 28332 RVA: 0x00184C7C File Offset: 0x00182E7C
|
||||
[Token(Token = "0x6006EAC")]
|
||||
[Address(RVA = "0x1F3E040", Offset = "0x1F3D040", VA = "0x181F3E040")]
|
||||
private void RemoveClusterMeshClusterInfo(ClusterMesh.ClusterInfo info, int layerIdx)
|
||||
{
|
||||
bool flag = this.clusterInfos[layerIdx].Remove(info);
|
||||
}
|
||||
|
||||
// Token: 0x06006EAD RID: 28333 RVA: 0x00184CA4 File Offset: 0x00182EA4
|
||||
[Token(Token = "0x6006EAD")]
|
||||
[Address(RVA = "0x1F3E0D0", Offset = "0x1F3D0D0", VA = "0x181F3E0D0")]
|
||||
public void RemoveClusterMeshClusterInfo(ClusterMesh.ClusterInfo info)
|
||||
{
|
||||
int num = 0;
|
||||
bool flag = this.clusterInfos[num].Remove(info);
|
||||
num++;
|
||||
}
|
||||
|
||||
// Token: 0x06006EAE RID: 28334 RVA: 0x00184CD0 File Offset: 0x00182ED0
|
||||
[Token(Token = "0x6006EAE")]
|
||||
[Address(RVA = "0x1F3E850", Offset = "0x1F3D850", VA = "0x181F3E850")]
|
||||
private void SortClusterInfos(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
List<ClusterMesh.ClusterInfo> list = this.clusterInfos[(int)layer];
|
||||
Comparison<ClusterMesh.ClusterInfo> <>9__55_ = ClusterLODManager.<>c.<>9__55_0;
|
||||
if (<>9__55_ == 0)
|
||||
{
|
||||
ClusterLODManager.<>c.<>9__55_0 = delegate(ClusterMesh.ClusterInfo a, ClusterMesh.ClusterInfo b)
|
||||
{
|
||||
int num;
|
||||
return num;
|
||||
};
|
||||
}
|
||||
list.Sort(<>9__55_);
|
||||
}
|
||||
|
||||
// Token: 0x06006EAF RID: 28335 RVA: 0x00184D18 File Offset: 0x00182F18
|
||||
[Token(Token = "0x6006EAF")]
|
||||
[Address(RVA = "0x1F3EE00", Offset = "0x1F3DE00", VA = "0x181F3EE00")]
|
||||
private void UpdateClusterDistances(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
||||
{
|
||||
int num;
|
||||
do
|
||||
{
|
||||
num = 0;
|
||||
List<ClusterMeshRenderer> list = this.worldClusterMeshRenderers[(int)layer];
|
||||
bool flag;
|
||||
if (flag)
|
||||
{
|
||||
bool flag2;
|
||||
while (!flag2)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
}
|
||||
|
||||
// Token: 0x06006EB0 RID: 28336 RVA: 0x00184D54 File Offset: 0x00182F54
|
||||
[Token(Token = "0x6006EB0")]
|
||||
[Address(RVA = "0x1F3CE00", Offset = "0x1F3BE00", VA = "0x181F3CE00")]
|
||||
private IEnumerator AssignLODs()
|
||||
{
|
||||
/*
|
||||
An exception occurred when decompiling this method (06006EB0)
|
||||
|
||||
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__57'::System.IDisposable.Dispose, ldloc:'<AssignLODs>d__57'(var_0))
|
||||
stfld:int32('<AssignLODs>d__57'::<>1__state, ldloc:'<AssignLODs>d__57'(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
|
||||
stfld:ClusterLODManager('<AssignLODs>d__57'::<>4__this, ldloc:'<AssignLODs>d__57'(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: 0x06006EB1 RID: 28337 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
[Token(Token = "0x6006EB1")]
|
||||
[Address(RVA = "0x1F3F230", Offset = "0x1F3E230", VA = "0x181F3F230")]
|
||||
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: 0x06006EB2 RID: 28338 RVA: 0x00184D78 File Offset: 0x00182F78
|
||||
[Token(Token = "0x6006EB2")]
|
||||
[Address(RVA = "0x1F3E3F0", Offset = "0x1F3D3F0", VA = "0x181F3E3F0")]
|
||||
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)
|
||||
{
|
||||
}
|
||||
bool flag4;
|
||||
while (!flag4)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
while (num != 0);
|
||||
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
||||
{
|
||||
}
|
||||
num++;
|
||||
}
|
||||
|
||||
// Token: 0x06006EB3 RID: 28339 RVA: 0x00184DD0 File Offset: 0x00182FD0
|
||||
[Token(Token = "0x6006EB3")]
|
||||
[Address(RVA = "0x1F3E810", Offset = "0x1F3D810", VA = "0x181F3E810")]
|
||||
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: 0x06006EB4 RID: 28340 RVA: 0x00184E08 File Offset: 0x00183008
|
||||
[Token(Token = "0x6006EB4")]
|
||||
[Address(RVA = "0x1F3DF70", Offset = "0x1F3CF70", VA = "0x181F3DF70")]
|
||||
public void RegisterAdditionalVertsChange(int change)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06006EB5 RID: 28341 RVA: 0x00184E18 File Offset: 0x00183018
|
||||
[Token(Token = "0x6006EB5")]
|
||||
[Address(RVA = "0x1F3D950", Offset = "0x1F3C950", VA = "0x181F3D950")]
|
||||
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: 0x06006EB6 RID: 28342 RVA: 0x00184E4C File Offset: 0x0018304C
|
||||
[Token(Token = "0x6006EB6")]
|
||||
[Address(RVA = "0x1F3D910", Offset = "0x1F3C910", VA = "0x181F3D910")]
|
||||
public int GetMaxNumActiveLOD0Verts()
|
||||
{
|
||||
return this.<Config>k__BackingField.maxDynamicNearVerts;
|
||||
}
|
||||
|
||||
// Token: 0x06006EB7 RID: 28343 RVA: 0x00184E6C File Offset: 0x0018306C
|
||||
[Token(Token = "0x6006EB7")]
|
||||
[Address(RVA = "0x1F3F370", Offset = "0x1F3E370", VA = "0x181F3F370")]
|
||||
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: 0x06006EB8 RID: 28344 RVA: 0x0000220F File Offset: 0x0000040F
|
||||
// Note: this type is marked as 'beforefieldinit'.
|
||||
[Token(Token = "0x6006EB8")]
|
||||
[Address(RVA = "0x4242D0", Offset = "0x4232D0", VA = "0x1804242D0")]
|
||||
static ClusterLODManager()
|
||||
{
|
||||
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
||||
}
|
||||
|
||||
// Token: 0x0400490B RID: 18699
|
||||
[Token(Token = "0x400490B")]
|
||||
public const int NUM_RENDER_LAYERS = 3;
|
||||
|
||||
// Token: 0x0400490D RID: 18701
|
||||
[FieldOffset(Offset = "0x20")]
|
||||
[Token(Token = "0x400490D")]
|
||||
public ClusterMeshRenderer clusterMeshRendererPrefab;
|
||||
|
||||
// Token: 0x0400490E RID: 18702
|
||||
[FieldOffset(Offset = "0x28")]
|
||||
[Token(Token = "0x400490E")]
|
||||
public MeshFilter clusterPrefab;
|
||||
|
||||
// Token: 0x0400490F RID: 18703
|
||||
[FieldOffset(Offset = "0x30")]
|
||||
[Token(Token = "0x400490F")]
|
||||
private GameObject detailRoot;
|
||||
|
||||
// Token: 0x04004910 RID: 18704
|
||||
[FieldOffset(Offset = "0x38")]
|
||||
[Token(Token = "0x4004910")]
|
||||
private GameObject worldRoot;
|
||||
|
||||
// Token: 0x04004911 RID: 18705
|
||||
[FieldOffset(Offset = "0x40")]
|
||||
[Token(Token = "0x4004911")]
|
||||
public ClusterMeshAssetCache ClusterMeshAssetCache;
|
||||
|
||||
// Token: 0x04004912 RID: 18706
|
||||
[FieldOffset(Offset = "0x48")]
|
||||
[Token(Token = "0x4004912")]
|
||||
public List<IClusterLODComponent> newAddedStaticComponents;
|
||||
|
||||
// Token: 0x04004913 RID: 18707
|
||||
[FieldOffset(Offset = "0x50")]
|
||||
[Token(Token = "0x4004913")]
|
||||
public List<IClusterLODComponent> newAddedWorldComponents;
|
||||
|
||||
// Token: 0x04004914 RID: 18708
|
||||
[FieldOffset(Offset = "0x58")]
|
||||
[Token(Token = "0x4004914")]
|
||||
public List<IClusterLODComponent> newAddedDetailComponents;
|
||||
|
||||
// Token: 0x04004915 RID: 18709
|
||||
[FieldOffset(Offset = "0x60")]
|
||||
[Token(Token = "0x4004915")]
|
||||
private int clusterIndex;
|
||||
|
||||
// Token: 0x04004917 RID: 18711
|
||||
[FieldOffset(Offset = "0x70")]
|
||||
[Token(Token = "0x4004917")]
|
||||
public ClusterLODManager.State CurrentState;
|
||||
|
||||
// Token: 0x04004918 RID: 18712
|
||||
[FieldOffset(Offset = "0x78")]
|
||||
[Token(Token = "0x4004918")]
|
||||
public List<ClusterMeshRenderer>[] worldClusterMeshRenderers;
|
||||
|
||||
// Token: 0x04004919 RID: 18713
|
||||
[FieldOffset(Offset = "0x80")]
|
||||
[Token(Token = "0x4004919")]
|
||||
private List<ClusterMesh.ClusterInfo>[] clusterInfos;
|
||||
|
||||
// Token: 0x0400491A RID: 18714
|
||||
[FieldOffset(Offset = "0x88")]
|
||||
[Token(Token = "0x400491A")]
|
||||
private Coroutine createWorldCoroutine;
|
||||
|
||||
// Token: 0x0400491B RID: 18715
|
||||
[FieldOffset(Offset = "0x90")]
|
||||
[Token(Token = "0x400491B")]
|
||||
private Coroutine assignLODsCoroutine;
|
||||
|
||||
// Token: 0x0400491C RID: 18716
|
||||
[FieldOffset(Offset = "0x98")]
|
||||
[Token(Token = "0x400491C")]
|
||||
public int estimatedNumWorldLODVerts;
|
||||
|
||||
// Token: 0x0400491D RID: 18717
|
||||
[FieldOffset(Offset = "0x9C")]
|
||||
[Token(Token = "0x400491D")]
|
||||
public int numWorldLODVerts;
|
||||
|
||||
// Token: 0x0400491E RID: 18718
|
||||
[Token(Token = "0x400491E")]
|
||||
private static ClusterLODManager _instance;
|
||||
|
||||
// Token: 0x0400491F RID: 18719
|
||||
[FieldOffset(Offset = "0xA0")]
|
||||
[Token(Token = "0x400491F")]
|
||||
private List<ShapeContainer> newShapeContainers;
|
||||
|
||||
// Token: 0x04004920 RID: 18720
|
||||
[FieldOffset(Offset = "0xA8")]
|
||||
[Token(Token = "0x4004920")]
|
||||
public int numAdditionalVerts;
|
||||
|
||||
// Token: 0x04004921 RID: 18721
|
||||
[FieldOffset(Offset = "0xB0")]
|
||||
[Token(Token = "0x4004921")]
|
||||
private Material sharedMeshMaterial;
|
||||
|
||||
// Token: 0x02001343 RID: 4931
|
||||
[Token(Token = "0x2001343")]
|
||||
public enum RenderLayer
|
||||
{
|
||||
// Token: 0x04004923 RID: 18723
|
||||
[Token(Token = "0x4004923")]
|
||||
World,
|
||||
// Token: 0x04004924 RID: 18724
|
||||
[Token(Token = "0x4004924")]
|
||||
Detail,
|
||||
// Token: 0x04004925 RID: 18725
|
||||
[Token(Token = "0x4004925")]
|
||||
Dynamic,
|
||||
// Token: 0x04004926 RID: 18726
|
||||
[Token(Token = "0x4004926")]
|
||||
NumLayers
|
||||
}
|
||||
|
||||
// Token: 0x02001344 RID: 4932
|
||||
[Token(Token = "0x2001344")]
|
||||
public enum State
|
||||
{
|
||||
// Token: 0x04004928 RID: 18728
|
||||
[Token(Token = "0x4004928")]
|
||||
Waiting,
|
||||
// Token: 0x04004929 RID: 18729
|
||||
[Token(Token = "0x4004929")]
|
||||
Collecting,
|
||||
// Token: 0x0400492A RID: 18730
|
||||
[Token(Token = "0x400492A")]
|
||||
Generating,
|
||||
// Token: 0x0400492B RID: 18731
|
||||
[Token(Token = "0x400492B")]
|
||||
Running
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user