using System;
using System.Collections;
using System.Collections.Generic;
using Cpp2IlInjected;
using UnityEngine;
using UnityEngine.Events;

namespace MTAssets.UltimateLODSystem
{
	// Token: 0x0200064E RID: 1614
	[Token(Token = "0x200064E")]
	[ExecuteInEditMode]
	[AddComponentMenu("MT Assets/Ultimate LOD System/Ultimate Level Of Detail")]
	public class UltimateLevelOfDetail : MonoBehaviour
	{
		// Token: 0x170003B9 RID: 953
		// (get) Token: 0x060032AF RID: 12975 RVA: 0x0006D000 File Offset: 0x0006B200
		// (set) Token: 0x060032B0 RID: 12976 RVA: 0x0006D014 File Offset: 0x0006B214
		[Token(Token = "0x170003B9")]
		public Transform customPivotToSimulateLods
		{
			[Token(Token = "0x60032AF")]
			[Address(RVA = "0x3763E0", Offset = "0x3753E0", VA = "0x1803763E0")]
			get
			{
				return this._customPivotToSimulateLods;
			}
			[Token(Token = "0x60032B0")]
			[Address(RVA = "0xCCC710", Offset = "0xCCB710", VA = "0x180CCC710")]
			set
			{
				int num = 0;
				if (!(value == num))
				{
					Transform transform = base.gameObject.transform;
					if (!value.IsChildOf(transform))
					{
						Debug.LogError("We were unable to define a custom pivot. Make sure that the GameObject that will be the new personalized pivot is the child of the desired ULOD component.");
						return;
					}
					this._customPivotToSimulateLods = value;
				}
				throw new NullReferenceException();
			}
		}

		// Token: 0x060032B1 RID: 12977 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032B1")]
		[Address(RVA = "0xCCC190", Offset = "0xCCB190", VA = "0x180CCC190")]
		private void ValidateAllParameters(bool isGoingToScan)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032B2 RID: 12978 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032B2")]
		[Address(RVA = "0x29E8B0", Offset = "0x29D8B0", VA = "0x18029E8B0")]
		private void CreateHierarchyOfFoldersIfNotExists()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032B3 RID: 12979 RVA: 0x0006D05C File Offset: 0x0006B25C
		[Token(Token = "0x60032B3")]
		[Address(RVA = "0xCCB530", Offset = "0xCCA530", VA = "0x180CCB530")]
		private string SaveGeneratedLodInAssets(string lodNumber, long ticks, Mesh generatedLodMesh)
		{
			return "";
		}

		// Token: 0x060032B4 RID: 12980 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032B4")]
		[Address(RVA = "0xCCA580", Offset = "0xCC9580", VA = "0x180CCA580")]
		private Mesh GetGeneratedLodForThisMesh(Mesh originalMesh, float percentOfVertices, bool isSkinnedMesh)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032B5 RID: 12981 RVA: 0x0006D070 File Offset: 0x0006B270
		[Token(Token = "0x60032B5")]
		[Address(RVA = "0xCCA430", Offset = "0xCC9430", VA = "0x180CCA430")]
		private Material[] GetCopyOfExistentArrayOfMaterials(Material[] sourceArray)
		{
			Material[] array;
			int num;
			int length;
			Material material;
			do
			{
				array = new Material[sourceArray.Length];
				num = 0;
				length = sourceArray.Length;
				if (num >= length)
				{
					return array;
				}
				material = sourceArray[num];
			}
			while (material != 0 && length == 0);
			array[0] = material;
			num++;
			return array;
		}

		// Token: 0x060032B6 RID: 12982 RVA: 0x0006D0BC File Offset: 0x0006B2BC
		[Token(Token = "0x60032B6")]
		[Address(RVA = "0xCCB750", Offset = "0xCCA750", VA = "0x180CCB750")]
		private void ScanForMeshesAndGenerateAllLodGroups_StartProcessing(bool showProgressBar)
		{
			int num;
			UltimateLevelOfDetail.<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__51 <ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__ = new UltimateLevelOfDetail.<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__51(num);
			num = 0;
			<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__.<>4__this = this;
			Coroutine coroutine = base.StartCoroutine(<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__);
		}

