using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x020003FF RID: 1023
	[Token(Token = "0x20003FF")]
	[HelpURL("http://www.root-motion.com/finalikdox/html/page11.html")]
	[AddComponentMenu("Scripts/RootMotion.FinalIK/Grounder/Grounder IK")]
	public class GrounderIK : Grounder
	{
		// Token: 0x06002490 RID: 9360 RVA: 0x00053510 File Offset: 0x00051710
		[Token(Token = "0x6002490")]
		[Address(RVA = "0x1176F40", Offset = "0x1175D40", VA = "0x181176F40", Slot = "5")]
		[ContextMenu("User Manual")]
		protected override void OpenUserManual()
		{
			Application.OpenURL("http://www.root-motion.com/finalikdox/html/page11.html");
		}

		// Token: 0x06002491 RID: 9361 RVA: 0x00053528 File Offset: 0x00051728
		[Token(Token = "0x6002491")]
		[Address(RVA = "0x1176F00", Offset = "0x1175D00", VA = "0x181176F00", Slot = "6")]
		[ContextMenu("Scrpt Reference")]
		protected override void OpenScriptReference()
		{
			Application.OpenURL("http://www.root-motion.com/finalikdox/html/class_root_motion_1_1_final_i_k_1_1_grounder_i_k.html");
		}

		// Token: 0x06002492 RID: 9362 RVA: 0x00053540 File Offset: 0x00051740
		[Token(Token = "0x6002492")]
		[Address(RVA = "0x1176F80", Offset = "0x1175D80", VA = "0x181176F80", Slot = "4")]
		public override void ResetPosition()
		{
			this.solver.Reset();
		}

		// Token: 0x06002493 RID: 9363 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002493")]
		[Address(RVA = "0x11763E0", Offset = "0x11751E0", VA = "0x1811763E0")]
		private bool IsReadyToInitiate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002494 RID: 9364 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002494")]
		[Address(RVA = "0x1176820", Offset = "0x1175620", VA = "0x181176820")]
		private void OnDisable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002495 RID: 9365 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002495")]
		[Address(RVA = "0x11773A0", Offset = "0x11761A0", VA = "0x1811773A0")]
		private void Update()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002496 RID: 9366 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002496")]
		[Address(RVA = "0x1175E80", Offset = "0x1174C80", VA = "0x181175E80")]
		private void Initiate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002497 RID: 9367 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002497")]
		[Address(RVA = "0x1176B80", Offset = "0x1175980", VA = "0x181176B80")]
		private void OnSolverUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002498 RID: 9368 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002498")]
		[Address(RVA = "0x1176FA0", Offset = "0x1175DA0", VA = "0x181176FA0")]
		private void SetLegIK(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002499 RID: 9369 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002499")]
		[Address(RVA = "0x1176960", Offset = "0x1175760", VA = "0x181176960")]
		private void OnPostSolverUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600249A RID: 9370 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600249A")]
		[Address(RVA = "0x11765F0", Offset = "0x11753F0", VA = "0x1811765F0")]
		private void OnDestroy()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600249B RID: 9371 RVA: 0x00053560 File Offset: 0x00051760
		[Token(Token = "0x600249B")]
		[Address(RVA = "0x1177740", Offset = "0x1176540", VA = "0x181177740")]
		public GrounderIK()
		{
			int num = 0;
			this.maxRootRotationAngle = 45f;
			Transform[] array = new Transform[num];
			this.feet = array;
			Quaternion[] array2 = new Quaternion[0];
			this.footRotations = array2;
			base..ctor();
		}

		// Token: 0x04002E39 RID: 11833
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4002E39")]
		public IK[] legs;

		// Token: 0x04002E3A RID: 11834
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4002E3A")]
		[Tooltip("The pelvis transform. Common ancestor of all the legs.")]
		public Transform pelvis;

		// Token: 0x04002E3B RID: 11835
		[FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4002E3B")]
		[Tooltip("The root Transform of the character, with the rigidbody and the collider.")]
		public Transform characterRoot;

		// Token: 0x04002E3C RID: 11836
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4002E3C")]
		[Range(0f, 1f)]
		[Tooltip("The weight of rotating the character root to the ground normal (range: 0 - 1).")]
		public float rootRotationWeight;

		// Token: 0x04002E3D RID: 11837
		[FieldOffset(Offset = "0x5C")]
		[Token(Token = "0x4002E3D")]
		[Tooltip("The speed of rotating the character root to the ground normal (range: 0 - inf).")]
		public float rootRotationSpeed = 5f;

		// Token: 0x04002E3E RID: 11838
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4002E3E")]
		[Tooltip("The maximum angle of root rotation (range: 0 - 90).")]
		public float maxRootRotationAngle;

		// Token: 0x04002E3F RID: 11839
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4002E3F")]
		private Transform[] feet;

		// Token: 0x04002E40 RID: 11840
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4002E40")]
		private Quaternion[] footRotations;

		// Token: 0x04002E41 RID: 11841
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4002E41")]
		private Vector3 animatedPelvisLocalPosition;

		// Token: 0x04002E42 RID: 11842
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x4002E42")]
		private Vector3 solvedPelvisLocalPosition;

		// Token: 0x04002E43 RID: 11843
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x4002E43")]
		private int solvedFeet;

		// Token: 0x04002E44 RID: 11844
		[FieldOffset(Offset = "0x94")]
		[Token(Token = "0x4002E44")]
		private bool solved;

		// Token: 0x04002E45 RID: 11845
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x4002E45")]
		private float lastWeight;
	}
}
