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

namespace MTAssets.UltimateLODSystem.MeshSimplifier
{
	// Token: 0x02000663 RID: 1635
	[Token(Token = "0x2000663")]
	[Serializable]
	[StructLayout(3)]
	public struct SimplificationOptions
	{
		// Token: 0x0600339E RID: 13214 RVA: 0x000020D3 File Offset: 0x000002D3
		// Note: this type is marked as 'beforefieldinit'.
		[Token(Token = "0x600339E")]
		[Address(RVA = "0x1461680", Offset = "0x1460680", VA = "0x181461680")]
		static SimplificationOptions()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003DA1 RID: 15777
		[Token(Token = "0x4003DA1")]
		public static readonly SimplificationOptions Default;

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

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

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

		// Token: 0x04003DA5 RID: 15781
		[Cpp2IlInjected.FieldOffset(Offset = "0x3")]
		[Token(Token = "0x4003DA5")]
		[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: 0x04003DA6 RID: 15782
		[Cpp2IlInjected.FieldOffset(Offset = "0x4")]
		[Token(Token = "0x4003DA6")]
		[Tooltip("If a feature for smarter vertex linking should be enabled, reducing artifacts at the cost of slower simplification.")]
		public bool EnableSmartLink;

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

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

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

		// Token: 0x04003DAA RID: 15786
		[Cpp2IlInjected.FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003DAA")]
		[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: 0x04003DAB RID: 15787
		[Cpp2IlInjected.FieldOffset(Offset = "0x24")]
		[Token(Token = "0x4003DAB")]
		[Tooltip("The UV component count. The same UV component count will be used on all UV channels.")]
		[Range(0f, 4f)]
		public int UVComponentCount;
	}
}