		// Token: 0x060032B7 RID: 12983 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032B7")]
		[Address(RVA = "0xCCB6E0", Offset = "0xCCA6E0", VA = "0x180CCB6E0")]
		private IEnumerator ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing(bool showProgressBar)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032B8 RID: 12984 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032B8")]
		[Address(RVA = "0xCCBBA0", Offset = "0xCCABA0", VA = "0x180CCBBA0")]
		private void UndoAllMeshesScannedAndAllLodGroups(bool showProgressBar, bool deleteAllGeneratedMeshes, bool runMonoIl2CppGc, bool runUnityGc)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032B9 RID: 12985 RVA: 0x0006D0E8 File Offset: 0x0006B2E8
		[Token(Token = "0x60032B9")]
		[Address(RVA = "0x4990D0", Offset = "0x4980D0", VA = "0x1804990D0")]
		private bool isLodsSimulationEnabledInThisSceneForEditorSceneViewMode()
		{
			return true;
		}

		// Token: 0x060032BA RID: 12986 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032BA")]
		[Address(RVA = "0x2FF2E0", Offset = "0x2FE2E0", VA = "0x1802FF2E0")]
		private Camera GetLastActiveSceneViewCamera()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032BB RID: 12987 RVA: 0x0006D0F8 File Offset: 0x0006B2F8
		[Token(Token = "0x60032BB")]
		[Address(RVA = "0xCCA000", Offset = "0xCC9000", VA = "0x180CCA000")]
		private void CullThisLodMeshOfRenderer(UltimateLevelOfDetail.ScannedMeshItem meshItem)
		{
			UltimateLevelOfDetail.CullingMode cullingMode = this.cullingMode;
			if (cullingMode != UltimateLevelOfDetail.CullingMode.Disabled)
			{
				if (cullingMode == UltimateLevelOfDetail.CullingMode.CullingMeshes)
				{
					SkinnedMeshRenderer originalSkinnedMeshRenderer = meshItem.originalSkinnedMeshRenderer;
					int num = 0;
					if (originalSkinnedMeshRenderer != num)
					{
						Mesh sharedMesh = meshItem.originalSkinnedMeshRenderer.sharedMesh;
						int num2 = 0;
						if (sharedMesh != num2)
						{
							Mesh sharedMesh2 = meshItem.originalSkinnedMeshRenderer.sharedMesh;
							meshItem.beforeCullingData_lastMeshOfThis = sharedMesh2;
							SkinnedMeshRenderer originalSkinnedMeshRenderer2 = meshItem.originalSkinnedMeshRenderer;
							int num3 = 0;
							originalSkinnedMeshRenderer2.sharedMesh = num3;
						}
					}
					MeshFilter originalMeshFilter = meshItem.originalMeshFilter;
					int num4 = 0;
					if (originalMeshFilter != num4)
					{
						Mesh sharedMesh3 = meshItem.originalMeshFilter.sharedMesh;
						int num5 = 0;
						if (sharedMesh3 != num5)
						{
							Mesh sharedMesh4 = meshItem.originalMeshFilter.sharedMesh;
							meshItem.beforeCullingData_lastMeshOfThis = sharedMesh4;
							MeshFilter originalMeshFilter2 = meshItem.originalMeshFilter;
							int num6 = 0;
							originalMeshFilter2.sharedMesh = num6;
						}
					}
				}
				if (this.cullingMode == UltimateLevelOfDetail.CullingMode.CullingRenderer)
				{
					SkinnedMeshRenderer originalSkinnedMeshRenderer3 = meshItem.originalSkinnedMeshRenderer;
					int num7 = 0;
					if (originalSkinnedMeshRenderer3 != num7)
					{
						bool forceRenderingOff = meshItem.originalSkinnedMeshRenderer.forceRenderingOff;
						SkinnedMeshRenderer originalSkinnedMeshRenderer4 = meshItem.originalSkinnedMeshRenderer;
						meshItem.beforeCullingData_isForcedToRenderizationOff = forceRenderingOff;
						originalSkinnedMeshRenderer4.forceRenderingOff = true;
					}
					MeshRenderer originalMeshRenderer = meshItem.originalMeshRenderer;
					int num8 = 0;
					if (originalMeshRenderer != num8)
					{
						bool forceRenderingOff2 = meshItem.originalMeshRenderer.forceRenderingOff;
						MeshRenderer originalMeshRenderer2 = meshItem.originalMeshRenderer;
						meshItem.beforeCullingData_isForcedToRenderizationOff = forceRenderingOff2;
						originalMeshRenderer2.forceRenderingOff = true;
					}
				}
			}
		}

