using System;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x020003F9 RID: 1017
	[Token(Token = "0x20003F9")]
	public class FingerRig : SolverManager
	{
		// Token: 0x17000213 RID: 531
		// (get) Token: 0x0600245C RID: 9308 RVA: 0x00052F74 File Offset: 0x00051174
		// (set) Token: 0x0600245D RID: 9309 RVA: 0x00052F88 File Offset: 0x00051188
		[Token(Token = "0x17000213")]
		public bool initiated
		{
			[Token(Token = "0x600245C")]
			[Address(RVA = "0x4BFCE0", Offset = "0x4BEAE0", VA = "0x1804BFCE0")]
			get;
			[Token(Token = "0x600245D")]
			[Address(RVA = "0x4BFCF0", Offset = "0x4BEAF0", VA = "0x1804BFCF0")]
			private set;
		}

		// Token: 0x0600245E RID: 9310 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600245E")]
		[Address(RVA = "0x4BF9B0", Offset = "0x4BE7B0", VA = "0x1804BF9B0")]
		public bool IsValid(ref string errorMessage)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600245F RID: 9311 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600245F")]
		[Address(RVA = "0x4BF420", Offset = "0x4BE220", VA = "0x1804BF420")]
		[ContextMenu("Auto-detect")]
		public void AutoDetect()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002460 RID: 9312 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002460")]
		[Address(RVA = "0x4BF250", Offset = "0x4BE050", VA = "0x1804BF250")]
		public void AddFinger(Transform bone1, Transform bone2, Transform bone3, Transform tip, [Optional] Transform target)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002461 RID: 9313 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002461")]
		[Address(RVA = "0x4BFA40", Offset = "0x4BE840", VA = "0x1804BFA40")]
		public void RemoveFinger(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002462 RID: 9314 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002462")]
		[Address(RVA = "0x4BF150", Offset = "0x4BDF50", VA = "0x1804BF150")]
		private void AddChildrenRecursive(Transform parent, ref Transform[] array)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002463 RID: 9315 RVA: 0x00052F9C File Offset: 0x0005119C
		[Token(Token = "0x6002463")]
		[Address(RVA = "0x4BF8E0", Offset = "0x4BE6E0", VA = "0x1804BF8E0", Slot = "4")]
		protected override void InitiateSolver()
		{
			Finger[] array = this.fingers;
			int num = 0;
			this.<initiated>k__BackingField = true;
			if (num < array.Length)
			{
				Finger finger = array[num];
				Transform transform = base.transform;
				finger.Initiate(transform, num);
				if (!this.fingers[num].<initiated>k__BackingField)
				{
					this.<initiated>k__BackingField = false;
				}
				num++;
			}
		}

		// Token: 0x06002464 RID: 9316 RVA: 0x00053000 File Offset: 0x00051200
		[Token(Token = "0x6002464")]
		[Address(RVA = "0x4BFBF0", Offset = "0x4BE9F0", VA = "0x1804BFBF0")]
		public void UpdateFingerSolvers()
		{
			if (0 < (int)this.weight)
			{
				Finger[] array = this.fingers;
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					Finger finger = array[num];
					float num2 = this.weight;
					finger.Update(num2);
					num++;
				}
			}
		}

		// Token: 0x06002465 RID: 9317 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002465")]
		[Address(RVA = "0x4BF7A0", Offset = "0x4BE5A0", VA = "0x1804BF7A0")]
		public void FixFingerTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002466 RID: 9318 RVA: 0x0005304C File Offset: 0x0005124C
		[Token(Token = "0x6002466")]
		[Address(RVA = "0x4BFBF0", Offset = "0x4BE9F0", VA = "0x1804BFBF0", Slot = "5")]
		protected override void UpdateSolver()
		{
			if (0 < (int)this.weight)
			{
				Finger[] array = this.fingers;
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					Finger finger = array[num];
					float num2 = this.weight;
					finger.Update(num2);
					num++;
				}
			}
		}

		// Token: 0x06002467 RID: 9319 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002467")]
		[Address(RVA = "0x4BF7A0", Offset = "0x4BE5A0", VA = "0x1804BF7A0", Slot = "6")]
		protected override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002468 RID: 9320 RVA: 0x00053098 File Offset: 0x00051298
		[Token(Token = "0x6002468")]
		[Address(RVA = "0x4BFC80", Offset = "0x4BEA80", VA = "0x1804BFC80")]
		public FingerRig()
		{
			Finger[] array = new Finger[0];
			this.fingers = array;
			base..ctor();
		}

		// Token: 0x04002E1E RID: 11806
		[Cpp2IlInjected.FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4002E1E")]
		[Range(0f, 1f)]
		[Tooltip("The master weight for all fingers.")]
		public float weight = 1f;

		// Token: 0x04002E1F RID: 11807
		[Cpp2IlInjected.FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4002E1F")]
		public Finger[] fingers;
	}
}
