using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000463 RID: 1123
	[Token(Token = "0x2000463")]
	public abstract class IK : SolverManager
	{
		// Token: 0x060027DC RID: 10204
		[Token(Token = "0x60027DC")]
		[Address(Slot = "7")]
		public abstract IKSolver GetIKSolver();

		// Token: 0x060027DD RID: 10205 RVA: 0x0005B128 File Offset: 0x00059328
		[Token(Token = "0x60027DD")]
		[Address(RVA = "0x1713030", Offset = "0x1712030", VA = "0x181713030", 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: 0x060027DE RID: 10206 RVA: 0x0005B1B0 File Offset: 0x000593B0
		[Token(Token = "0x60027DE")]
		[Address(RVA = "0x1712FC0", Offset = "0x1711FC0", VA = "0x181712FC0", Slot = "4")]
		protected override void InitiateSolver()
		{
			if (!this.GetIKSolver().<initiated>k__BackingField)
			{
				IKSolver iksolver = this.GetIKSolver();
				Transform transform = base.transform;
				iksolver.Initiate(transform);
			}
		}

		// Token: 0x060027DF RID: 10207 RVA: 0x0005B1E8 File Offset: 0x000593E8
		[Token(Token = "0x60027DF")]
		[Address(RVA = "0x1712F50", Offset = "0x1711F50", VA = "0x181712F50", Slot = "6")]
		protected override void FixTransforms()
		{
			if (this.GetIKSolver().<initiated>k__BackingField)
			{
				IKSolver.Point[] points = this.GetIKSolver().GetPoints();
				return;
			}
		}

		// Token: 0x060027E0 RID: 10208
		[Token(Token = "0x60027E0")]
		[Address(Slot = "8")]
		protected abstract void OpenUserManual();

		// Token: 0x060027E1 RID: 10209
		[Token(Token = "0x60027E1")]
		[Address(Slot = "9")]
		protected abstract void OpenScriptReference();

		// Token: 0x060027E2 RID: 10210 RVA: 0x0005B218 File Offset: 0x00059418
		[Token(Token = "0x60027E2")]
		[Address(RVA = "0x1713110", Offset = "0x1712110", VA = "0x181713110")]
		protected IK()
		{
		}
	}
}