		// Token: 0x060032BC RID: 12988 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032BC")]
		[Address(RVA = "0xCCB960", Offset = "0xCCA960", VA = "0x180CCB960")]
		private void UncullThisLodMeshOfRenderer(UltimateLevelOfDetail.ScannedMeshItem meshItem)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032BD RID: 12989 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032BD")]
		[Address(RVA = "0xCC8F70", Offset = "0xCC7F70", VA = "0x180CC8F70")]
		private void ChangeLodMeshAndMaterialsOfRenderer(UltimateLevelOfDetail.ScannedMeshItem meshItem, int lodLevel)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032BE RID: 12990 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032BE")]
		[Address(RVA = "0xCC8B50", Offset = "0xCC7B50", VA = "0x180CC8B50")]
		private void CalculateCorrectLodForDistanceBeforeChange(float distance)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032BF RID: 12991 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032BF")]
		[Address(RVA = "0xCCAC80", Offset = "0xCC9C80", VA = "0x180CCAC80")]
		public void OnRenderObject()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C0 RID: 12992 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C0")]
		[Address(RVA = "0xCC8900", Offset = "0xCC7900", VA = "0x180CC8900")]
		public void Awake()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C1 RID: 12993 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C1")]
		[Address(RVA = "0xCCAC10", Offset = "0xCC9C10", VA = "0x180CCAC10")]
		private IEnumerator OnRenderObject_HookEmulationForHDRP()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C2 RID: 12994 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C2")]
		[Address(RVA = "0xCCAAC0", Offset = "0xCC9AC0", VA = "0x180CCAAC0")]
		public void OnEnable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C3 RID: 12995 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C3")]
		[Address(RVA = "0xCCA530", Offset = "0xCC9530", VA = "0x180CCA530")]
		public int GetCurrentLodLevel()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C4 RID: 12996 RVA: 0x0006D254 File Offset: 0x0006B454
		[Token(Token = "0x60032C4")]
		[Address(RVA = "0x4C3B10", Offset = "0x4C2B10", VA = "0x1804C3B10")]
		public float GetCurrentCameraDistance()
		{
			return this.currentDistanceFromMainCamera;
		}

		// Token: 0x060032C5 RID: 12997 RVA: 0x0006D268 File Offset: 0x0006B468
		[Token(Token = "0x60032C5")]
		[Address(RVA = "0x3F66E0", Offset = "0x3F56E0", VA = "0x1803F66E0")]
		public float GetCurrentRealCameraDistance()
		{
			return this.currentRealDistanceFromMainCamera;
		}

		// Token: 0x060032C6 RID: 12998 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C6")]
		[Address(RVA = "0xCCAA70", Offset = "0xCC9A70", VA = "0x180CCAA70")]
		public int GetNumberOfLodsGenerated()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C7 RID: 12999 RVA: 0x0006D27C File Offset: 0x0006B47C
		[Token(Token = "0x60032C7")]
		[Address(RVA = "0xCCC6F0", Offset = "0xCCB6F0", VA = "0x180CCC6F0")]
		public bool isScannedMeshesCurrentCulled()
		{
			return this.currentLodAccordingToDistance == 9;
		}

