using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x0200040B RID: 1035
	[Token(Token = "0x200040B")]
	public abstract class IK : SolverManager
	{
		// Token: 0x06002513 RID: 9491
		[Token(Token = "0x6002513")]
		[Address(Slot = "7")]
		public abstract IKSolver GetIKSolver();

		// Token: 0x06002514 RID: 9492 RVA: 0x00053DCC File Offset: 0x00051FCC
		[Token(Token = "0x6002514")]
		[Address(RVA = "0x1186D00", Offset = "0x1185B00", VA = "0x181186D00", Slot = "5")]
		protected override void UpdateSolver()
		{
			if (!this.GetIKSolver().<initiated>k__BackingField)
			{
				this.InitiateSolver();
			}
			if (this.GetIKSolver().<initiated>k__BackingField)
			{
				IKSolver iksolver = this.GetIKSolver();
				IKSolver.UpdateDelegate onPreUpdate = iksolver.OnPreUpdate;
				if (onPreUpdate != 0)
				{
					onPreUpdate();
				}
				if (iksolver.firstInitiation)
				{
					Transform root = iksolver.root;
					iksolver.Initiate(root);
				}
				if (iksolver.<initiated>k__BackingField)
				{
					iksolver.OnUpdate();
					IKSolver.UpdateDelegate onPostUpdate = iksolver.OnPostUpdate;
					if (onPostUpdate != 0)
					{
						onPostUpdate();
						return;
					}
				}
			}
		}

		// Token: 0x06002515 RID: 9493 RVA: 0x00053E54 File Offset: 0x00052054
		[Token(Token = "0x6002515")]
		[Address(RVA = "0x1186C90", Offset = "0x1185A90", VA = "0x181186C90", Slot = "4")]
		protected override void InitiateSolver()
		{
			if (!this.GetIKSolver().<initiated>k__BackingField)
			{
				IKSolver iksolver = this.GetIKSolver();
				Transform transform = base.transform;
				iksolver.Initiate(transform);
			}
		}

		// Token: 0x06002516 RID: 9494 RVA: 0x00053E8C File Offset: 0x0005208C
		[Token(Token = "0x6002516")]
		[Address(RVA = "0x1186C20", Offset = "0x1185A20", VA = "0x181186C20", Slot = "6")]
		protected override void FixTransforms()
		{
			if (this.GetIKSolver().<initiated>k__BackingField)
			{
				IKSolver.Point[] points = this.GetIKSolver().GetPoints();
				return;
			}
		}

		// Token: 0x06002517 RID: 9495
		[Token(Token = "0x6002517")]
		[Address(Slot = "8")]
		protected abstract void OpenUserManual();

		// Token: 0x06002518 RID: 9496
		[Token(Token = "0x6002518")]
		[Address(Slot = "9")]
		protected abstract void OpenScriptReference();

		// Token: 0x06002519 RID: 9497 RVA: 0x00053EBC File Offset: 0x000520BC
		[Token(Token = "0x6002519")]
		[Address(RVA = "0x1186DE0", Offset = "0x1185BE0", VA = "0x181186DE0")]
		protected IK()
		{
		}
	}
}
