using System;
using System.Runtime.CompilerServices;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x0200045A RID: 1114
	[Token(Token = "0x200045A")]
	[Serializable]
	public class Grounding
	{
		// Token: 0x17000239 RID: 569
		// (get) Token: 0x06002778 RID: 10104 RVA: 0x0005AAF0 File Offset: 0x00058CF0
		// (set) Token: 0x06002779 RID: 10105 RVA: 0x0005AB04 File Offset: 0x00058D04
		[Token(Token = "0x17000239")]
		public Grounding.Leg[] legs
		{
			[Token(Token = "0x6002778")]
			[Address(RVA = "0x33F1C0", Offset = "0x33E1C0", VA = "0x18033F1C0")]
			[CompilerGenerated]
			get
			{
				return this.<legs>k__BackingField;
			}
			[Token(Token = "0x6002779")]
			[Address(RVA = "0x4D1570", Offset = "0x4D0570", VA = "0x1804D1570")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (06002779)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.Grounding::set_legs(RootMotion.FinalIK.Grounding/Leg[])

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:class RootMotion.FinalIK.Grounding/Leg[](Grounding::<legs>k__BackingField, ldloc:Grounding(this), ldloc:class RootMotion.FinalIK.Grounding/Leg[](value)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}
		}

		// Token: 0x1700023A RID: 570
		// (get) Token: 0x0600277A RID: 10106 RVA: 0x0005AB18 File Offset: 0x00058D18
		// (set) Token: 0x0600277B RID: 10107 RVA: 0x0005AB2C File Offset: 0x00058D2C
		[Token(Token = "0x1700023A")]
		public Grounding.Pelvis pelvis
		{
			[Token(Token = "0x600277A")]
			[Address(RVA = "0x33F2E0", Offset = "0x33E2E0", VA = "0x18033F2E0")]
			[CompilerGenerated]
			get
			{
				return this.<pelvis>k__BackingField;
			}
			[Token(Token = "0x600277B")]
			[Address(RVA = "0x63DF80", Offset = "0x63CF80", VA = "0x18063DF80")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (0600277B)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.Grounding::set_pelvis(RootMotion.FinalIK.Grounding/Pelvis)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:Pelvis(Grounding::<pelvis>k__BackingField, ldloc:Grounding(this), ldloc:Pelvis(value)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}
		}

		// Token: 0x1700023B RID: 571
		// (get) Token: 0x0600277C RID: 10108 RVA: 0x0005AB40 File Offset: 0x00058D40
		// (set) Token: 0x0600277D RID: 10109 RVA: 0x0005AB54 File Offset: 0x00058D54
		[Token(Token = "0x1700023B")]
		public bool isGrounded
		{
			[Token(Token = "0x600277C")]
			[Address(RVA = "0xB948C0", Offset = "0xB938C0", VA = "0x180B948C0")]
			get;
			[Token(Token = "0x600277D")]
			[Address(RVA = "0x6E01C0", Offset = "0x6DF1C0", VA = "0x1806E01C0")]
			private set;
		}

		// Token: 0x1700023C RID: 572
		// (get) Token: 0x0600277E RID: 10110 RVA: 0x0005AB68 File Offset: 0x00058D68
		// (set) Token: 0x0600277F RID: 10111 RVA: 0x0005AB7C File Offset: 0x00058D7C
		[Token(Token = "0x1700023C")]
		public Transform root
		{
			[Token(Token = "0x600277E")]
			[Address(RVA = "0x452350", Offset = "0x451350", VA = "0x180452350")]
			[CompilerGenerated]
			get
			{
				return this.<root>k__BackingField;
			}
			[Token(Token = "0x600277F")]
			[Address(RVA = "0x5549C0", Offset = "0x5539C0", VA = "0x1805549C0")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (0600277F)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.Grounding::set_root(UnityEngine.Transform)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:Transform(Grounding::<root>k__BackingField, ldloc:Grounding(this), ldloc:Transform(value)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}
		}

		// Token: 0x1700023D RID: 573
		// (get) Token: 0x06002780 RID: 10112 RVA: 0x000020D3 File Offset: 0x000002D3
		// (set) Token: 0x06002781 RID: 10113 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700023D")]
		public RaycastHit rootHit
		{
			[Token(Token = "0x6002780")]
			[Address(RVA = "0x17021A0", Offset = "0x17011A0", VA = "0x1817021A0")]
			[CompilerGenerated]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
			[Token(Token = "0x6002781")]
			[Address(RVA = "0x17022D0", Offset = "0x17012D0", VA = "0x1817022D0")]
			[CompilerGenerated]
			private set
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x1700023E RID: 574
		// (get) Token: 0x06002782 RID: 10114 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700023E")]
		public bool rootGrounded
		{
			[Token(Token = "0x6002782")]
			[Address(RVA = "0x1702140", Offset = "0x1701140", VA = "0x181702140")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x06002783 RID: 10115 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002783")]
		[Address(RVA = "0x17012C0", Offset = "0x17002C0", VA = "0x1817012C0")]
		public RaycastHit GetRootHit(float maxDistanceMlp = 10f)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002784 RID: 10116 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002784")]
		[Address(RVA = "0x1701CA0", Offset = "0x1700CA0", VA = "0x181701CA0")]
		public bool IsValid(ref string errorMessage)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002785 RID: 10117 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002785")]
		[Address(RVA = "0x1701900", Offset = "0x1700900", VA = "0x181701900")]
		public void Initiate(Transform root, Transform[] feet)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002786 RID: 10118 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002786")]
		[Address(RVA = "0x1701E70", Offset = "0x1700E70", VA = "0x181701E70")]
		public void Update()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002787 RID: 10119 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002787")]
		[Address(RVA = "0x1700FF0", Offset = "0x16FFFF0", VA = "0x181700FF0")]
		public Vector3 GetLegsPlaneNormal()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002788 RID: 10120 RVA: 0x0005AB90 File Offset: 0x00058D90
		[Token(Token = "0x6002788")]
		[Address(RVA = "0x1701DF0", Offset = "0x1700DF0", VA = "0x181701DF0")]
		public void Reset()
		{
			if (Application.isPlaying)
			{
				this.<pelvis>k__BackingField.Reset();
				Grounding.Leg[] array = this.<legs>k__BackingField;
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					array[num].Reset();
					num++;
				}
			}
		}

		// Token: 0x06002789 RID: 10121 RVA: 0x0005ABDC File Offset: 0x00058DDC
		[Token(Token = "0x6002789")]
		[Address(RVA = "0x1701DD0", Offset = "0x1700DD0", VA = "0x181701DD0")]
		public void LogWarning(string message)
		{
			Transform transform = this.<root>k__BackingField;
			int num = 0;
			Warning.Log(message, transform, num != 0);
		}

		// Token: 0x1700023F RID: 575
		// (get) Token: 0x0600278A RID: 10122 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700023F")]
		public Vector3 up
		{
			[Token(Token = "0x600278A")]
			[Address(RVA = "0x17021D0", Offset = "0x17011D0", VA = "0x1817021D0")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x0600278B RID: 10123 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600278B")]
		[Address(RVA = "0x17017E0", Offset = "0x17007E0", VA = "0x1817017E0")]
		public float GetVerticalOffset(Vector3 p1, Vector3 p2)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600278C RID: 10124 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600278C")]
		[Address(RVA = "0x1700DE0", Offset = "0x16FFDE0", VA = "0x181700DE0")]
		public Vector3 Flatten(Vector3 v)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000240 RID: 576
		// (get) Token: 0x0600278D RID: 10125 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000240")]
		private bool useRootRotation
		{
			[Token(Token = "0x600278D")]
			[Address(RVA = "0x1702240", Offset = "0x1701240", VA = "0x181702240")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x0600278E RID: 10126 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600278E")]
		[Address(RVA = "0x1700ED0", Offset = "0x16FFED0", VA = "0x181700ED0")]
		public Vector3 GetFootCenterOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600278F RID: 10127 RVA: 0x0005ABFC File Offset: 0x00058DFC
		[Token(Token = "0x600278F")]
		[Address(RVA = "0x17020E0", Offset = "0x17010E0", VA = "0x1817020E0")]
		public Grounding()
		{
		}

		// Token: 0x04003150 RID: 12624
		[FieldOffset(Offset = "0x10")]
		[Token(Token = "0x4003150")]
		[Tooltip("Layers to ground the character to. Make sure to exclude the layer of the character controller.")]
		public LayerMask layers;

		// Token: 0x04003151 RID: 12625
		[FieldOffset(Offset = "0x14")]
		[Token(Token = "0x4003151")]
		[Tooltip("Max step height. Maximum vertical distance of Grounding from the root of the character.")]
		public float maxStep = 0.5f;

		// Token: 0x04003152 RID: 12626
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4003152")]
		[Tooltip("The height offset of the root.")]
		public float heightOffset;

		// Token: 0x04003153 RID: 12627
		[FieldOffset(Offset = "0x1C")]
		[Token(Token = "0x4003153")]
		[Tooltip("The speed of moving the feet up/down.")]
		public float footSpeed = 2.5f;

		// Token: 0x04003154 RID: 12628
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4003154")]
		[Tooltip("CapsuleCast radius. Should match approximately with the size of the feet.")]
		public float footRadius = 0.15f;

		// Token: 0x04003155 RID: 12629
		[FieldOffset(Offset = "0x24")]
		[Token(Token = "0x4003155")]
		[HideInInspector]
		[Tooltip("Offset of the foot center along character forward axis.")]
		public float footCenterOffset;

		// Token: 0x04003156 RID: 12630
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4003156")]
		[Tooltip("Amount of velocity based prediction of the foot positions.")]
		public float prediction = 0.05f;

		// Token: 0x04003157 RID: 12631
		[FieldOffset(Offset = "0x2C")]
		[Token(Token = "0x4003157")]
		[Range(0f, 1f)]
		[Tooltip("Weight of rotating the feet to the ground normal offset.")]
		public float footRotationWeight = 1f;

		// Token: 0x04003158 RID: 12632
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003158")]
		[Tooltip("Speed of slerping the feet to their grounded rotations.")]
		public float footRotationSpeed = 7f;

		// Token: 0x04003159 RID: 12633
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x4003159")]
		[Range(0f, 90f)]
		[Tooltip("Max Foot Rotation Angle. Max angular offset from the foot's rotation.")]
		public float maxFootRotationAngle = 45f;

		// Token: 0x0400315A RID: 12634
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x400315A")]
		[Tooltip("If true, solver will rotate with the character root so the character can be grounded for example to spherical planets. For performance reasons leave this off unless needed.")]
		public bool rotateSolver;

		// Token: 0x0400315B RID: 12635
		[FieldOffset(Offset = "0x3C")]
		[Token(Token = "0x400315B")]
		[Tooltip("The speed of moving the character up/down.")]
		public float pelvisSpeed = 5f;

		// Token: 0x0400315C RID: 12636
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x400315C")]
		[Range(0f, 1f)]
		[Tooltip("Used for smoothing out vertical pelvis movement (range 0 - 1).")]
		public float pelvisDamper;

		// Token: 0x0400315D RID: 12637
		[FieldOffset(Offset = "0x44")]
		[Token(Token = "0x400315D")]
		[Tooltip("The weight of lowering the pelvis to the lowest foot.")]
		public float lowerPelvisWeight = 1f;

		// Token: 0x0400315E RID: 12638
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x400315E")]
		[Tooltip("The weight of lifting the pelvis to the highest foot. This is useful when you don't want the feet to go too high relative to the body when crouching.")]
		public float liftPelvisWeight;

		// Token: 0x0400315F RID: 12639
		[FieldOffset(Offset = "0x4C")]
		[Token(Token = "0x400315F")]
		[Tooltip("The radius of the spherecast from the root that determines whether the character root is grounded.")]
		public float rootSphereCastRadius = 0.1f;

		// Token: 0x04003160 RID: 12640
		[FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4003160")]
		[Tooltip("The raycasting quality. Fastest is a single raycast per foot, Simple is three raycasts, Best is one raycast and a capsule cast per foot.")]
		public Grounding.Quality quality = (Grounding.Quality)((ulong)2L);

		// Token: 0x04003166 RID: 12646
		[FieldOffset(Offset = "0xA4")]
		[Token(Token = "0x4003166")]
		private bool initiated;

		// Token: 0x0200045B RID: 1115
		[Token(Token = "0x200045B")]
		[Serializable]
		public enum Quality
		{
			// Token: 0x04003168 RID: 12648
			[Token(Token = "0x4003168")]
			Fastest,
			// Token: 0x04003169 RID: 12649
			[Token(Token = "0x4003169")]
			Simple,
			// Token: 0x0400316A RID: 12650
			[Token(Token = "0x400316A")]
			Best
		}

		// Token: 0x0200045C RID: 1116
		[Token(Token = "0x200045C")]
		public class Leg
		{
			// Token: 0x17000241 RID: 577
			// (get) Token: 0x06002790 RID: 10128 RVA: 0x0005AC88 File Offset: 0x00058E88
			// (set) Token: 0x06002791 RID: 10129 RVA: 0x0005AC9C File Offset: 0x00058E9C
			[Token(Token = "0x17000241")]
			public bool isGrounded
			{
				[Token(Token = "0x6002790")]
				[Address(RVA = "0x335430", Offset = "0x334430", VA = "0x180335430")]
				get;
				[Token(Token = "0x6002791")]
				[Address(RVA = "0x3393F0", Offset = "0x3383F0", VA = "0x1803393F0")]
				private set;
			}

			// Token: 0x17000242 RID: 578
			// (get) Token: 0x06002792 RID: 10130 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002793 RID: 10131 RVA: 0x0005ACB0 File Offset: 0x00058EB0
			[Token(Token = "0x17000242")]
			public Vector3 IKPosition
			{
				[Token(Token = "0x6002792")]
				[Address(RVA = "0x56E710", Offset = "0x56D710", VA = "0x18056E710")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002793")]
				[Address(RVA = "0x16A8A00", Offset = "0x16A7A00", VA = "0x1816A8A00")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<IKPosition>k__BackingField.z = z;
				}
			}

			// Token: 0x17000243 RID: 579
			// (get) Token: 0x06002794 RID: 10132 RVA: 0x0005ACD0 File Offset: 0x00058ED0
			// (set) Token: 0x06002795 RID: 10133 RVA: 0x0005ACE4 File Offset: 0x00058EE4
			[Token(Token = "0x17000243")]
			public bool initiated
			{
				[Token(Token = "0x6002794")]
				[Address(RVA = "0x4920D0", Offset = "0x4910D0", VA = "0x1804920D0")]
				get;
				[Token(Token = "0x6002795")]
				[Address(RVA = "0x36BDF0", Offset = "0x36ADF0", VA = "0x18036BDF0")]
				private set;
			}

			// Token: 0x17000244 RID: 580
			// (get) Token: 0x06002796 RID: 10134 RVA: 0x0005ACF8 File Offset: 0x00058EF8
			// (set) Token: 0x06002797 RID: 10135 RVA: 0x0005AD0C File Offset: 0x00058F0C
			[Token(Token = "0x17000244")]
			public float heightFromGround
			{
				[Token(Token = "0x6002796")]
				[Address(RVA = "0x614B20", Offset = "0x613B20", VA = "0x180614B20")]
				get;
				[Token(Token = "0x6002797")]
				[Address(RVA = "0x614C70", Offset = "0x613C70", VA = "0x180614C70")]
				private set;
			}

			// Token: 0x17000245 RID: 581
			// (get) Token: 0x06002798 RID: 10136 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x06002799 RID: 10137 RVA: 0x0005AD20 File Offset: 0x00058F20
			[Token(Token = "0x17000245")]
			public Vector3 velocity
			{
				[Token(Token = "0x6002798")]
				[Address(RVA = "0x3F66C0", Offset = "0x3F56C0", VA = "0x1803F66C0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x6002799")]
				[Address(RVA = "0x3F6740", Offset = "0x3F5740", VA = "0x1803F6740")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<velocity>k__BackingField.z = z;
				}
			}

			// Token: 0x17000246 RID: 582
			// (get) Token: 0x0600279A RID: 10138 RVA: 0x0005AD40 File Offset: 0x00058F40
			// (set) Token: 0x0600279B RID: 10139 RVA: 0x0005AD54 File Offset: 0x00058F54
			[Token(Token = "0x17000246")]
			public Transform transform
			{
				[Token(Token = "0x600279A")]
				[Address(RVA = "0x3352E0", Offset = "0x3342E0", VA = "0x1803352E0")]
				[CompilerGenerated]
				get
				{
					return this.<transform>k__BackingField;
				}
				[Token(Token = "0x600279B")]
				[Address(RVA = "0x376270", Offset = "0x375270", VA = "0x180376270")]
				[CompilerGenerated]
				private set
				{
					/*
An exception occurred when decompiling this method (0600279B)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.Grounding/Leg::set_transform(UnityEngine.Transform)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	stfld:Transform(Leg::<transform>k__BackingField, ldloc:Leg(this), ldloc:Transform(value)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
				}
			}

			// Token: 0x17000247 RID: 583
			// (get) Token: 0x0600279C RID: 10140 RVA: 0x0005AD68 File Offset: 0x00058F68
			// (set) Token: 0x0600279D RID: 10141 RVA: 0x0005AD7C File Offset: 0x00058F7C
			[Token(Token = "0x17000247")]
			public float IKOffset
			{
				[Token(Token = "0x600279C")]
				[Address(RVA = "0x4C3B40", Offset = "0x4C2B40", VA = "0x1804C3B40")]
				get;
				[Token(Token = "0x600279D")]
				[Address(RVA = "0x4D14A0", Offset = "0x4D04A0", VA = "0x1804D14A0")]
				private set;
			}

			// Token: 0x0600279E RID: 10142 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600279E")]
			[Address(RVA = "0x16A5A30", Offset = "0x16A4A30", VA = "0x1816A5A30")]
			public void Initiate(Grounding grounding, Transform transform)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600279F RID: 10143 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600279F")]
			[Address(RVA = "0x16A5B10", Offset = "0x16A4B10", VA = "0x1816A5B10")]
			public void OnEnable()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A0 RID: 10144 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A0")]
			[Address(RVA = "0x16A79B0", Offset = "0x16A69B0", VA = "0x1816A79B0")]
			public void Reset()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A1 RID: 10145 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A1")]
			[Address(RVA = "0x16A6AF0", Offset = "0x16A5AF0", VA = "0x1816A6AF0")]
			public void Process()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x17000248 RID: 584
			// (get) Token: 0x060027A2 RID: 10146 RVA: 0x0005AD90 File Offset: 0x00058F90
			[Token(Token = "0x17000248")]
			public float stepHeightFromGround
			{
				[Token(Token = "0x60027A2")]
				[Address(RVA = "0x16A89A0", Offset = "0x16A79A0", VA = "0x1816A89A0")]
				get
				{
					float maxStep = this.grounding.maxStep;
					return Mathf.Clamp(this.<heightFromGround>k__BackingField, maxStep, maxStep);
				}
			}

			// Token: 0x060027A3 RID: 10147 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A3")]
			[Address(RVA = "0x16A4FD0", Offset = "0x16A3FD0", VA = "0x1816A4FD0")]
			private RaycastHit GetCapsuleHit(Vector3 offsetFromHeel)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A4 RID: 10148 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A4")]
			[Address(RVA = "0x16A56A0", Offset = "0x16A46A0", VA = "0x1816A56A0")]
			private RaycastHit GetRaycastHit(Vector3 offsetFromHeel)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A5 RID: 10149 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A5")]
			[Address(RVA = "0x16A7B40", Offset = "0x16A6B40", VA = "0x1816A7B40")]
			private Vector3 RotateNormal(Vector3 normal)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A6 RID: 10150 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A6")]
			[Address(RVA = "0x16A7EB0", Offset = "0x16A6EB0", VA = "0x1816A7EB0")]
			private void SetFootToPoint(Vector3 normal, Vector3 point)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A7 RID: 10151 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A7")]
			[Address(RVA = "0x16A7BF0", Offset = "0x16A6BF0", VA = "0x1816A7BF0")]
			private void SetFootToPlane(Vector3 planeNormal, Vector3 planePoint, Vector3 heelHitPoint)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A8 RID: 10152 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A8")]
			[Address(RVA = "0x16A54E0", Offset = "0x16A44E0", VA = "0x1816A54E0")]
			private float GetHeightFromGround(Vector3 hitPoint)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027A9 RID: 10153 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027A9")]
			[Address(RVA = "0x16A7A40", Offset = "0x16A6A40", VA = "0x1816A7A40")]
			private void RotateFoot()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027AA RID: 10154 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027AA")]
			[Address(RVA = "0x16A5970", Offset = "0x16A4970", VA = "0x1816A5970")]
			private Quaternion GetRotationOffsetTarget()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x17000249 RID: 585
			// (get) Token: 0x060027AB RID: 10155 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000249")]
			private float rootYOffset
			{
				[Token(Token = "0x60027AB")]
				[Address(RVA = "0x16A8840", Offset = "0x16A7840", VA = "0x1816A8840")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x060027AC RID: 10156 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027AC")]
			[Address(RVA = "0x16A8790", Offset = "0x16A7790", VA = "0x1816A8790")]
			public Leg()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0400316D RID: 12653
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x400316D")]
			public Quaternion rotationOffset;

			// Token: 0x04003173 RID: 12659
			[FieldOffset(Offset = "0x54")]
			[Token(Token = "0x4003173")]
			public bool invertFootCenter;

			// Token: 0x04003174 RID: 12660
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4003174")]
			private Grounding grounding;

			// Token: 0x04003175 RID: 12661
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4003175")]
			private float lastTime;

			// Token: 0x04003176 RID: 12662
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x4003176")]
			private float deltaTime;

			// Token: 0x04003177 RID: 12663
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x4003177")]
			private Vector3 lastPosition;

			// Token: 0x04003178 RID: 12664
			[FieldOffset(Offset = "0x74")]
			[Token(Token = "0x4003178")]
			private Quaternion toHitNormal;

			// Token: 0x04003179 RID: 12665
			[FieldOffset(Offset = "0x84")]
			[Token(Token = "0x4003179")]
			private Quaternion r;

			// Token: 0x0400317A RID: 12666
			[FieldOffset(Offset = "0x94")]
			[Token(Token = "0x400317A")]
			private RaycastHit heelHit;

			// Token: 0x0400317B RID: 12667
			[FieldOffset(Offset = "0xC0")]
			[Token(Token = "0x400317B")]
			private Vector3 up;
		}

		// Token: 0x0200045D RID: 1117
		[Token(Token = "0x200045D")]
		public class Pelvis
		{
			// Token: 0x1700024A RID: 586
			// (get) Token: 0x060027AD RID: 10157 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x060027AE RID: 10158 RVA: 0x0005ADBC File Offset: 0x00058FBC
			[Token(Token = "0x1700024A")]
			public Vector3 IKOffset
			{
				[Token(Token = "0x60027AD")]
				[Address(RVA = "0x491550", Offset = "0x490550", VA = "0x180491550")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x60027AE")]
				[Address(RVA = "0x4B2350", Offset = "0x4B1350", VA = "0x1804B2350")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<IKOffset>k__BackingField.z = z;
				}
			}

			// Token: 0x1700024B RID: 587
			// (get) Token: 0x060027AF RID: 10159 RVA: 0x0005ADDC File Offset: 0x00058FDC
			// (set) Token: 0x060027B0 RID: 10160 RVA: 0x0005ADF0 File Offset: 0x00058FF0
			[Token(Token = "0x1700024B")]
			public float heightOffset
			{
				[Token(Token = "0x60027AF")]
				[Address(RVA = "0x5C7D20", Offset = "0x5C6D20", VA = "0x1805C7D20")]
				get;
				[Token(Token = "0x60027B0")]
				[Address(RVA = "0x75AF70", Offset = "0x759F70", VA = "0x18075AF70")]
				private set;
			}

			// Token: 0x060027B1 RID: 10161 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027B1")]
			[Address(RVA = "0x16ACB90", Offset = "0x16ABB90", VA = "0x1816ACB90")]
			public void Initiate(Grounding grounding)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027B2 RID: 10162 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027B2")]
			[Address(RVA = "0x16ACF10", Offset = "0x16ABF10", VA = "0x1816ACF10")]
			public void Reset()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027B3 RID: 10163 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027B3")]
			[Address(RVA = "0x16ACC10", Offset = "0x16ABC10", VA = "0x1816ACC10")]
			public void OnEnable()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027B4 RID: 10164 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60027B4")]
			[Address(RVA = "0x16ACC80", Offset = "0x16ABC80", VA = "0x1816ACC80")]
			public void Process(float lowestOffset, float highestOffset, bool isGrounded)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060027B5 RID: 10165 RVA: 0x0005AE04 File Offset: 0x00059004
			[Token(Token = "0x60027B5")]
			[Address(RVA = "0x36ABD0", Offset = "0x369BD0", VA = "0x18036ABD0")]
			public Pelvis()
			{
			}

			// Token: 0x0400317E RID: 12670
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x400317E")]
			private Grounding grounding;

			// Token: 0x0400317F RID: 12671
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x400317F")]
			private Vector3 lastRootPosition;

			// Token: 0x04003180 RID: 12672
			[FieldOffset(Offset = "0x34")]
			[Token(Token = "0x4003180")]
			private float damperF;

			// Token: 0x04003181 RID: 12673
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x4003181")]
			private bool initiated;

			// Token: 0x04003182 RID: 12674
			[FieldOffset(Offset = "0x3C")]
			[Token(Token = "0x4003182")]
			private float lastTime;
		}
	}
}