		// Token: 0x060032C8 RID: 13000 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C8")]
		[Address(RVA = "0xCCA760", Offset = "0xCC9760", VA = "0x180CCA760")]
		public UltimateLevelOfDetailMeshes[] GetListOfAllMeshesScanned()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032C9 RID: 13001 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032C9")]
		[Address(RVA = "0xCCA2B0", Offset = "0xCC92B0", VA = "0x180CCA2B0")]
		public void ForceShowLod(bool force, int level)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032CA RID: 13002 RVA: 0x0006D294 File Offset: 0x0006B494
		[Token(Token = "0x60032CA")]
		[Address(RVA = "0xCCC700", Offset = "0xCCB700", VA = "0x180CCC700")]
		public bool isThisComponentForcedToShowLod()
		{
			return this.forcedToShowOnlyALodIndependentOfDistance != -1;
		}

		// Token: 0x060032CB RID: 13003 RVA: 0x0006D2B0 File Offset: 0x0006B4B0
		[Token(Token = "0x60032CB")]
		[Address(RVA = "0x641C20", Offset = "0x640C20", VA = "0x180641C20")]
		public void ForceDisableLodChangesInThisComponent(bool force)
		{
			this.forcedToDisableLodsOfThisComponent = force;
		}

		// Token: 0x060032CC RID: 13004 RVA: 0x0006D2C4 File Offset: 0x0006B4C4
		[Token(Token = "0x60032CC")]
		[Address(RVA = "0x641740", Offset = "0x640740", VA = "0x180641740")]
		public bool isThisComponentForcedToDisableLodChanges()
		{
			return this.forcedToDisableLodsOfThisComponent;
		}

		// Token: 0x060032CD RID: 13005 RVA: 0x0006D2D8 File Offset: 0x0006B4D8
		[Token(Token = "0x60032CD")]
		[Address(RVA = "0xCCA3E0", Offset = "0xCC93E0", VA = "0x180CCA3E0")]
		public void ForceThisComponentToUpdateLodsRender()
		{
			float num = UnityEngine.Random.Range(0.1f, 1f);
			this.currentLodAccordingToDistance = (int)((ulong)4294967295L);
			this.lastDistanceFromMainCamera = num;
			this.OnRenderObject();
		}

		// Token: 0x060032CE RID: 13006 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032CE")]
		[Address(RVA = "0xCCC6A0", Offset = "0xCCB6A0", VA = "0x180CCC6A0")]
		public bool isMeshesCurrentScannedAndLodsWorkingInThisComponent()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032CF RID: 13007 RVA: 0x0006D314 File Offset: 0x0006B514
		[Token(Token = "0x60032CF")]
		[Address(RVA = "0xCCB560", Offset = "0xCCA560", VA = "0x180CCB560")]
		public void ScanAllMeshesAndGenerateLodsGroups()
		{
			List<UltimateLevelOfDetail.ScannedMeshItem> list = this.currentScannedMeshesList;
			if ((ulong)1L == 0UL)
			{
				List<UltimateLevelOfDetail.ScannedMeshItem> list2 = this.currentScannedMeshesList;
			}
			int num;
			UltimateLevelOfDetail.<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__51 <ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__ = new UltimateLevelOfDetail.<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__51(num);
			num = 0;
			<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__.<>4__this = this;
			Coroutine coroutine = base.StartCoroutine(<ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing>d__);
		}

		// Token: 0x060032D0 RID: 13008 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D0")]
		[Address(RVA = "0xCCC040", Offset = "0xCCB040", VA = "0x180CCC040")]
		public void UndoCurrentScanWorkingAndDeleteGeneratedMeshes(bool runMonoIl2CppGc, bool runUnityGc)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032D1 RID: 13009 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D1")]
		[Address(RVA = "0xCCA8F0", Offset = "0xCC98F0", VA = "0x180CCA8F0")]
		public UltimateLevelOfDetail[] GetListOfAllUlodsInThisScene()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032D2 RID: 13010 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D2")]
		[Address(RVA = "0xCCA9A0", Offset = "0xCC99A0", VA = "0x180CCA9A0")]
		public UltimateLevelOfDetailOptimizer[] GetListOfAllUlodsOptimizerInThisScene()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032D3 RID: 13011 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D3")]
		[Address(RVA = "0xCCB7D0", Offset = "0xCCA7D0", VA = "0x180CCB7D0")]
		public void SetNewCustomCameraForThisAndAllUlodsInThisScene(Camera newCustomCamera)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032D4 RID: 13012 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D4")]
		[Address(RVA = "0xCC9210", Offset = "0xCC8210", VA = "0x180CC9210")]
		public void ConvertThisToDefaultUnityLods()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032D5 RID: 13013 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032D5")]
		[Address(RVA = "0xCCC4C0", Offset = "0xCCB4C0", VA = "0x180CCC4C0")]
		public UltimateLevelOfDetail()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003D07 RID: 15623
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003D07")]
		private WaitForEndOfFrame WAIT_FOR_END_OF_FRAME;

