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

namespace MTAssets.UltimateLODSystem
{
	// Token: 0x02000659 RID: 1625
	[Token(Token = "0x2000659")]
	[AddComponentMenu("MT Assets/Ultimate LOD System/Ultimate Level Of Detail Optimizer")]
	public class UltimateLevelOfDetailOptimizer : MonoBehaviour
	{
		// Token: 0x060032F6 RID: 13046 RVA: 0x0006D548 File Offset: 0x0006B748
		[Token(Token = "0x60032F6")]
		[Address(RVA = "0x4AB910", Offset = "0x4AA910", VA = "0x1804AB910")]
		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: 0x060032F7 RID: 13047 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032F7")]
		[Address(RVA = "0x4ABB20", Offset = "0x4AAB20", VA = "0x1804ABB20")]
		private bool isThisUlodPresentOnUlodsToBeIgnored(UltimateLevelOfDetail ulod)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032F8 RID: 13048 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60032F8")]
		[Address(RVA = "0x4AB990", Offset = "0x4AA990", VA = "0x1804AB990")]
		private IEnumerator UlodOptimizationLoop()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060032F9 RID: 13049 RVA: 0x0006D574 File Offset: 0x0006B774
		[Token(Token = "0x60032F9")]
		[Address(RVA = "0x4ABA00", Offset = "0x4AAA00", VA = "0x1804ABA00")]
		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: 0x04003D60 RID: 15712
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003D60")]
		private WaitForSecondsRealtime DELAY_BETWEEN_OPTIMIZATION_UPDATES;

		// Token: 0x04003D61 RID: 15713
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003D61")]
		private WaitForSecondsRealtime DELAY_BETWEEN_GAMEOBJECTS_STATE_CHANGE;

		// Token: 0x04003D62 RID: 15714
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4003D62")]
		private float ADITIONAL_CULLING_DISTANCE_OFFSET;

		// Token: 0x04003D63 RID: 15715
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003D63")]
		private RuntimeInstancesDetector runtimeInstancesDetector;

		// Token: 0x04003D64 RID: 15716
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003D64")]
		private int[] instructionsToMakeOnUlods;

		// Token: 0x04003D65 RID: 15717
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003D65")]
		[HideInInspector]
		public bool enableOptimizationTasks;

		// Token: 0x04003D66 RID: 15718
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003D66")]
		[HideInInspector]
		public List<UltimateLevelOfDetail> ulodsToBeIgnored;
	}
}
