a
This commit is contained in:
@@ -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()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user