		// Token: 0x04003D08 RID: 15624
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003D08")]
		private Camera cacheOfMainCamera;

		// Token: 0x04003D09 RID: 15625
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4003D09")]
		private GameObject cacheOfUlodData;

		// Token: 0x04003D0A RID: 15626
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003D0A")]
		private RuntimeInstancesDetector cacheOfUlodDataRuntimeInstancesDetector;

		// Token: 0x04003D0B RID: 15627
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003D0B")]
		private float lastDistanceFromMainCamera;

		// Token: 0x04003D0C RID: 15628
		[FieldOffset(Offset = "0x3C")]
		[Token(Token = "0x4003D0C")]
		private int currentLodAccordingToDistance;

		// Token: 0x04003D0D RID: 15629
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003D0D")]
		private float currentDistanceFromMainCamera;

		// Token: 0x04003D0E RID: 15630
		[FieldOffset(Offset = "0x44")]
		[Token(Token = "0x4003D0E")]
		private float currentRealDistanceFromMainCamera;

		// Token: 0x04003D0F RID: 15631
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003D0F")]
		private bool forcedToDisableLodsOfThisComponent;

		// Token: 0x04003D10 RID: 15632
		[FieldOffset(Offset = "0x4C")]
		[Token(Token = "0x4003D10")]
		private int forcedToShowOnlyALodIndependentOfDistance;

