889 lines
34 KiB
C#
889 lines
34 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
using RecRoom;
|
|
using RecRoom.Core.Creation.Shapes;
|
|
using RecRoom.Persistence;
|
|
using Unity.Jobs;
|
|
using UnityEngine;
|
|
|
|
namespace ClusterLOD
|
|
{
|
|
// Token: 0x02000C76 RID: 3190
|
|
[Token(Token = "0x2000C76")]
|
|
[StructLayout(3)]
|
|
public class ClusterLODManager : MonoBehaviour
|
|
{
|
|
// Token: 0x17000D5A RID: 3418
|
|
// (get) Token: 0x06004CCD RID: 19661 RVA: 0x0011DC58 File Offset: 0x0011BE58
|
|
// (set) Token: 0x06004CCE RID: 19662 RVA: 0x0011DC6C File Offset: 0x0011BE6C
|
|
[Token(Token = "0x17000D5A")]
|
|
public ClusterLODConfig Config
|
|
{
|
|
[Token(Token = "0x6004CCD")]
|
|
[Address(RVA = "0x3EE8E0", Offset = "0x3ED2E0", VA = "0x1803EE8E0")]
|
|
get;
|
|
[Token(Token = "0x6004CCE")]
|
|
[Address(RVA = "0x421E00", Offset = "0x420800", VA = "0x180421E00")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17000D5B RID: 3419
|
|
// (get) Token: 0x06004CCF RID: 19663 RVA: 0x0000220F File Offset: 0x0000040F
|
|
// (set) Token: 0x06004CD0 RID: 19664 RVA: 0x0011DC80 File Offset: 0x0011BE80
|
|
[Token(Token = "0x17000D5B")]
|
|
public Vector3 EyePos
|
|
{
|
|
[Token(Token = "0x6004CCF")]
|
|
[Address(RVA = "0x10D4400", Offset = "0x10D2E00", VA = "0x1810D4400")]
|
|
[CompilerGenerated]
|
|
get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
[Token(Token = "0x6004CD0")]
|
|
[Address(RVA = "0x162FC40", Offset = "0x162E640", VA = "0x18162FC40")]
|
|
[CompilerGenerated]
|
|
private set
|
|
{
|
|
float z = value.z;
|
|
this.<EyePos>k__BackingField.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000D5C RID: 3420
|
|
// (get) Token: 0x06004CD1 RID: 19665 RVA: 0x0011DCA0 File Offset: 0x0011BEA0
|
|
[Token(Token = "0x17000D5C")]
|
|
public static ClusterLODManager Instance
|
|
{
|
|
[Token(Token = "0x6004CD1")]
|
|
[Address(RVA = "0x1B2FFC0", Offset = "0x1B2E9C0", VA = "0x181B2FFC0")]
|
|
get
|
|
{
|
|
return ClusterLODManager._instance;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004CD2 RID: 19666 RVA: 0x0011DCB4 File Offset: 0x0011BEB4
|
|
[Token(Token = "0x6004CD2")]
|
|
[Address(RVA = "0x1B2E750", Offset = "0x1B2D150", VA = "0x181B2E750")]
|
|
private void OnDestroy()
|
|
{
|
|
int num = 0;
|
|
ClusterLODManager._instance = num;
|
|
ClusterMeshAssetCache clusterMeshAssetCache = this.ClusterMeshAssetCache;
|
|
clusterMeshAssetCache.createMeshFromClusterJob.Dispose();
|
|
NativeClusterMesh primitiveSrcMesh = clusterMeshAssetCache._primitiveSrcMesh;
|
|
if (primitiveSrcMesh != 0)
|
|
{
|
|
primitiveSrcMesh.Dispose();
|
|
clusterMeshAssetCache._primitiveSrcMesh = num;
|
|
}
|
|
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: 0x06004CD3 RID: 19667 RVA: 0x0011DD40 File Offset: 0x0011BF40
|
|
[Token(Token = "0x6004CD3")]
|
|
[Address(RVA = "0x1B2F040", Offset = "0x1B2DA40", VA = "0x181B2F040")]
|
|
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: 0x17000D5D RID: 3421
|
|
// (get) Token: 0x06004CD4 RID: 19668 RVA: 0x0011DD80 File Offset: 0x0011BF80
|
|
[Token(Token = "0x17000D5D")]
|
|
public static bool WorldCreated
|
|
{
|
|
[Token(Token = "0x6004CD4")]
|
|
[Address(RVA = "0x1B30020", Offset = "0x1B2EA20", VA = "0x181B30020")]
|
|
get
|
|
{
|
|
ClusterLODManager instance = ClusterLODManager._instance;
|
|
int num = 0;
|
|
return instance == num || ClusterLODManager._instance.CurrentState == ClusterLODManager.State.Running;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000D5E RID: 3422
|
|
// (get) Token: 0x06004CD5 RID: 19669 RVA: 0x0011DDB4 File Offset: 0x0011BFB4
|
|
[Token(Token = "0x17000D5E")]
|
|
public static bool ComponentCollectionEnabled
|
|
{
|
|
[Token(Token = "0x6004CD5")]
|
|
[Address(RVA = "0x1B2FEB0", Offset = "0x1B2E8B0", VA = "0x181B2FEB0")]
|
|
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: 0x06004CD6 RID: 19670 RVA: 0x0011DDFC File Offset: 0x0011BFFC
|
|
[Token(Token = "0x6004CD6")]
|
|
[Address(RVA = "0x1B2DC80", Offset = "0x1B2C680", VA = "0x181B2DC80")]
|
|
private void Awake()
|
|
{
|
|
int num = 0;
|
|
this.SetEnabled(num != 0);
|
|
}
|
|
|
|
// Token: 0x06004CD7 RID: 19671 RVA: 0x0011DE28 File Offset: 0x0011C028
|
|
[Token(Token = "0x6004CD7")]
|
|
[Address(RVA = "0x1B2F6F0", Offset = "0x1B2E0F0", VA = "0x181B2F6F0")]
|
|
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: 0x06004CD8 RID: 19672 RVA: 0x0011DE6C File Offset: 0x0011C06C
|
|
[Token(Token = "0x6004CD8")]
|
|
[Address(RVA = "0x1B2E900", Offset = "0x1B2D300", VA = "0x181B2E900")]
|
|
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();
|
|
SafeDestroy.GameObject(this.detailRoot);
|
|
SafeDestroy.GameObject(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__45 <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: 0x06004CD9 RID: 19673 RVA: 0x0011DFD4 File Offset: 0x0011C1D4
|
|
[Token(Token = "0x6004CD9")]
|
|
[Address(RVA = "0x1B2F310", Offset = "0x1B2DD10", VA = "0x181B2F310")]
|
|
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__45 <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: 0x06004CDA RID: 19674 RVA: 0x0011E110 File Offset: 0x0011C310
|
|
[Token(Token = "0x6004CDA")]
|
|
[Address(RVA = "0x1B2FCD0", Offset = "0x1B2E6D0", VA = "0x181B2FCD0")]
|
|
private void Update()
|
|
{
|
|
if (this.CurrentState == ClusterLODManager.State.Running)
|
|
{
|
|
this.UpdateLODs();
|
|
bool flag = this.ClusterMeshAssetCache.Update();
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06004CDB RID: 19675 RVA: 0x0011E140 File Offset: 0x0011C340
|
|
[Token(Token = "0x6004CDB")]
|
|
[Address(RVA = "0x1B2DD60", Offset = "0x1B2C760", VA = "0x181B2DD60")]
|
|
private IEnumerator CreateWorld()
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (06004CDB)
|
|
|
|
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__45'::System.IDisposable.Dispose, ldloc:'<CreateWorld>d__45'(var_0))
|
|
stfld:int32('<CreateWorld>d__45'::<>1__state, ldloc:'<CreateWorld>d__45'(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
|
|
stfld:ClusterLODManager('<CreateWorld>d__45'::<>4__this, ldloc:'<CreateWorld>d__45'(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: 0x06004CDC RID: 19676 RVA: 0x0011E164 File Offset: 0x0011C364
|
|
[Token(Token = "0x6004CDC")]
|
|
[Address(RVA = "0x1B2E520", Offset = "0x1B2CF20", VA = "0x181B2E520")]
|
|
public int GetDetailFromSize(bool near, Vector3 extents)
|
|
{
|
|
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: 0x06004CDD RID: 19677 RVA: 0x0011E1A0 File Offset: 0x0011C3A0
|
|
[Token(Token = "0x6004CDD")]
|
|
[Address(RVA = "0x1B2F930", Offset = "0x1B2E330", VA = "0x181B2F930")]
|
|
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: 0x06004CDE RID: 19678 RVA: 0x0011E24C File Offset: 0x0011C44C
|
|
[Token(Token = "0x6004CDE")]
|
|
[Address(RVA = "0x1B2DB90", Offset = "0x1B2C590", VA = "0x181B2DB90")]
|
|
public void AddClusterMeshRenderers(List<ClusterMeshRenderer> newClusters, ClusterLODManager.RenderLayer layer)
|
|
{
|
|
this.worldClusterMeshRenderers[(int)layer].AddRange(newClusters);
|
|
}
|
|
|
|
// Token: 0x06004CDF RID: 19679 RVA: 0x0011E274 File Offset: 0x0011C474
|
|
[Token(Token = "0x6004CDF")]
|
|
[Address(RVA = "0x1B2DDC0", Offset = "0x1B2C7C0", VA = "0x181B2DDC0")]
|
|
public List<ClusterMeshRenderer> GenerateMeshRenderers(List<IClusterLODComponent> components, Transform root, ClusterLODManager.RenderLayer layer, bool dynamic)
|
|
{
|
|
List<ClusterMeshRenderer> list;
|
|
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, 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;
|
|
List.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
ClusterMeshRenderer clusterMeshRenderer = this.clusterMeshRendererPrefab;
|
|
ClusterMeshRenderer clusterMeshRenderer2;
|
|
MeshRenderer component = clusterMeshRenderer2.GetComponent<MeshRenderer>();
|
|
Material meshMaterial = ClusterLODManager._instance.GetMeshMaterial();
|
|
component.SetMaterial(meshMaterial);
|
|
clusterMeshRenderer2.<Dynamic>k__BackingField = meshMaterial != null;
|
|
clusterMeshRenderer2.GenerateLOD();
|
|
List.Enumerator enumerator2;
|
|
if (enumerator2 != 0)
|
|
{
|
|
}
|
|
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
|
{
|
|
}
|
|
if (component != 0)
|
|
{
|
|
goto IL_211;
|
|
}
|
|
}
|
|
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
|
{
|
|
}
|
|
}
|
|
while (this != 0);
|
|
return list;
|
|
IL_211:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06004CE0 RID: 19680 RVA: 0x0011E4B8 File Offset: 0x0011C6B8
|
|
[Token(Token = "0x6004CE0")]
|
|
[Address(RVA = "0x1B2E710", Offset = "0x1B2D110", VA = "0x181B2E710")]
|
|
public ClusterLODManager.RenderLayer GetRenderLayer(Vector3 extents)
|
|
{
|
|
float maxRadiusForDetailObjects = this.<Config>k__BackingField.maxRadiusForDetailObjects;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06004CE1 RID: 19681 RVA: 0x0011E4D8 File Offset: 0x0011C6D8
|
|
[Token(Token = "0x6004CE1")]
|
|
[Address(RVA = "0x1B2EC90", Offset = "0x1B2D690", VA = "0x181B2EC90")]
|
|
public void RegisterShapeContainer(ShapeContainer newShapeContainer)
|
|
{
|
|
this.newShapeContainers.Add(newShapeContainer);
|
|
}
|
|
|
|
// Token: 0x06004CE2 RID: 19682 RVA: 0x0011E4F8 File Offset: 0x0011C6F8
|
|
[Token(Token = "0x6004CE2")]
|
|
[Address(RVA = "0x1B2F740", Offset = "0x1B2E140", VA = "0x181B2F740")]
|
|
public bool TryDeRegisterShapeContainer(ShapeContainer newShapeContainer)
|
|
{
|
|
return this.newShapeContainers.Remove(newShapeContainer);
|
|
}
|
|
|
|
// Token: 0x06004CE3 RID: 19683 RVA: 0x0011E518 File Offset: 0x0011C718
|
|
[Token(Token = "0x6004CE3")]
|
|
[Address(RVA = "0x1B2EC30", Offset = "0x1B2D630", VA = "0x181B2EC30")]
|
|
public void RegisterComponent(IClusterLODComponent newComponent)
|
|
{
|
|
this.newAddedStaticComponents.Add(newComponent);
|
|
}
|
|
|
|
// Token: 0x06004CE4 RID: 19684 RVA: 0x0011E538 File Offset: 0x0011C738
|
|
[Token(Token = "0x6004CE4")]
|
|
[Address(RVA = "0x1B2DB00", Offset = "0x1B2C500", VA = "0x181B2DB00")]
|
|
private void AddClusterMeshClusterInfo(ClusterMesh.ClusterInfo info, int layer)
|
|
{
|
|
this.clusterInfos[layer].Add(info);
|
|
}
|
|
|
|
// Token: 0x06004CE5 RID: 19685 RVA: 0x0011E560 File Offset: 0x0011C760
|
|
[Token(Token = "0x6004CE5")]
|
|
[Address(RVA = "0x1B2ECF0", Offset = "0x1B2D6F0", VA = "0x181B2ECF0")]
|
|
public void RemoveClusterMeshClusterInfo(ClusterMesh.ClusterInfo info)
|
|
{
|
|
int num = 0;
|
|
int num2 = this.clusterInfos[num].IndexOf(info);
|
|
this.clusterInfos[num].RemoveAt(num2);
|
|
num++;
|
|
}
|
|
|
|
// Token: 0x06004CE6 RID: 19686 RVA: 0x0011E5A0 File Offset: 0x0011C7A0
|
|
[Token(Token = "0x6004CE6")]
|
|
[Address(RVA = "0x1B2F1F0", Offset = "0x1B2DBF0", VA = "0x181B2F1F0")]
|
|
private void SortClusterInfos(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
|
{
|
|
List<ClusterMesh.ClusterInfo> list = this.clusterInfos[(int)layer];
|
|
Comparison<ClusterMesh.ClusterInfo> <>9__57_ = ClusterLODManager.<>c.<>9__57_0;
|
|
if (<>9__57_ == 0)
|
|
{
|
|
ClusterLODManager.<>c.<>9__57_0 = delegate(ClusterMesh.ClusterInfo a, ClusterMesh.ClusterInfo b)
|
|
{
|
|
byte requestedLod = b.requestedLod;
|
|
throw new NullReferenceException();
|
|
};
|
|
}
|
|
list.Sort(<>9__57_);
|
|
}
|
|
|
|
// Token: 0x06004CE7 RID: 19687 RVA: 0x0011E5E8 File Offset: 0x0011C7E8
|
|
[Token(Token = "0x6004CE7")]
|
|
[Address(RVA = "0x1B2F7A0", Offset = "0x1B2E1A0", VA = "0x181B2F7A0")]
|
|
private void UpdateClusterDistances(Vector3 pos, ClusterLODManager.RenderLayer layer)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
List<ClusterMeshRenderer> list = this.worldClusterMeshRenderers[(int)layer];
|
|
List.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
}
|
|
if (num != -1)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x06004CE8 RID: 19688 RVA: 0x0011E620 File Offset: 0x0011C820
|
|
[Token(Token = "0x6004CE8")]
|
|
[Address(RVA = "0x1B2DC20", Offset = "0x1B2C620", VA = "0x181B2DC20")]
|
|
private IEnumerator AssignLODs()
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (06004CE8)
|
|
|
|
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__59'::System.IDisposable.Dispose, ldloc:'<AssignLODs>d__59'(var_0))
|
|
stfld:int32('<AssignLODs>d__59'::<>1__state, ldloc:'<AssignLODs>d__59'(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
|
|
stfld:ClusterLODManager('<AssignLODs>d__59'::<>4__this, ldloc:'<AssignLODs>d__59'(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: 0x06004CE9 RID: 19689 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6004CE9")]
|
|
[Address(RVA = "0x1B2FBD0", Offset = "0x1B2E5D0", VA = "0x181B2FBD0")]
|
|
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: 0x06004CEA RID: 19690 RVA: 0x0011E644 File Offset: 0x0011C844
|
|
[Token(Token = "0x6004CEA")]
|
|
[Address(RVA = "0x1B2EDD0", Offset = "0x1B2D7D0", VA = "0x181B2EDD0")]
|
|
public void Remove(IClusterLODComponent component)
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = 0;
|
|
if (num >= 3)
|
|
{
|
|
break;
|
|
}
|
|
List.Enumerator enumerator;
|
|
if (enumerator != 0)
|
|
{
|
|
while (enumerator == 0)
|
|
{
|
|
}
|
|
bool flag;
|
|
while (!flag)
|
|
{
|
|
}
|
|
}
|
|
if ((ulong)((uint)(-1)) != (ulong)(-1L))
|
|
{
|
|
if (0UL == (ulong)104L)
|
|
{
|
|
break;
|
|
}
|
|
if (0UL == (ulong)96L)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
}
|
|
while (num != 0);
|
|
}
|
|
|
|
// Token: 0x06004CEB RID: 19691 RVA: 0x0011E6A0 File Offset: 0x0011C8A0
|
|
[Token(Token = "0x6004CEB")]
|
|
[Address(RVA = "0x1B2F1B0", Offset = "0x1B2DBB0", VA = "0x181B2F1B0")]
|
|
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: 0x06004CEC RID: 19692 RVA: 0x0011E6D8 File Offset: 0x0011C8D8
|
|
[Token(Token = "0x6004CEC")]
|
|
[Address(RVA = "0x1B2EC20", Offset = "0x1B2D620", VA = "0x181B2EC20")]
|
|
public void RegisterAdditionalVertsChange(int change)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06004CED RID: 19693 RVA: 0x0011E6E8 File Offset: 0x0011C8E8
|
|
[Token(Token = "0x6004CED")]
|
|
[Address(RVA = "0x1B2E670", Offset = "0x1B2D070", VA = "0x181B2E670")]
|
|
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: 0x06004CEE RID: 19694 RVA: 0x0011E71C File Offset: 0x0011C91C
|
|
[Token(Token = "0x6004CEE")]
|
|
[Address(RVA = "0x1B2E630", Offset = "0x1B2D030", VA = "0x181B2E630")]
|
|
public int GetMaxNumActiveLOD0Verts()
|
|
{
|
|
return this.<Config>k__BackingField.maxDynamicNearVerts;
|
|
}
|
|
|
|
// Token: 0x06004CEF RID: 19695 RVA: 0x0011E73C File Offset: 0x0011C93C
|
|
[Token(Token = "0x6004CEF")]
|
|
[Address(RVA = "0x1B2FD10", Offset = "0x1B2E710", VA = "0x181B2FD10")]
|
|
public ClusterLODManager()
|
|
{
|
|
ClusterMeshAssetCache clusterMeshAssetCache = new ClusterMeshAssetCache();
|
|
Queue<ClusterMesh.ClusterInfo> queue = new Queue();
|
|
clusterMeshAssetCache.createQueue = queue;
|
|
CreateMeshFromClusterJob createMeshFromClusterJob = new CreateMeshFromClusterJob();
|
|
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: 0x06004CF0 RID: 19696 RVA: 0x0000220F File Offset: 0x0000040F
|
|
// Note: this type is marked as 'beforefieldinit'.
|
|
[Token(Token = "0x6004CF0")]
|
|
[Address(RVA = "0x3C9F60", Offset = "0x3C8960", VA = "0x1803C9F60")]
|
|
static ClusterLODManager()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x040038B3 RID: 14515
|
|
[Token(Token = "0x40038B3")]
|
|
public const int NUM_RENDER_LAYERS = 3;
|
|
|
|
// Token: 0x040038B4 RID: 14516
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40038B4")]
|
|
public ClusterLODConfig questConfig;
|
|
|
|
// Token: 0x040038B5 RID: 14517
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40038B5")]
|
|
public ClusterLODConfig ps4Config;
|
|
|
|
// Token: 0x040038B6 RID: 14518
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40038B6")]
|
|
public ClusterLODConfig iOSConfig;
|
|
|
|
// Token: 0x040038B7 RID: 14519
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40038B7")]
|
|
public ClusterLODConfig iOSLowConfig;
|
|
|
|
// Token: 0x040038B9 RID: 14521
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40038B9")]
|
|
public ClusterMeshRenderer clusterMeshRendererPrefab;
|
|
|
|
// Token: 0x040038BA RID: 14522
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x40038BA")]
|
|
public MeshFilter clusterPrefab;
|
|
|
|
// Token: 0x040038BB RID: 14523
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40038BB")]
|
|
private GameObject detailRoot;
|
|
|
|
// Token: 0x040038BC RID: 14524
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x40038BC")]
|
|
private GameObject worldRoot;
|
|
|
|
// Token: 0x040038BD RID: 14525
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x40038BD")]
|
|
public ClusterMeshAssetCache ClusterMeshAssetCache;
|
|
|
|
// Token: 0x040038BE RID: 14526
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x40038BE")]
|
|
public List<IClusterLODComponent> newAddedStaticComponents;
|
|
|
|
// Token: 0x040038BF RID: 14527
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x40038BF")]
|
|
public List<IClusterLODComponent> newAddedWorldComponents;
|
|
|
|
// Token: 0x040038C0 RID: 14528
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x40038C0")]
|
|
public List<IClusterLODComponent> newAddedDetailComponents;
|
|
|
|
// Token: 0x040038C1 RID: 14529
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x40038C1")]
|
|
private int clusterIndex;
|
|
|
|
// Token: 0x040038C3 RID: 14531
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x40038C3")]
|
|
public ClusterLODManager.State CurrentState;
|
|
|
|
// Token: 0x040038C4 RID: 14532
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x40038C4")]
|
|
public List<ClusterMeshRenderer>[] worldClusterMeshRenderers;
|
|
|
|
// Token: 0x040038C5 RID: 14533
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x40038C5")]
|
|
private List<ClusterMesh.ClusterInfo>[] clusterInfos;
|
|
|
|
// Token: 0x040038C6 RID: 14534
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x40038C6")]
|
|
private Coroutine createWorldCoroutine;
|
|
|
|
// Token: 0x040038C7 RID: 14535
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x40038C7")]
|
|
private Coroutine assignLODsCoroutine;
|
|
|
|
// Token: 0x040038C8 RID: 14536
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xB8")]
|
|
[Token(Token = "0x40038C8")]
|
|
public int estimatedNumWorldLODVerts;
|
|
|
|
// Token: 0x040038C9 RID: 14537
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xBC")]
|
|
[Token(Token = "0x40038C9")]
|
|
public int numWorldLODVerts;
|
|
|
|
// Token: 0x040038CA RID: 14538
|
|
[Token(Token = "0x40038CA")]
|
|
private static ClusterLODManager _instance;
|
|
|
|
// Token: 0x040038CB RID: 14539
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xC0")]
|
|
[Token(Token = "0x40038CB")]
|
|
private List<ShapeContainer> newShapeContainers;
|
|
|
|
// Token: 0x040038CC RID: 14540
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xC8")]
|
|
[Token(Token = "0x40038CC")]
|
|
public int numAdditionalVerts;
|
|
|
|
// Token: 0x040038CD RID: 14541
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xD0")]
|
|
[Token(Token = "0x40038CD")]
|
|
private Material sharedMeshMaterial;
|
|
|
|
// Token: 0x02000C77 RID: 3191
|
|
[Token(Token = "0x2000C77")]
|
|
public enum RenderLayer
|
|
{
|
|
// Token: 0x040038CF RID: 14543
|
|
[Token(Token = "0x40038CF")]
|
|
World,
|
|
// Token: 0x040038D0 RID: 14544
|
|
[Token(Token = "0x40038D0")]
|
|
Detail,
|
|
// Token: 0x040038D1 RID: 14545
|
|
[Token(Token = "0x40038D1")]
|
|
Dynamic,
|
|
// Token: 0x040038D2 RID: 14546
|
|
[Token(Token = "0x40038D2")]
|
|
NumLayers
|
|
}
|
|
|
|
// Token: 0x02000C78 RID: 3192
|
|
[Token(Token = "0x2000C78")]
|
|
public enum State
|
|
{
|
|
// Token: 0x040038D4 RID: 14548
|
|
[Token(Token = "0x40038D4")]
|
|
Waiting,
|
|
// Token: 0x040038D5 RID: 14549
|
|
[Token(Token = "0x40038D5")]
|
|
Collecting,
|
|
// Token: 0x040038D6 RID: 14550
|
|
[Token(Token = "0x40038D6")]
|
|
Generating,
|
|
// Token: 0x040038D7 RID: 14551
|
|
[Token(Token = "0x40038D7")]
|
|
Running
|
|
}
|
|
}
|
|
}
|