using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000488 RID: 1160
	[Token(Token = "0x2000488")]
	[Serializable]
	public class IKSolverHeuristic : IKSolver
	{
		// Token: 0x06002945 RID: 10565 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002945")]
		[Address(RVA = "0x151B700", Offset = "0x151A700", VA = "0x18151B700")]
		public bool SetChain(Transform[] hierarchy, Transform root)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002946 RID: 10566 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002946")]
		[Address(RVA = "0x151A3F0", Offset = "0x15193F0", VA = "0x18151A3F0")]
		public void AddBone(Transform bone)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002947 RID: 10567 RVA: 0x0005D45C File Offset: 0x0005B65C
		[Token(Token = "0x6002947")]
		[Address(RVA = "0x151BBC0", Offset = "0x151ABC0", VA = "0x18151BBC0", Slot = "9")]
		public override void StoreDefaultLocalState()
		{
			IKSolver.Bone[] array = this.bones;
			int num = 0;
			if (num < array.Length)
			{
				array[num].StoreDefaultLocalState();
				IKSolver.Bone[] array2 = this.bones;
				num++;
			}
		}

		// Token: 0x06002948 RID: 10568 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002948")]
		[Address(RVA = "0x151A5C0", Offset = "0x15195C0", VA = "0x18151A5C0", Slot = "8")]
		public override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002949 RID: 10569 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002949")]
		[Address(RVA = "0x151B2B0", Offset = "0x151A2B0", VA = "0x18151B2B0", Slot = "4")]
		public override bool IsValid(ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600294A RID: 10570 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600294A")]
		[Address(RVA = "0x452350", Offset = "0x451350", VA = "0x180452350", Slot = "6")]
		public override IKSolver.Point[] GetPoints()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600294B RID: 10571 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600294B")]
		[Address(RVA = "0x151A640", Offset = "0x1519640", VA = "0x18151A640", Slot = "7")]
		public override IKSolver.Point GetPoint(Transform transform)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000270 RID: 624
		// (get) Token: 0x0600294C RID: 10572 RVA: 0x0005D498 File Offset: 0x0005B698
		[Token(Token = "0x17000270")]
		protected virtual int minBones
		{
			[Token(Token = "0x600294C")]
			[Address(RVA = "0x547500", Offset = "0x546500", VA = "0x180547500", Slot = "12")]
			get
			{
				return 2;
			}
		}

		// Token: 0x17000271 RID: 625
		// (get) Token: 0x0600294D RID: 10573 RVA: 0x0005D4A8 File Offset: 0x0005B6A8
		[Token(Token = "0x17000271")]
		protected virtual bool boneLengthCanBeZero
		{
			[Token(Token = "0x600294D")]
			[Address(RVA = "0x4990D0", Offset = "0x4980D0", VA = "0x1804990D0", Slot = "13")]
			get
			{
				return true;
			}
		}

		// Token: 0x17000272 RID: 626
		// (get) Token: 0x0600294E RID: 10574 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000272")]
		protected virtual bool allowCommonParent
		{
			[Token(Token = "0x600294E")]
			[Address(RVA = "0x29A960", Offset = "0x299960", VA = "0x18029A960", Slot = "14")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x0600294F RID: 10575 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600294F")]
		[Address(RVA = "0x29E8B0", Offset = "0x29D8B0", VA = "0x18029E8B0", Slot = "10")]
		protected override void OnInitiate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002950 RID: 10576 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002950")]
		[Address(RVA = "0x29E8B0", Offset = "0x29D8B0", VA = "0x18029E8B0", Slot = "11")]
		protected override void OnUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002951 RID: 10577 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002951")]
		[Address(RVA = "0x151ABC0", Offset = "0x1519BC0", VA = "0x18151ABC0")]
		protected void InitiateBones()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000273 RID: 627
		// (get) Token: 0x06002952 RID: 10578 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000273")]
		protected virtual Vector3 localDirection
		{
			[Token(Token = "0x6002952")]
			[Address(RVA = "0x151BCA0", Offset = "0x151ACA0", VA = "0x18151BCA0", Slot = "15")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000274 RID: 628
		// (get) Token: 0x06002953 RID: 10579 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000274")]
		protected float positionOffset
		{
			[Token(Token = "0x6002953")]
			[Address(RVA = "0x151BE40", Offset = "0x151AE40", VA = "0x18151BE40")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x06002954 RID: 10580 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002954")]
		[Address(RVA = "0x151A760", Offset = "0x1519760", VA = "0x18151A760")]
		protected Vector3 GetSingularityOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002955 RID: 10581 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002955")]
		[Address(RVA = "0x151B8E0", Offset = "0x151A8E0", VA = "0x18151B8E0")]
		private bool SingularityDetected()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002956 RID: 10582 RVA: 0x0005D4B8 File Offset: 0x0005B6B8
		[Token(Token = "0x6002956")]
		[Address(RVA = "0x151BC40", Offset = "0x151AC40", VA = "0x18151BC40")]
		public IKSolverHeuristic()
		{
			int num = 0;
			this.useRotationLimits = true;
			IKSolver.Bone[] array = new IKSolver.Bone[num];
			this.bones = array;
			base..ctor();
		}

		// Token: 0x040032C4 RID: 12996
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x40032C4")]
		public Transform target;

		// Token: 0x040032C5 RID: 12997
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x40032C5")]
		public float tolerance;

		// Token: 0x040032C6 RID: 12998
		[FieldOffset(Offset = "0x64")]
		[Token(Token = "0x40032C6")]
		public int maxIterations = (int)((ulong)4L);

		// Token: 0x040032C7 RID: 12999
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x40032C7")]
		public bool useRotationLimits;

		// Token: 0x040032C8 RID: 13000
		[FieldOffset(Offset = "0x69")]
		[Token(Token = "0x40032C8")]
		public bool XY;

		// Token: 0x040032C9 RID: 13001
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x40032C9")]
		public IKSolver.Bone[] bones;

		// Token: 0x040032CA RID: 13002
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x40032CA")]
		protected Vector3 lastLocalDirection;

		// Token: 0x040032CB RID: 13003
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x40032CB")]
		protected float chainLength;
	}
}