		// Token: 0x04003D11 RID: 15633
		[FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4003D11")]
		[HideInInspector]
		public List<UltimateLevelOfDetail.ScannedMeshItem> currentScannedMeshesList;

		// Token: 0x04003D12 RID: 15634
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003D12")]
		[HideInInspector]
		public UltimateLevelOfDetail.ScanMeshesMode modeOfMeshesScanning;

		// Token: 0x04003D13 RID: 15635
		[FieldOffset(Offset = "0x5C")]
		[Token(Token = "0x4003D13")]
		[HideInInspector]
		public bool scanInactiveGameObjects;

		// Token: 0x04003D14 RID: 15636
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003D14")]
		[HideInInspector]
		public List<GameObject> gameObjectsToIgnore;

		// Token: 0x04003D15 RID: 15637
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003D15")]
		[HideInInspector]
		public int levelsOfDetailToGenerate;

		// Token: 0x04003D16 RID: 15638
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003D16")]
		[HideInInspector]
		public float[] percentOfVerticesForEachLod;

		// Token: 0x04003D17 RID: 15639
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4003D17")]
		[HideInInspector]
		public bool saveGeneratedLodsInAssets;

		// Token: 0x04003D18 RID: 15640
		[FieldOffset(Offset = "0x79")]
		[Token(Token = "0x4003D18")]
		[HideInInspector]
		public bool skinnedAnimsCompatibilityMode;

		// Token: 0x04003D19 RID: 15641
		[FieldOffset(Offset = "0x7A")]
		[Token(Token = "0x4003D19")]
		[HideInInspector]
		public bool preventArtifacts;

		// Token: 0x04003D1A RID: 15642
		[FieldOffset(Offset = "0x7B")]
		[Token(Token = "0x4003D1A")]
		[HideInInspector]
		public bool optimizeResultingMeshes;

		// Token: 0x04003D1B RID: 15643
		[FieldOffset(Offset = "0x7C")]
		[Token(Token = "0x4003D1B")]
		[HideInInspector]
		public bool enableLightmapsSupport;

		// Token: 0x04003D1C RID: 15644
		[FieldOffset(Offset = "0x7D")]
		[Token(Token = "0x4003D1C")]
		[HideInInspector]
		public bool enableMaterialsChanges;

		// Token: 0x04003D1D RID: 15645
		[FieldOffset(Offset = "0x80")]
		[Token(Token = "0x4003D1D")]
		[HideInInspector]
		public UltimateLevelOfDetail.ForceOfSimplification forceOfSimplification;

		// Token: 0x04003D1E RID: 15646
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x4003D1E")]
		[HideInInspector]
		public UltimateLevelOfDetail.CullingMode cullingMode;

		// Token: 0x04003D1F RID: 15647
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x4003D1F")]
		[HideInInspector]
		[SerializeField]
		private Transform _customPivotToSimulateLods;

		// Token: 0x04003D20 RID: 15648
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x4003D20")]
		[HideInInspector]
		public UltimateLevelOfDetail.CameraDetectionMode cameraDetectionMode;

		// Token: 0x04003D21 RID: 15649
		[FieldOffset(Offset = "0x94")]
		[Token(Token = "0x4003D21")]
		[HideInInspector]
		public bool useCacheForMainCameraInDetection;

		// Token: 0x04003D22 RID: 15650
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x4003D22")]
		[HideInInspector]
		public Camera customCameraForSimulationOfLods;

		// Token: 0x04003D23 RID: 15651
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x4003D23")]
		[HideInInspector]
		public float[] minDistanceOfViewForEachLod;

		// Token: 0x04003D24 RID: 15652
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x4003D24")]
		[HideInInspector]
		public float minDistanceOfViewForCull;

		// Token: 0x04003D25 RID: 15653
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x4003D25")]
		public UnityEvent onDoneScan;

		// Token: 0x04003D26 RID: 15654
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4003D26")]
		public UnityEvent onUndoScan;

		// Token: 0x04003D27 RID: 15655
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4003D27")]
		[HideInInspector]
		public bool forceChangeLodsOfSkinnedInEditor;

		// Token: 0x04003D28 RID: 15656
		[FieldOffset(Offset = "0xC1")]
		[Token(Token = "0x4003D28")]
		[HideInInspector]
		public bool drawGizmoOnThisPivot;

		// Token: 0x04003D29 RID: 15657
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x4003D29")]
		[HideInInspector]
		public Color colorOfGizmo;

		// Token: 0x04003D2A RID: 15658
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x4003D2A")]
		[HideInInspector]
		public float sizeOfGizmo;

		// Token: 0x04003D2B RID: 15659
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4003D2B")]
		[HideInInspector]
		public bool forceShowHiddenSettings;

		// Token: 0x0200064F RID: 1615
		[Token(Token = "0x200064F")]
		public enum ScanMeshesMode
		{
			// Token: 0x04003D2D RID: 15661
			[Token(Token = "0x4003D2D")]
			ScanInChildrenGameObjectsOnly,
			// Token: 0x04003D2E RID: 15662
			[Token(Token = "0x4003D2E")]
			ScanInThisGameObjectOnly
		}

		// Token: 0x02000650 RID: 1616
		[Token(Token = "0x2000650")]
		public enum ForceOfSimplification
		{
			// Token: 0x04003D30 RID: 15664
			[Token(Token = "0x4003D30")]
			Normal,
			// Token: 0x04003D31 RID: 15665
			[Token(Token = "0x4003D31")]
			Strong,
			// Token: 0x04003D32 RID: 15666
			[Token(Token = "0x4003D32")]
			VeryStrong,
			// Token: 0x04003D33 RID: 15667
			[Token(Token = "0x4003D33")]
			ExtremelyStrong,
			// Token: 0x04003D34 RID: 15668
			[Token(Token = "0x4003D34")]
			Destroyer
		}

		// Token: 0x02000651 RID: 1617
		[Token(Token = "0x2000651")]
		public enum CullingMode
		{
			// Token: 0x04003D36 RID: 15670
			[Token(Token = "0x4003D36")]
			Disabled,
			// Token: 0x04003D37 RID: 15671
			[Token(Token = "0x4003D37")]
			CullingMeshes,
			// Token: 0x04003D38 RID: 15672
			[Token(Token = "0x4003D38")]
			CullingRenderer
		}

		// Token: 0x02000652 RID: 1618
		[Token(Token = "0x2000652")]
		public enum CameraDetectionMode
		{
			// Token: 0x04003D3A RID: 15674
			[Token(Token = "0x4003D3A")]
			CurrentCamera,
			// Token: 0x04003D3B RID: 15675
			[Token(Token = "0x4003D3B")]
			MainCamera,
			// Token: 0x04003D3C RID: 15676
			[Token(Token = "0x4003D3C")]
			CustomCamera
		}

		// Token: 0x02000653 RID: 1619
		[Token(Token = "0x2000653")]
		[Serializable]
		public class ScannedMeshItem
		{
			// Token: 0x060032D6 RID: 13014 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60032D6")]
			[Address(RVA = "0x6CA250", Offset = "0x6C9250", VA = "0x1806CA250")]
			public void InitializeAllMeshLodsMaterialsArray()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060032D7 RID: 13015 RVA: 0x0006D378 File Offset: 0x0006B578
			[Token(Token = "0x60032D7")]
			[Address(RVA = "0x6CA370", Offset = "0x6C9370", VA = "0x1806CA370")]
			public ScannedMeshItem()
			{
				Mesh[] array = new Mesh[9];
				this.allMeshLods = array;
				string[] array2 = new string[9];
				this.allMeshLodsPaths = array2;
				UltimateLevelOfDetail.ScannedMeshItem.MeshMaterials[] array3 = new UltimateLevelOfDetail.ScannedMeshItem.MeshMaterials[9];
				this.allMeshLodsMaterials = array3;
				base..ctor();
			}

			// Token: 0x04003D3D RID: 15677
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x4003D3D")]
			public GameObject originalGameObject;

			// Token: 0x04003D3E RID: 15678
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x4003D3E")]
			public SkinnedMeshRenderer originalSkinnedMeshRenderer;

			// Token: 0x04003D3F RID: 15679
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4003D3F")]
			public MeshFilter originalMeshFilter;

			// Token: 0x04003D40 RID: 15680
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x4003D40")]
			public MeshRenderer originalMeshRenderer;

			// Token: 0x04003D41 RID: 15681
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x4003D41")]
			public Mesh[] allMeshLods;

			// Token: 0x04003D42 RID: 15682
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x4003D42")]
			public string[] allMeshLodsPaths;

			// Token: 0x04003D43 RID: 15683
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x4003D43")]
			public bool canChangeMaterialsOnThisMeshLods;

			// Token: 0x04003D44 RID: 15684
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x4003D44")]
			public UltimateLevelOfDetail.ScannedMeshItem.MeshMaterials[] allMeshLodsMaterials;

			// Token: 0x04003D45 RID: 15685
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x4003D45")]
			public UltimateLevelOfDetailMeshes originalMeshLodsManager;

			// Token: 0x04003D46 RID: 15686
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4003D46")]
			public Mesh beforeCullingData_lastMeshOfThis;

			// Token: 0x04003D47 RID: 15687
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003D47")]
			public bool beforeCullingData_isForcedToRenderizationOff;

			// Token: 0x02000654 RID: 1620
			[Token(Token = "0x2000654")]
			[Serializable]
			public class MeshMaterials
			{
				// Token: 0x060032D8 RID: 13016 RVA: 0x0003DF9B File Offset: 0x0003C19B
				[Token(Token = "0x60032D8")]
				[Address(RVA = "0x19B5830", Offset = "0x19B4830", VA = "0x1819B5830")]
				public MeshMaterials()
				{
				}

				// Token: 0x04003D48 RID: 15688
				[FieldOffset(Offset = "0x10")]
				[Token(Token = "0x4003D48")]
				public Material[] materialArray;
			}
		}
	}
}
