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

namespace RootMotion.FinalIK
{
	// Token: 0x02000402 RID: 1026
	[Token(Token = "0x2000402")]
	[Serializable]
	public class Grounding
	{
		// Token: 0x17000214 RID: 532
		// (get) Token: 0x060024AF RID: 9391 RVA: 0x000537C4 File Offset: 0x000519C4
		// (set) Token: 0x060024B0 RID: 9392 RVA: 0x000537D8 File Offset: 0x000519D8
		[Token(Token = "0x17000214")]
		public Grounding.Leg[] legs
		{
			[Token(Token = "0x60024AF")]
			[Address(RVA = "0x31E360", Offset = "0x31D160", VA = "0x18031E360")]
			[CompilerGenerated]
			get
			{
				return this.<legs>k__BackingField;
			}
			[Token(Token = "0x60024B0")]
			[Address(RVA = "0x475BD0", Offset = "0x4749D0", VA = "0x180475BD0")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (060024B0)

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: 0x17000215 RID: 533
		// (get) Token: 0x060024B1 RID: 9393 RVA: 0x000537EC File Offset: 0x000519EC
		// (set) Token: 0x060024B2 RID: 9394 RVA: 0x00053800 File Offset: 0x00051A00
		[Token(Token = "0x17000215")]
		public Grounding.Pelvis pelvis
		{
			[Token(Token = "0x60024B1")]
			[Address(RVA = "0x31E480", Offset = "0x31D280", VA = "0x18031E480")]
			[CompilerGenerated]
			get
			{
				return this.<pelvis>k__BackingField;
			}
			[Token(Token = "0x60024B2")]
			[Address(RVA = "0x6421A0", Offset = "0x640FA0", VA = "0x1806421A0")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (060024B2)

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: 0x17000216 RID: 534
		// (get) Token: 0x060024B3 RID: 9395 RVA: 0x00053814 File Offset: 0x00051A14
		// (set) Token: 0x060024B4 RID: 9396 RVA: 0x00053828 File Offset: 0x00051A28
		[Token(Token = "0x17000216")]
		public bool isGrounded
		{
			[Token(Token = "0x60024B3")]
			[Address(RVA = "0xAD69C0", Offset = "0xAD57C0", VA = "0x180AD69C0")]
			get;
			[Token(Token = "0x60024B4")]
			[Address(RVA = "0x6B6780", Offset = "0x6B5580", VA = "0x1806B6780")]
			private set;
		}

		// Token: 0x17000217 RID: 535
		// (get) Token: 0x060024B5 RID: 9397 RVA: 0x0005383C File Offset: 0x00051A3C
		// (set) Token: 0x060024B6 RID: 9398 RVA: 0x00053850 File Offset: 0x00051A50
		[Token(Token = "0x17000217")]
		public Transform root
		{
			[Token(Token = "0x60024B5")]
			[Address(RVA = "0x3EFFD0", Offset = "0x3EEDD0", VA = "0x1803EFFD0")]
			[CompilerGenerated]
			get
			{
				return this.<root>k__BackingField;
			}
			[Token(Token = "0x60024B6")]
			[Address(RVA = "0x5296E0", Offset = "0x5284E0", VA = "0x1805296E0")]
			[CompilerGenerated]
			private set
			{
				/*
An exception occurred when decompiling this method (060024B6)

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: 0x17000218 RID: 536
		// (get) Token: 0x060024B7 RID: 9399 RVA: 0x000020D3 File Offset: 0x000002D3
		// (set) Token: 0x060024B8 RID: 9400 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000218")]
		public RaycastHit rootHit
		{
			[Token(Token = "0x60024B7")]
			[Address(RVA = "0x117BAD0", Offset = "0x117A8D0", VA = "0x18117BAD0")]
			[CompilerGenerated]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
			[Token(Token = "0x60024B8")]
			[Address(RVA = "0x117BC00", Offset = "0x117AA00", VA = "0x18117BC00")]
			[CompilerGenerated]
			private set
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000219 RID: 537
		// (get) Token: 0x060024B9 RID: 9401 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000219")]
		public bool rootGrounded
		{
			[Token(Token = "0x60024B9")]
			[Address(RVA = "0x117BA70", Offset = "0x117A870", VA = "0x18117BA70")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x060024BA RID: 9402 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024BA")]
		[Address(RVA = "0x117ABF0", Offset = "0x11799F0", VA = "0x18117ABF0")]
		public RaycastHit GetRootHit(float maxDistanceMlp = 10f)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024BB RID: 9403 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024BB")]
		[Address(RVA = "0x117B5D0", Offset = "0x117A3D0", VA = "0x18117B5D0")]
		public bool IsValid(ref string errorMessage)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024BC RID: 9404 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024BC")]
		[Address(RVA = "0x117B230", Offset = "0x117A030", VA = "0x18117B230")]
		public void Initiate(Transform root, Transform[] feet)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024BD RID: 9405 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024BD")]
		[Address(RVA = "0x117B7A0", Offset = "0x117A5A0", VA = "0x18117B7A0")]
		public void Update()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024BE RID: 9406 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024BE")]
		[Address(RVA = "0x117A920", Offset = "0x1179720", VA = "0x18117A920")]
		public Vector3 GetLegsPlaneNormal()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024BF RID: 9407 RVA: 0x00053864 File Offset: 0x00051A64
		[Token(Token = "0x60024BF")]
		[Address(RVA = "0x117B720", Offset = "0x117A520", VA = "0x18117B720")]
		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: 0x060024C0 RID: 9408 RVA: 0x000538B0 File Offset: 0x00051AB0
		[Token(Token = "0x60024C0")]
		[Address(RVA = "0x117B700", Offset = "0x117A500", VA = "0x18117B700")]
		public void LogWarning(string message)
		{
			Transform transform = this.<root>k__BackingField;
			int num = 0;
			Warning.Log(message, transform, num != 0);
		}

		// Token: 0x1700021A RID: 538
		// (get) Token: 0x060024C1 RID: 9409 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700021A")]
		public Vector3 up
		{
			[Token(Token = "0x60024C1")]
			[Address(RVA = "0x117BB00", Offset = "0x117A900", VA = "0x18117BB00")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x060024C2 RID: 9410 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024C2")]
		[Address(RVA = "0x117B110", Offset = "0x1179F10", VA = "0x18117B110")]
		public float GetVerticalOffset(Vector3 p1, Vector3 p2)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024C3 RID: 9411 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024C3")]
		[Address(RVA = "0x117A710", Offset = "0x1179510", VA = "0x18117A710")]
		public Vector3 Flatten(Vector3 v)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x1700021B RID: 539
		// (get) Token: 0x060024C4 RID: 9412 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700021B")]
		private bool useRootRotation
		{
			[Token(Token = "0x60024C4")]
			[Address(RVA = "0x117BB70", Offset = "0x117A970", VA = "0x18117BB70")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x060024C5 RID: 9413 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60024C5")]
		[Address(RVA = "0x117A800", Offset = "0x1179600", VA = "0x18117A800")]
		public Vector3 GetFootCenterOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060024C6 RID: 9414 RVA: 0x000538D0 File Offset: 0x00051AD0
		[Token(Token = "0x60024C6")]
		[Address(RVA = "0x117BA10", Offset = "0x117A810", VA = "0x18117BA10")]
		public Grounding()
		{
		}

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

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

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

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

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

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

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

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

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

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

		// Token: 0x04002E70 RID: 11888
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4002E70")]
		[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: 0x04002E71 RID: 11889
		[FieldOffset(Offset = "0x3C")]
		[Token(Token = "0x4002E71")]
		[Tooltip("The speed of moving the character up/down.")]
		public float pelvisSpeed = 5f;

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

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

		// Token: 0x04002E74 RID: 11892
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4002E74")]
		[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: 0x04002E75 RID: 11893
		[FieldOffset(Offset = "0x4C")]
		[Token(Token = "0x4002E75")]
		[Tooltip("The radius of the spherecast from the root that determines whether the character root is grounded.")]
		public float rootSphereCastRadius = 0.1f;

		// Token: 0x04002E76 RID: 11894
		[FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4002E76")]
		[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: 0x04002E7C RID: 11900
		[FieldOffset(Offset = "0xA4")]
		[Token(Token = "0x4002E7C")]
		private bool initiated;

		// Token: 0x02000403 RID: 1027
		[Token(Token = "0x2000403")]
		[Serializable]
		public enum Quality
		{
			// Token: 0x04002E7E RID: 11902
			[Token(Token = "0x4002E7E")]
			Fastest,
			// Token: 0x04002E7F RID: 11903
			[Token(Token = "0x4002E7F")]
			Simple,
			// Token: 0x04002E80 RID: 11904
			[Token(Token = "0x4002E80")]
			Best
		}

		// Token: 0x02000404 RID: 1028
		[Token(Token = "0x2000404")]
		public class Leg
		{
			// Token: 0x1700021C RID: 540
			// (get) Token: 0x060024C7 RID: 9415 RVA: 0x0005395C File Offset: 0x00051B5C
			// (set) Token: 0x060024C8 RID: 9416 RVA: 0x00053970 File Offset: 0x00051B70
			[Token(Token = "0x1700021C")]
			public bool isGrounded
			{
				[Token(Token = "0x60024C7")]
				[Address(RVA = "0x2B3EC0", Offset = "0x2B2CC0", VA = "0x1802B3EC0")]
				get;
				[Token(Token = "0x60024C8")]
				[Address(RVA = "0x318860", Offset = "0x317660", VA = "0x180318860")]
				private set;
			}

			// Token: 0x1700021D RID: 541
			// (get) Token: 0x060024C9 RID: 9417 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x060024CA RID: 9418 RVA: 0x00053984 File Offset: 0x00051B84
			[Token(Token = "0x1700021D")]
			public Vector3 IKPosition
			{
				[Token(Token = "0x60024C9")]
				[Address(RVA = "0x562560", Offset = "0x561360", VA = "0x180562560")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x60024CA")]
				[Address(RVA = "0x5FC8E0", Offset = "0x5FB6E0", VA = "0x1805FC8E0")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<IKPosition>k__BackingField.z = z;
				}
			}

			// Token: 0x1700021E RID: 542
			// (get) Token: 0x060024CB RID: 9419 RVA: 0x000539A4 File Offset: 0x00051BA4
			// (set) Token: 0x060024CC RID: 9420 RVA: 0x000539B8 File Offset: 0x00051BB8
			[Token(Token = "0x1700021E")]
			public bool initiated
			{
				[Token(Token = "0x60024CB")]
				[Address(RVA = "0x434D40", Offset = "0x433B40", VA = "0x180434D40")]
				get;
				[Token(Token = "0x60024CC")]
				[Address(RVA = "0x502BB0", Offset = "0x5019B0", VA = "0x180502BB0")]
				private set;
			}

			// Token: 0x1700021F RID: 543
			// (get) Token: 0x060024CD RID: 9421 RVA: 0x000539CC File Offset: 0x00051BCC
			// (set) Token: 0x060024CE RID: 9422 RVA: 0x000539E0 File Offset: 0x00051BE0
			[Token(Token = "0x1700021F")]
			public float heightFromGround
			{
				[Token(Token = "0x60024CD")]
				[Address(RVA = "0x5FC740", Offset = "0x5FB540", VA = "0x1805FC740")]
				get;
				[Token(Token = "0x60024CE")]
				[Address(RVA = "0x5FC8F0", Offset = "0x5FB6F0", VA = "0x1805FC8F0")]
				private set;
			}

			// Token: 0x17000220 RID: 544
			// (get) Token: 0x060024CF RID: 9423 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x060024D0 RID: 9424 RVA: 0x000539F4 File Offset: 0x00051BF4
			[Token(Token = "0x17000220")]
			public Vector3 velocity
			{
				[Token(Token = "0x60024CF")]
				[Address(RVA = "0x38DAF0", Offset = "0x38C8F0", VA = "0x18038DAF0")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x60024D0")]
				[Address(RVA = "0x38DB70", Offset = "0x38C970", VA = "0x18038DB70")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<velocity>k__BackingField.z = z;
				}
			}

			// Token: 0x17000221 RID: 545
			// (get) Token: 0x060024D1 RID: 9425 RVA: 0x00053A14 File Offset: 0x00051C14
			// (set) Token: 0x060024D2 RID: 9426 RVA: 0x00053A28 File Offset: 0x00051C28
			[Token(Token = "0x17000221")]
			public Transform transform
			{
				[Token(Token = "0x60024D1")]
				[Address(RVA = "0x3147B0", Offset = "0x3135B0", VA = "0x1803147B0")]
				[CompilerGenerated]
				get
				{
					return this.<transform>k__BackingField;
				}
				[Token(Token = "0x60024D2")]
				[Address(RVA = "0x5428D0", Offset = "0x5416D0", VA = "0x1805428D0")]
				[CompilerGenerated]
				private set
				{
					/*
An exception occurred when decompiling this method (060024D2)

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: 0x17000222 RID: 546
			// (get) Token: 0x060024D3 RID: 9427 RVA: 0x00053A3C File Offset: 0x00051C3C
			// (set) Token: 0x060024D4 RID: 9428 RVA: 0x00053A50 File Offset: 0x00051C50
			[Token(Token = "0x17000222")]
			public float IKOffset
			{
				[Token(Token = "0x60024D3")]
				[Address(RVA = "0x468190", Offset = "0x466F90", VA = "0x180468190")]
				get;
				[Token(Token = "0x60024D4")]
				[Address(RVA = "0x475B00", Offset = "0x474900", VA = "0x180475B00")]
				private set;
			}

			// Token: 0x060024D5 RID: 9429 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024D5")]
			[Address(RVA = "0x5FB160", Offset = "0x5F9F60", VA = "0x1805FB160")]
			public void Initiate(Grounding grounding, Transform transform)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024D6 RID: 9430 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024D6")]
			[Address(RVA = "0x5FB240", Offset = "0x5FA040", VA = "0x1805FB240")]
			public void OnEnable()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024D7 RID: 9431 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024D7")]
			[Address(RVA = "0x5FC0E0", Offset = "0x5FAEE0", VA = "0x1805FC0E0")]
			public void Reset()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024D8 RID: 9432 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024D8")]
			[Address(RVA = "0x5FB290", Offset = "0x5FA090", VA = "0x1805FB290")]
			public void Process()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x17000223 RID: 547
			// (get) Token: 0x060024D9 RID: 9433 RVA: 0x00053A64 File Offset: 0x00051C64
			[Token(Token = "0x17000223")]
			public float stepHeightFromGround
			{
				[Token(Token = "0x60024D9")]
				[Address(RVA = "0x5FC8A0", Offset = "0x5FB6A0", VA = "0x1805FC8A0")]
				get
				{
					float maxStep = this.grounding.maxStep;
					return Mathf.Clamp(this.<heightFromGround>k__BackingField, maxStep, maxStep);
				}
			}

			// Token: 0x060024DA RID: 9434 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DA")]
			[Address(RVA = "0x5FA700", Offset = "0x5F9500", VA = "0x1805FA700")]
			private RaycastHit GetCapsuleHit(Vector3 offsetFromHeel)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024DB RID: 9435 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DB")]
			[Address(RVA = "0x5FADD0", Offset = "0x5F9BD0", VA = "0x1805FADD0")]
			private RaycastHit GetRaycastHit(Vector3 offsetFromHeel)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024DC RID: 9436 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DC")]
			[Address(RVA = "0x5FC270", Offset = "0x5FB070", VA = "0x1805FC270")]
			private Vector3 RotateNormal(Vector3 normal)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024DD RID: 9437 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DD")]
			[Address(RVA = "0x5FC5E0", Offset = "0x5FB3E0", VA = "0x1805FC5E0")]
			private void SetFootToPoint(Vector3 normal, Vector3 point)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024DE RID: 9438 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DE")]
			[Address(RVA = "0x5FC320", Offset = "0x5FB120", VA = "0x1805FC320")]
			private void SetFootToPlane(Vector3 planeNormal, Vector3 planePoint, Vector3 heelHitPoint)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024DF RID: 9439 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024DF")]
			[Address(RVA = "0x5FAC10", Offset = "0x5F9A10", VA = "0x1805FAC10")]
			private float GetHeightFromGround(Vector3 hitPoint)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024E0 RID: 9440 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024E0")]
			[Address(RVA = "0x5FC170", Offset = "0x5FAF70", VA = "0x1805FC170")]
			private void RotateFoot()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024E1 RID: 9441 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024E1")]
			[Address(RVA = "0x5FB0A0", Offset = "0x5F9EA0", VA = "0x1805FB0A0")]
			private Quaternion GetRotationOffsetTarget()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x17000224 RID: 548
			// (get) Token: 0x060024E2 RID: 9442 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000224")]
			private float rootYOffset
			{
				[Token(Token = "0x60024E2")]
				[Address(RVA = "0x5FC750", Offset = "0x5FB550", VA = "0x1805FC750")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}

			// Token: 0x060024E3 RID: 9443 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024E3")]
			[Address(RVA = "0x5FC6F0", Offset = "0x5FB4F0", VA = "0x1805FC6F0")]
			public Leg()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x04002E83 RID: 11907
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4002E83")]
			public Quaternion rotationOffset;

			// Token: 0x04002E89 RID: 11913
			[FieldOffset(Offset = "0x54")]
			[Token(Token = "0x4002E89")]
			public bool invertFootCenter;

			// Token: 0x04002E8A RID: 11914
			[FieldOffset(Offset = "0x58")]
			[Token(Token = "0x4002E8A")]
			private Grounding grounding;

			// Token: 0x04002E8B RID: 11915
			[FieldOffset(Offset = "0x60")]
			[Token(Token = "0x4002E8B")]
			private float lastTime;

			// Token: 0x04002E8C RID: 11916
			[FieldOffset(Offset = "0x64")]
			[Token(Token = "0x4002E8C")]
			private float deltaTime;

			// Token: 0x04002E8D RID: 11917
			[FieldOffset(Offset = "0x68")]
			[Token(Token = "0x4002E8D")]
			private Vector3 lastPosition;

			// Token: 0x04002E8E RID: 11918
			[FieldOffset(Offset = "0x74")]
			[Token(Token = "0x4002E8E")]
			private Quaternion toHitNormal;

			// Token: 0x04002E8F RID: 11919
			[FieldOffset(Offset = "0x84")]
			[Token(Token = "0x4002E8F")]
			private Quaternion r;

			// Token: 0x04002E90 RID: 11920
			[FieldOffset(Offset = "0x94")]
			[Token(Token = "0x4002E90")]
			private RaycastHit heelHit;

			// Token: 0x04002E91 RID: 11921
			[FieldOffset(Offset = "0xC0")]
			[Token(Token = "0x4002E91")]
			private Vector3 up;
		}

		// Token: 0x02000405 RID: 1029
		[Token(Token = "0x2000405")]
		public class Pelvis
		{
			// Token: 0x17000225 RID: 549
			// (get) Token: 0x060024E4 RID: 9444 RVA: 0x000020D3 File Offset: 0x000002D3
			// (set) Token: 0x060024E5 RID: 9445 RVA: 0x00053A90 File Offset: 0x00051C90
			[Token(Token = "0x17000225")]
			public Vector3 IKOffset
			{
				[Token(Token = "0x60024E4")]
				[Address(RVA = "0x42E030", Offset = "0x42CE30", VA = "0x18042E030")]
				[CompilerGenerated]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
				[Token(Token = "0x60024E5")]
				[Address(RVA = "0x5FD260", Offset = "0x5FC060", VA = "0x1805FD260")]
				[CompilerGenerated]
				private set
				{
					float z = value.z;
					this.<IKOffset>k__BackingField.z = z;
				}
			}

			// Token: 0x17000226 RID: 550
			// (get) Token: 0x060024E6 RID: 9446 RVA: 0x00053AB0 File Offset: 0x00051CB0
			// (set) Token: 0x060024E7 RID: 9447 RVA: 0x00053AC4 File Offset: 0x00051CC4
			[Token(Token = "0x17000226")]
			public float heightOffset
			{
				[Token(Token = "0x60024E6")]
				[Address(RVA = "0x5B5B10", Offset = "0x5B4910", VA = "0x1805B5B10")]
				get;
				[Token(Token = "0x60024E7")]
				[Address(RVA = "0x5FD270", Offset = "0x5FC070", VA = "0x1805FD270")]
				private set;
			}

			// Token: 0x060024E8 RID: 9448 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024E8")]
			[Address(RVA = "0x5FCE60", Offset = "0x5FBC60", VA = "0x1805FCE60")]
			public void Initiate(Grounding grounding)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024E9 RID: 9449 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024E9")]
			[Address(RVA = "0x5FD1E0", Offset = "0x5FBFE0", VA = "0x1805FD1E0")]
			public void Reset()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024EA RID: 9450 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024EA")]
			[Address(RVA = "0x5FCEE0", Offset = "0x5FBCE0", VA = "0x1805FCEE0")]
			public void OnEnable()
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024EB RID: 9451 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60024EB")]
			[Address(RVA = "0x5FCF50", Offset = "0x5FBD50", VA = "0x1805FCF50")]
			public void Process(float lowestOffset, float highestOffset, bool isGrounded)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060024EC RID: 9452 RVA: 0x00053AD8 File Offset: 0x00051CD8
			[Token(Token = "0x60024EC")]
			[Address(RVA = "0x3D8B20", Offset = "0x3D7920", VA = "0x1803D8B20")]
			public Pelvis()
			{
			}

			// Token: 0x04002E94 RID: 11924
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4002E94")]
			private Grounding grounding;

			// Token: 0x04002E95 RID: 11925
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x4002E95")]
			private Vector3 lastRootPosition;

			// Token: 0x04002E96 RID: 11926
			[FieldOffset(Offset = "0x34")]
			[Token(Token = "0x4002E96")]
			private float damperF;

			// Token: 0x04002E97 RID: 11927
			[FieldOffset(Offset = "0x38")]
			[Token(Token = "0x4002E97")]
			private bool initiated;

			// Token: 0x04002E98 RID: 11928
			[FieldOffset(Offset = "0x3C")]
			[Token(Token = "0x4002E98")]
			private float lastTime;
		}
	}
}
