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

namespace MTAssets.UltimateLODSystem
{
	// Token: 0x02000601 RID: 1537
	[Token(Token = "0x2000601")]
	[AddComponentMenu("MT Assets/Ultimate LOD System/Ultimate Level Of Detail Optimizer")]
	public class UltimateLevelOfDetailOptimizer : MonoBehaviour
	{
		// Token: 0x0600302D RID: 12333 RVA: 0x00066388 File Offset: 0x00064588
		[Token(Token = "0x600302D")]
		[Address(RVA = "0x8BE8A0", Offset = "0x8BD6A0", VA = "0x1808BE8A0")]
		public void Awake()
		{
			int num;
			UltimateLevelOfDetailOptimizer.<UlodOptimizationLoop>d__9 <UlodOptimizationLoop>d__ = new UltimateLevelOfDetailOptimizer.<UlodOptimizationLoop>d__9(num);
			num = 0;
			<UlodOptimizationLoop>d__.<>4__this = this;
			Coroutine coroutine = base.StartCoroutine(<UlodOptimizationLoop>d__);
		}

		// Token: 0x0600302E RID: 12334 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600302E")]
		[Address(RVA = "0x8BEAB0", Offset = "0x8BD8B0", VA = "0x1808BEAB0")]
		private bool isThisUlodPresentOnUlodsToBeIgnored(UltimateLevelOfDetail ulod)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600302F RID: 12335 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600302F")]
		[Address(RVA = "0x8BE920", Offset = "0x8BD720", VA = "0x1808BE920")]
		private IEnumerator UlodOptimizationLoop()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06003030 RID: 12336 RVA: 0x000663B4 File Offset: 0x000645B4
		[Token(Token = "0x6003030")]
		[Address(RVA = "0x8BE990", Offset = "0x8BD790", VA = "0x1808BE990")]
		public UltimateLevelOfDetailOptimizer()
		{
			WaitForSecondsRealtime waitForSecondsRealtime = new WaitForSecondsRealtime(0.2f);
			this.DELAY_BETWEEN_OPTIMIZATION_UPDATES = waitForSecondsRealtime;
			WaitForSecondsRealtime waitForSecondsRealtime2 = new WaitForSecondsRealtime(0.05f);
			this.DELAY_BETWEEN_GAMEOBJECTS_STATE_CHANGE = waitForSecondsRealtime2;
			this.ADITIONAL_CULLING_DISTANCE_OFFSET = 10f;
			int[] array = new int[0];
			this.instructionsToMakeOnUlods = array;
			this.enableOptimizationTasks = true;
			List<UltimateLevelOfDetail> list = new List();
			this.ulodsToBeIgnored = list;
			base..ctor();
		}

		// Token: 0x04003A76 RID: 14966
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003A76")]
		private WaitForSecondsRealtime DELAY_BETWEEN_OPTIMIZATION_UPDATES;

		// Token: 0x04003A77 RID: 14967
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003A77")]
		private WaitForSecondsRealtime DELAY_BETWEEN_GAMEOBJECTS_STATE_CHANGE;

		// Token: 0x04003A78 RID: 14968
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4003A78")]
		private float ADITIONAL_CULLING_DISTANCE_OFFSET;

		// Token: 0x04003A79 RID: 14969
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003A79")]
		private RuntimeInstancesDetector runtimeInstancesDetector;

		// Token: 0x04003A7A RID: 14970
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003A7A")]
		private int[] instructionsToMakeOnUlods;

		// Token: 0x04003A7B RID: 14971
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003A7B")]
		[HideInInspector]
		public bool enableOptimizationTasks;

		// Token: 0x04003A7C RID: 14972
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003A7C")]
		[HideInInspector]
		public List<UltimateLevelOfDetail> ulodsToBeIgnored;
	}
}
