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

namespace RootMotion.FinalIK
{
	// Token: 0x02000451 RID: 1105
	[Token(Token = "0x2000451")]
	public class FingerRig : SolverManager
	{
		// Token: 0x17000238 RID: 568
		// (get) Token: 0x06002725 RID: 10021 RVA: 0x0005A2A0 File Offset: 0x000584A0
		// (set) Token: 0x06002726 RID: 10022 RVA: 0x0005A2B4 File Offset: 0x000584B4
		[Token(Token = "0x17000238")]
		public bool initiated
		{
			[Token(Token = "0x6002725")]
			[Address(RVA = "0x641740", Offset = "0x640740", VA = "0x180641740")]
			get;
			[Token(Token = "0x6002726")]
			[Address(RVA = "0x641C20", Offset = "0x640C20", VA = "0x180641C20")]
			private set;
		}

		// Token: 0x06002727 RID: 10023 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002727")]
		[Address(RVA = "0xD1BC80", Offset = "0xD1AC80", VA = "0x180D1BC80")]
		public bool IsValid(ref string errorMessage)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002728 RID: 10024 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002728")]
		[Address(RVA = "0xD1B6F0", Offset = "0xD1A6F0", VA = "0x180D1B6F0")]
		[ContextMenu("Auto-detect")]
		public void AutoDetect()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002729 RID: 10025 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002729")]
		[Address(RVA = "0xD1B520", Offset = "0xD1A520", VA = "0x180D1B520")]
		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: 0x0600272A RID: 10026 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600272A")]
		[Address(RVA = "0xD1BD10", Offset = "0xD1AD10", VA = "0x180D1BD10")]
		public void RemoveFinger(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600272B RID: 10027 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600272B")]
		[Address(RVA = "0xD1B420", Offset = "0xD1A420", VA = "0x180D1B420")]
		private void AddChildrenRecursive(Transform parent, ref Transform[] array)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600272C RID: 10028 RVA: 0x0005A2C8 File Offset: 0x000584C8
		[Token(Token = "0x600272C")]
		[Address(RVA = "0xD1BBB0", Offset = "0xD1ABB0", VA = "0x180D1BBB0", 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: 0x0600272D RID: 10029 RVA: 0x0005A32C File Offset: 0x0005852C
		[Token(Token = "0x600272D")]
		[Address(RVA = "0xD1BEC0", Offset = "0xD1AEC0", VA = "0x180D1BEC0")]
		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: 0x0600272E RID: 10030 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600272E")]
		[Address(RVA = "0xD1BA70", Offset = "0xD1AA70", VA = "0x180D1BA70")]
		public void FixFingerTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600272F RID: 10031 RVA: 0x0005A378 File Offset: 0x00058578
		[Token(Token = "0x600272F")]
		[Address(RVA = "0xD1BEC0", Offset = "0xD1AEC0", VA = "0x180D1BEC0", 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: 0x06002730 RID: 10032 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002730")]
		[Address(RVA = "0xD1BA70", Offset = "0xD1AA70", VA = "0x180D1BA70", Slot = "6")]
		protected override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002731 RID: 10033 RVA: 0x0005A3C4 File Offset: 0x000585C4
		[Token(Token = "0x6002731")]
		[Address(RVA = "0xD1BF50", Offset = "0xD1AF50", VA = "0x180D1BF50")]
		public FingerRig()
		{
			Finger[] array = new Finger[0];
			this.fingers = array;
			base..ctor();
		}

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

		// Token: 0x04003109 RID: 12553
		[Cpp2IlInjected.FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003109")]
		public Finger[] fingers;
	}
}
