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

namespace MTAssets.UltimateLODSystem
{
	// Token: 0x020005F6 RID: 1526
	[Token(Token = "0x20005F6")]
	[ExecuteInEditMode]
	[AddComponentMenu("MT Assets/Ultimate LOD System/Ultimate Level Of Detail")]
	public class UltimateLevelOfDetail : MonoBehaviour
	{
		// Token: 0x17000394 RID: 916
		// (get) Token: 0x06002FE6 RID: 12262 RVA: 0x00065D30 File Offset: 0x00063F30
		// (set) Token: 0x06002FE7 RID: 12263 RVA: 0x00065D44 File Offset: 0x00063F44
		[Token(Token = "0x17000394")]
		public Transform customPivotToSimulateLods
		{
			[Token(Token = "0x6002FE6")]
			[Address(RVA = "0x3EFFC0", Offset = "0x3EEDC0", VA = "0x1803EFFC0")]
			get
			{
				return this._customPivotToSimulateLods;
			}
			[Token(Token = "0x6002FE7")]
			[Address(RVA = "0x8C2A20", Offset = "0x8C1820", VA = "0x1808C2A20")]
			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: 0x06002FE8 RID: 12264 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FE8")]
		[Address(RVA = "0x8C24A0", Offset = "0x8C12A0", VA = "0x1808C24A0")]
		private void ValidateAllParameters(bool isGoingToScan)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FE9 RID: 12265 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FE9")]
		[Address(RVA = "0x297F00", Offset = "0x296D00", VA = "0x180297F00")]
		private void CreateHierarchyOfFoldersIfNotExists()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FEA RID: 12266 RVA: 0x00065D8C File Offset: 0x00063F8C
		[Token(Token = "0x6002FEA")]
		[Address(RVA = "0x8C1840", Offset = "0x8C0640", VA = "0x1808C1840")]
		private string SaveGeneratedLodInAssets(string lodNumber, long ticks, Mesh generatedLodMesh)
		{
			return "";
		}

		// Token: 0x06002FEB RID: 12267 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FEB")]
		[Address(RVA = "0x8C0890", Offset = "0x8BF690", VA = "0x1808C0890")]
		private Mesh GetGeneratedLodForThisMesh(Mesh originalMesh, float percentOfVertices, bool isSkinnedMesh)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FEC RID: 12268 RVA: 0x00065DA0 File Offset: 0x00063FA0
		[Token(Token = "0x6002FEC")]
		[Address(RVA = "0x8C0740", Offset = "0x8BF540", VA = "0x1808C0740")]
		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: 0x06002FED RID: 12269 RVA: 0x00065DEC File Offset: 0x00063FEC
		[Token(Token = "0x6002FED")]
		[Address(RVA = "0x8C1A60", Offset = "0x8C0860", VA = "0x1808C1A60")]
		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: 0x06002FEE RID: 12270 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FEE")]
		[Address(RVA = "0x8C19F0", Offset = "0x8C07F0", VA = "0x1808C19F0")]
		private IEnumerator ScanForMeshesAndGenerateAllLodGroups_AsyncProcessing(bool showProgressBar)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FEF RID: 12271 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FEF")]
		[Address(RVA = "0x8C1EB0", Offset = "0x8C0CB0", VA = "0x1808C1EB0")]
		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: 0x06002FF0 RID: 12272 RVA: 0x00065E18 File Offset: 0x00064018
		[Token(Token = "0x6002FF0")]
		[Address(RVA = "0x454840", Offset = "0x453640", VA = "0x180454840")]
		private bool isLodsSimulationEnabledInThisSceneForEditorSceneViewMode()
		{
			return true;
		}

		// Token: 0x06002FF1 RID: 12273 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF1")]
		[Address(RVA = "0x2B4CB0", Offset = "0x2B3AB0", VA = "0x1802B4CB0")]
		private Camera GetLastActiveSceneViewCamera()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF2 RID: 12274 RVA: 0x00065E28 File Offset: 0x00064028
		[Token(Token = "0x6002FF2")]
		[Address(RVA = "0x8C0310", Offset = "0x8BF110", VA = "0x1808C0310")]
		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: 0x06002FF3 RID: 12275 RVA: 0x00065F84 File Offset: 0x00064184
		[Token(Token = "0x6002FF3")]
		[Address(RVA = "0x8C1C70", Offset = "0x8C0A70", VA = "0x1808C1C70")]
		private void UncullThisLodMeshOfRenderer(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)
						{
							SkinnedMeshRenderer originalSkinnedMeshRenderer2 = meshItem.originalSkinnedMeshRenderer;
							Mesh beforeCullingData_lastMeshOfThis = meshItem.beforeCullingData_lastMeshOfThis;
							originalSkinnedMeshRenderer2.sharedMesh = beforeCullingData_lastMeshOfThis;
						}
					}
					MeshFilter originalMeshFilter = meshItem.originalMeshFilter;
					int num3 = 0;
					if (originalMeshFilter != num3)
					{
						Mesh sharedMesh2 = meshItem.originalMeshFilter.sharedMesh;
						int num4 = 0;
						if (sharedMesh2 == num4)
						{
							MeshFilter originalMeshFilter2 = meshItem.originalMeshFilter;
							Mesh beforeCullingData_lastMeshOfThis2 = meshItem.beforeCullingData_lastMeshOfThis;
							originalMeshFilter2.sharedMesh = beforeCullingData_lastMeshOfThis2;
						}
					}
				}
				if (this.cullingMode == UltimateLevelOfDetail.CullingMode.CullingRenderer)
				{
					SkinnedMeshRenderer originalSkinnedMeshRenderer3 = meshItem.originalSkinnedMeshRenderer;
					int num5 = 0;
					if (originalSkinnedMeshRenderer3 != num5)
					{
						SkinnedMeshRenderer originalSkinnedMeshRenderer4 = meshItem.originalSkinnedMeshRenderer;
						bool beforeCullingData_isForcedToRenderizationOff = meshItem.beforeCullingData_isForcedToRenderizationOff;
						originalSkinnedMeshRenderer4.forceRenderingOff = beforeCullingData_isForcedToRenderizationOff;
					}
					MeshRenderer originalMeshRenderer = meshItem.originalMeshRenderer;
					int num6 = 0;
					if (originalMeshRenderer != num6)
					{
						MeshRenderer originalMeshRenderer2 = meshItem.originalMeshRenderer;
						bool beforeCullingData_isForcedToRenderizationOff2 = meshItem.beforeCullingData_isForcedToRenderizationOff;
						originalMeshRenderer2.forceRenderingOff = beforeCullingData_isForcedToRenderizationOff2;
					}
				}
			}
		}

		// Token: 0x06002FF4 RID: 12276 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF4")]
		[Address(RVA = "0x8BF280", Offset = "0x8BE080", VA = "0x1808BF280")]
		private void ChangeLodMeshAndMaterialsOfRenderer(UltimateLevelOfDetail.ScannedMeshItem meshItem, int lodLevel)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF5 RID: 12277 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF5")]
		[Address(RVA = "0x8BEE60", Offset = "0x8BDC60", VA = "0x1808BEE60")]
		private void CalculateCorrectLodForDistanceBeforeChange(float distance)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF6 RID: 12278 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF6")]
		[Address(RVA = "0x8C0F90", Offset = "0x8BFD90", VA = "0x1808C0F90")]
		public void OnRenderObject()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF7 RID: 12279 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF7")]
		[Address(RVA = "0x8BEC10", Offset = "0x8BDA10", VA = "0x1808BEC10")]
		public void Awake()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF8 RID: 12280 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF8")]
		[Address(RVA = "0x8C0F20", Offset = "0x8BFD20", VA = "0x1808C0F20")]
		private IEnumerator OnRenderObject_HookEmulationForHDRP()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FF9 RID: 12281 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FF9")]
		[Address(RVA = "0x8C0DD0", Offset = "0x8BFBD0", VA = "0x1808C0DD0")]
		public void OnEnable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FFA RID: 12282 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FFA")]
		[Address(RVA = "0x8C0840", Offset = "0x8BF640", VA = "0x1808C0840")]
		public int GetCurrentLodLevel()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FFB RID: 12283 RVA: 0x000660A8 File Offset: 0x000642A8
		[Token(Token = "0x6002FFB")]
		[Address(RVA = "0x468160", Offset = "0x466F60", VA = "0x180468160")]
		public float GetCurrentCameraDistance()
		{
			return this.currentDistanceFromMainCamera;
		}

		// Token: 0x06002FFC RID: 12284 RVA: 0x000660BC File Offset: 0x000642BC
		[Token(Token = "0x6002FFC")]
		[Address(RVA = "0x38DB10", Offset = "0x38C910", VA = "0x18038DB10")]
		public float GetCurrentRealCameraDistance()
		{
			return this.currentRealDistanceFromMainCamera;
		}

		// Token: 0x06002FFD RID: 12285 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FFD")]
		[Address(RVA = "0x8C0D80", Offset = "0x8BFB80", VA = "0x1808C0D80")]
		public int GetNumberOfLodsGenerated()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002FFE RID: 12286 RVA: 0x000660D0 File Offset: 0x000642D0
		[Token(Token = "0x6002FFE")]
		[Address(RVA = "0x8C2A00", Offset = "0x8C1800", VA = "0x1808C2A00")]
		public bool isScannedMeshesCurrentCulled()
		{
			return this.currentLodAccordingToDistance == 9;
		}

		// Token: 0x06002FFF RID: 12287 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002FFF")]
		[Address(RVA = "0x8C0A70", Offset = "0x8BF870", VA = "0x1808C0A70")]
		public UltimateLevelOfDetailMeshes[] GetListOfAllMeshesScanned()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003000 RID: 12288 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6003000")]
		[Address(RVA = "0x8C05C0", Offset = "0x8BF3C0", VA = "0x1808C05C0")]
		public void ForceShowLod(bool force, int level)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003001 RID: 12289 RVA: 0x000660E8 File Offset: 0x000642E8
		[Token(Token = "0x6003001")]
		[Address(RVA = "0x8C2A10", Offset = "0x8C1810", VA = "0x1808C2A10")]
		public bool isThisComponentForcedToShowLod()
		{
			return this.forcedToShowOnlyALodIndependentOfDistance != -1;
		}

		// Token: 0x06003002 RID: 12290 RVA: 0x00066104 File Offset: 0x00064304
		[Token(Token = "0x6003002")]
		[Address(RVA = "0x4BFCF0", Offset = "0x4BEAF0", VA = "0x1804BFCF0")]
		public void ForceDisableLodChangesInThisComponent(bool force)
		{
			this.forcedToDisableLodsOfThisComponent = force;
		}

		// Token: 0x06003003 RID: 12291 RVA: 0x00066118 File Offset: 0x00064318
		[Token(Token = "0x6003003")]
		[Address(RVA = "0x4BFCE0", Offset = "0x4BEAE0", VA = "0x1804BFCE0")]
		public bool isThisComponentForcedToDisableLodChanges()
		{
			return this.forcedToDisableLodsOfThisComponent;
		}

		// Token: 0x06003004 RID: 12292 RVA: 0x0006612C File Offset: 0x0006432C
		[Token(Token = "0x6003004")]
		[Address(RVA = "0x8C06F0", Offset = "0x8BF4F0", VA = "0x1808C06F0")]
		public void ForceThisComponentToUpdateLodsRender()
		{
			float num = UnityEngine.Random.Range(0.1f, 1f);
			this.currentLodAccordingToDistance = (int)((ulong)4294967295L);
			this.lastDistanceFromMainCamera = num;
			this.OnRenderObject();
		}

		// Token: 0x06003005 RID: 12293 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6003005")]
		[Address(RVA = "0x8C29B0", Offset = "0x8C17B0", VA = "0x1808C29B0")]
		public bool isMeshesCurrentScannedAndLodsWorkingInThisComponent()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003006 RID: 12294 RVA: 0x00066168 File Offset: 0x00064368
		[Token(Token = "0x6003006")]
		[Address(RVA = "0x8C1870", Offset = "0x8C0670", VA = "0x1808C1870")]
		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: 0x06003007 RID: 12295 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6003007")]
		[Address(RVA = "0x8C2350", Offset = "0x8C1150", VA = "0x1808C2350")]
		public void UndoCurrentScanWorkingAndDeleteGeneratedMeshes(bool runMonoIl2CppGc, bool runUnityGc)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003008 RID: 12296 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6003008")]
		[Address(RVA = "0x8C0C00", Offset = "0x8BFA00", VA = "0x1808C0C00")]
		public UltimateLevelOfDetail[] GetListOfAllUlodsInThisScene()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003009 RID: 12297 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6003009")]
		[Address(RVA = "0x8C0CB0", Offset = "0x8BFAB0", VA = "0x1808C0CB0")]
		public UltimateLevelOfDetailOptimizer[] GetListOfAllUlodsOptimizerInThisScene()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600300A RID: 12298 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600300A")]
		[Address(RVA = "0x8C1AE0", Offset = "0x8C08E0", VA = "0x1808C1AE0")]
		public void SetNewCustomCameraForThisAndAllUlodsInThisScene(Camera newCustomCamera)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600300B RID: 12299 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600300B")]
		[Address(RVA = "0x8BF520", Offset = "0x8BE320", VA = "0x1808BF520")]
		public void ConvertThisToDefaultUnityLods()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600300C RID: 12300 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600300C")]
		[Address(RVA = "0x8C27D0", Offset = "0x8C15D0", VA = "0x1808C27D0")]
		public UltimateLevelOfDetail()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003A1D RID: 14877
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003A1D")]
		private WaitForEndOfFrame WAIT_FOR_END_OF_FRAME;

		// Token: 0x04003A1E RID: 14878
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003A1E")]
		private Camera cacheOfMainCamera;

		// Token: 0x04003A1F RID: 14879
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4003A1F")]
		private GameObject cacheOfUlodData;

		// Token: 0x04003A20 RID: 14880
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003A20")]
		private RuntimeInstancesDetector cacheOfUlodDataRuntimeInstancesDetector;

		// Token: 0x04003A21 RID: 14881
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003A21")]
		private float lastDistanceFromMainCamera;

		// Token: 0x04003A22 RID: 14882
		[FieldOffset(Offset = "0x3C")]
		[Token(Token = "0x4003A22")]
		private int currentLodAccordingToDistance;

		// Token: 0x04003A23 RID: 14883
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003A23")]
		private float currentDistanceFromMainCamera;

		// Token: 0x04003A24 RID: 14884
		[FieldOffset(Offset = "0x44")]
		[Token(Token = "0x4003A24")]
		private float currentRealDistanceFromMainCamera;

		// Token: 0x04003A25 RID: 14885
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003A25")]
		private bool forcedToDisableLodsOfThisComponent;

		// Token: 0x04003A26 RID: 14886
		[FieldOffset(Offset = "0x4C")]
		[Token(Token = "0x4003A26")]
		private int forcedToShowOnlyALodIndependentOfDistance;

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

		// Token: 0x04003A28 RID: 14888
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003A28")]
		[HideInInspector]
		public UltimateLevelOfDetail.ScanMeshesMode modeOfMeshesScanning;

		// Token: 0x04003A29 RID: 14889
		[FieldOffset(Offset = "0x5C")]
		[Token(Token = "0x4003A29")]
		[HideInInspector]
		public bool scanInactiveGameObjects;

		// Token: 0x04003A2A RID: 14890
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003A2A")]
		[HideInInspector]
		public List<GameObject> gameObjectsToIgnore;

		// Token: 0x04003A2B RID: 14891
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003A2B")]
		[HideInInspector]
		public int levelsOfDetailToGenerate;

		// Token: 0x04003A2C RID: 14892
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003A2C")]
		[HideInInspector]
		public float[] percentOfVerticesForEachLod;

		// Token: 0x04003A2D RID: 14893
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4003A2D")]
		[HideInInspector]
		public bool saveGeneratedLodsInAssets;

		// Token: 0x04003A2E RID: 14894
		[FieldOffset(Offset = "0x79")]
		[Token(Token = "0x4003A2E")]
		[HideInInspector]
		public bool skinnedAnimsCompatibilityMode;

		// Token: 0x04003A2F RID: 14895
		[FieldOffset(Offset = "0x7A")]
		[Token(Token = "0x4003A2F")]
		[HideInInspector]
		public bool preventArtifacts;

		// Token: 0x04003A30 RID: 14896
		[FieldOffset(Offset = "0x7B")]
		[Token(Token = "0x4003A30")]
		[HideInInspector]
		public bool optimizeResultingMeshes;

		// Token: 0x04003A31 RID: 14897
		[FieldOffset(Offset = "0x7C")]
		[Token(Token = "0x4003A31")]
		[HideInInspector]
		public bool enableLightmapsSupport;

		// Token: 0x04003A32 RID: 14898
		[FieldOffset(Offset = "0x7D")]
		[Token(Token = "0x4003A32")]
		[HideInInspector]
		public bool enableMaterialsChanges;

		// Token: 0x04003A33 RID: 14899
		[FieldOffset(Offset = "0x80")]
		[Token(Token = "0x4003A33")]
		[HideInInspector]
		public UltimateLevelOfDetail.ForceOfSimplification forceOfSimplification;

		// Token: 0x04003A34 RID: 14900
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x4003A34")]
		[HideInInspector]
		public UltimateLevelOfDetail.CullingMode cullingMode;

		// Token: 0x04003A35 RID: 14901
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x4003A35")]
		[SerializeField]
		[HideInInspector]
		private Transform _customPivotToSimulateLods;

		// Token: 0x04003A36 RID: 14902
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x4003A36")]
		[HideInInspector]
		public UltimateLevelOfDetail.CameraDetectionMode cameraDetectionMode;

		// Token: 0x04003A37 RID: 14903
		[FieldOffset(Offset = "0x94")]
		[Token(Token = "0x4003A37")]
		[HideInInspector]
		public bool useCacheForMainCameraInDetection;

		// Token: 0x04003A38 RID: 14904
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x4003A38")]
		[HideInInspector]
		public Camera customCameraForSimulationOfLods;

		// Token: 0x04003A39 RID: 14905
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x4003A39")]
		[HideInInspector]
		public float[] minDistanceOfViewForEachLod;

		// Token: 0x04003A3A RID: 14906
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x4003A3A")]
		[HideInInspector]
		public float minDistanceOfViewForCull;

		// Token: 0x04003A3B RID: 14907
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x4003A3B")]
		public UnityEvent onDoneScan;

		// Token: 0x04003A3C RID: 14908
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4003A3C")]
		public UnityEvent onUndoScan;

		// Token: 0x04003A3D RID: 14909
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4003A3D")]
		[HideInInspector]
		public bool forceChangeLodsOfSkinnedInEditor;

		// Token: 0x04003A3E RID: 14910
		[FieldOffset(Offset = "0xC1")]
		[Token(Token = "0x4003A3E")]
		[HideInInspector]
		public bool drawGizmoOnThisPivot;

		// Token: 0x04003A3F RID: 14911
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x4003A3F")]
		[HideInInspector]
		public Color colorOfGizmo;

		// Token: 0x04003A40 RID: 14912
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x4003A40")]
		[HideInInspector]
		public float sizeOfGizmo;

		// Token: 0x04003A41 RID: 14913
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4003A41")]
		[HideInInspector]
		public bool forceShowHiddenSettings;

		// Token: 0x020005F7 RID: 1527
		[Token(Token = "0x20005F7")]
		public enum ScanMeshesMode
		{
			// Token: 0x04003A43 RID: 14915
			[Token(Token = "0x4003A43")]
			ScanInChildrenGameObjectsOnly,
			// Token: 0x04003A44 RID: 14916
			[Token(Token = "0x4003A44")]
			ScanInThisGameObjectOnly
		}

		// Token: 0x020005F8 RID: 1528
		[Token(Token = "0x20005F8")]
		public enum ForceOfSimplification
		{
			// Token: 0x04003A46 RID: 14918
			[Token(Token = "0x4003A46")]
			Normal,
			// Token: 0x04003A47 RID: 14919
			[Token(Token = "0x4003A47")]
			Strong,
			// Token: 0x04003A48 RID: 14920
			[Token(Token = "0x4003A48")]
			VeryStrong,
			// Token: 0x04003A49 RID: 14921
			[Token(Token = "0x4003A49")]
			ExtremelyStrong,
			// Token: 0x04003A4A RID: 14922
			[Token(Token = "0x4003A4A")]
			Destroyer
		}

		// Token: 0x020005F9 RID: 1529
		[Token(Token = "0x20005F9")]
		public enum CullingMode
		{
			// Token: 0x04003A4C RID: 14924
			[Token(Token = "0x4003A4C")]
			Disabled,
			// Token: 0x04003A4D RID: 14925
			[Token(Token = "0x4003A4D")]
			CullingMeshes,
			// Token: 0x04003A4E RID: 14926
			[Token(Token = "0x4003A4E")]
			CullingRenderer
		}

		// Token: 0x020005FA RID: 1530
		[Token(Token = "0x20005FA")]
		public enum CameraDetectionMode
		{
			// Token: 0x04003A50 RID: 14928
			[Token(Token = "0x4003A50")]
			CurrentCamera,
			// Token: 0x04003A51 RID: 14929
			[Token(Token = "0x4003A51")]
			MainCamera,
			// Token: 0x04003A52 RID: 14930
			[Token(Token = "0x4003A52")]
			CustomCamera
		}

		// Token: 0x020005FB RID: 1531
		[Token(Token = "0x20005FB")]
		[Serializable]
		public class ScannedMeshItem
		{
			// Token: 0x0600300D RID: 12301 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600300D")]
			[Address(RVA = "0x132EB60", Offset = "0x132D960", VA = "0x18132EB60")]
			public void InitializeAllMeshLodsMaterialsArray()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600300E RID: 12302 RVA: 0x000661CC File Offset: 0x000643CC
			[Token(Token = "0x600300E")]
			[Address(RVA = "0x132ECB0", Offset = "0x132DAB0", VA = "0x18132ECB0")]
			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: 0x04003A53 RID: 14931
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x4003A53")]
			public GameObject originalGameObject;

			// Token: 0x04003A54 RID: 14932
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x4003A54")]
			public SkinnedMeshRenderer originalSkinnedMeshRenderer;

			// Token: 0x04003A55 RID: 14933
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4003A55")]
			public MeshFilter originalMeshFilter;

			// Token: 0x04003A56 RID: 14934
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x4003A56")]
			public MeshRenderer originalMeshRenderer;

			// Token: 0x04003A57 RID: 14935
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x4003A57")]
			public Mesh[] allMeshLods;

			// Token: 0x04003A58 RID: 14936
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x4003A58")]
			public string[] allMeshLodsPaths;

			// Token: 0x04003A59 RID: 14937
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x4003A59")]
			public bool canChangeMaterialsOnThisMeshLods;

			// Token: 0x04003A5A RID: 14938
			[FieldOffset(Offset = "0x48")]
			[Token(Token = "0x4003A5A")]
			public UltimateLevelOfDetail.ScannedMeshItem.MeshMaterials[] allMeshLodsMaterials;

			// Token: 0x04003A5B RID: 14939
			[FieldOffset(Offset = "0x50")]
			[Token(Token = "0x4003A5B")]
			public UltimateLevelOfDetailMeshes originalMeshLodsManager;

			// Token: 0x04003A5C RID: 14940
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4003A5C")]
			public Mesh beforeCullingData_lastMeshOfThis;

			// Token: 0x04003A5D RID: 14941
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003A5D")]
			public bool beforeCullingData_isForcedToRenderizationOff;

			// Token: 0x020005FC RID: 1532
			[Token(Token = "0x20005FC")]
			[Serializable]
			public class MeshMaterials
			{
				// Token: 0x0600300F RID: 12303 RVA: 0x0003883F File Offset: 0x00036A3F
				[Token(Token = "0x600300F")]
				[Address(RVA = "0x132D280", Offset = "0x132C080", VA = "0x18132D280")]
				public MeshMaterials()
				{
				}

				// Token: 0x04003A5E RID: 14942
				[FieldOffset(Offset = "0x10")]
				[Token(Token = "0x4003A5E")]
				public Material[] materialArray;
			}
		}
	}
}
