using System;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
using UnityEngine;

namespace MTAssets.UltimateLODSystem.MeshSimplifier
{
	// Token: 0x0200060B RID: 1547
	[Token(Token = "0x200060B")]
	[Serializable]
	[StructLayout(3)]
	public struct SimplificationOptions
	{
		// Token: 0x060030D5 RID: 12501 RVA: 0x000020D3 File Offset: 0x000002D3
		// Note: this type is marked as 'beforefieldinit'.
		[Token(Token = "0x60030D5")]
		[Address(RVA = "0x11F36D0", Offset = "0x11F24D0", VA = "0x1811F36D0")]
		static SimplificationOptions()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003AB7 RID: 15031
		[Token(Token = "0x4003AB7")]
		public static readonly SimplificationOptions Default;

		// Token: 0x04003AB8 RID: 15032
		[Cpp2IlInjected.FieldOffset(Offset = "0x0")]
		[Token(Token = "0x4003AB8")]
		[Tooltip("If the border edges should be preserved.")]
		public bool PreserveBorderEdges;

		// Token: 0x04003AB9 RID: 15033
		[Cpp2IlInjected.FieldOffset(Offset = "0x1")]
		[Token(Token = "0x4003AB9")]
		[Tooltip("If the UV seam edges should be preserved.")]
		public bool PreserveUVSeamEdges;

		// Token: 0x04003ABA RID: 15034
		[Cpp2IlInjected.FieldOffset(Offset = "0x2")]
		[Token(Token = "0x4003ABA")]
		[Tooltip("If the UV foldover edges should be preserved.")]
		public bool PreserveUVFoldoverEdges;

		// Token: 0x04003ABB RID: 15035
		[Cpp2IlInjected.FieldOffset(Offset = "0x3")]
		[Token(Token = "0x4003ABB")]
		[Tooltip("If the discrete curvature of the mesh surface be taken into account during simplification. Taking surface curvature into account can result in very good quality mesh simplification, but it can slow the simplification process significantly.")]
		public bool PreserveSurfaceCurvature;

		// Token: 0x04003ABC RID: 15036
		[Cpp2IlInjected.FieldOffset(Offset = "0x4")]
		[Token(Token = "0x4003ABC")]
		[Tooltip("If a feature for smarter vertex linking should be enabled, reducing artifacts at the cost of slower simplification.")]
		public bool EnableSmartLink;

		// Token: 0x04003ABD RID: 15037
		[Cpp2IlInjected.FieldOffset(Offset = "0x8")]
		[Token(Token = "0x4003ABD")]
		[Tooltip("The maximum distance between two vertices in order to link them.")]
		public double VertexLinkDistance;

		// Token: 0x04003ABE RID: 15038
		[Cpp2IlInjected.FieldOffset(Offset = "0x10")]
		[Token(Token = "0x4003ABE")]
		[Tooltip("The maximum iteration count. Higher number is more expensive but can bring you closer to your target quality.")]
		public int MaxIterationCount;

		// Token: 0x04003ABF RID: 15039
		[Cpp2IlInjected.FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003ABF")]
		[Tooltip("The agressiveness of the mesh simplification. Higher number equals higher quality, but more expensive to run.")]
		public double Agressiveness;

		// Token: 0x04003AC0 RID: 15040
		[Cpp2IlInjected.FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003AC0")]
		[Tooltip("If a manual UV component count should be used (set by UV Component Count below), instead of the automatic detection.")]
		public bool ManualUVComponentCount;

		// Token: 0x04003AC1 RID: 15041
		[Cpp2IlInjected.FieldOffset(Offset = "0x24")]
		[Token(Token = "0x4003AC1")]
		[Tooltip("The UV component count. The same UV component count will be used on all UV channels.")]
		[Range(0f, 4f)]
		public int UVComponentCount;
	}
}
