using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x0200041B RID: 1051
	[Token(Token = "0x200041B")]
	[Serializable]
	public class IKEffector
	{
		// Token: 0x0600258A RID: 9610 RVA: 0x00054BAC File Offset: 0x00052DAC
		[Token(Token = "0x600258A")]
		[Address(RVA = "0x1180940", Offset = "0x117F740", VA = "0x181180940")]
		public IKSolver.Node GetNode(IKSolverFullBody solver)
		{
			FBIKChain[] chain = solver.chain;
			int num = this.chainIndex;
			IKSolver.Node[] nodes = chain[num].nodes;
			int num2 = this.nodeIndex;
			return nodes[num2];
		}

		// Token: 0x1700022D RID: 557
		// (get) Token: 0x0600258B RID: 9611 RVA: 0x00054BE8 File Offset: 0x00052DE8
		// (set) Token: 0x0600258C RID: 9612 RVA: 0x00054BFC File Offset: 0x00052DFC
		[Token(Token = "0x1700022D")]
		public bool isEndEffector
		{
			[Token(Token = "0x600258B")]
			[Address(RVA = "0x4F8000", Offset = "0x4F6E00", VA = "0x1804F8000")]
			get;
			[Token(Token = "0x600258C")]
			[Address(RVA = "0x6FCDB0", Offset = "0x6FBBB0", VA = "0x1806FCDB0")]
			private set;
		}

		// Token: 0x0600258D RID: 9613 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600258D")]
		[Address(RVA = "0x1182030", Offset = "0x1180E30", VA = "0x181182030")]
		public void PinToBone(float positionWeight, float rotationWeight)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600258E RID: 9614 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600258E")]
		[Address(RVA = "0x11826D0", Offset = "0x11814D0", VA = "0x1811826D0")]
		public IKEffector()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600258F RID: 9615 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600258F")]
		[Address(RVA = "0x1182820", Offset = "0x1181620", VA = "0x181182820")]
		public IKEffector(Transform bone, Transform[] childBones)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002590 RID: 9616 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002590")]
		[Address(RVA = "0x1181520", Offset = "0x1180320", VA = "0x181181520")]
		public bool IsValid(IKSolver solver, ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002591 RID: 9617 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002591")]
		[Address(RVA = "0x11811B0", Offset = "0x117FFB0", VA = "0x1811811B0")]
		public void Initiate(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002592 RID: 9618 RVA: 0x00054C10 File Offset: 0x00052E10
		[Token(Token = "0x6002592")]
		[Address(RVA = "0x11820E0", Offset = "0x1180EE0", VA = "0x1811820E0")]
		public void ResetOffset(IKSolverFullBody solver)
		{
			int num = this.nodeIndex;
			int num2 = this.chainIndex;
			IKSolver.Node node = solver.GetNode(num2, num);
			float z = Vector3.zero.z;
			node.offset.z = z;
			int num3 = 0;
			int[] array = this.childChainIndexes;
			if (num3 < array.Length)
			{
				int num4 = this.childNodeIndexes[num3];
				int num5 = array[num3];
				IKSolver.Node node2 = solver.GetNode(num5, num4);
				Vector3 zero = Vector3.zero;
				num3++;
				float z2 = zero.z;
				node2.offset.z = z2;
				int[] array2 = this.childChainIndexes;
			}
		}

		// Token: 0x06002593 RID: 9619 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002593")]
		[Address(RVA = "0x1182210", Offset = "0x1181010", VA = "0x181182210")]
		public void SetToTarget()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002594 RID: 9620 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002594")]
		[Address(RVA = "0x11818B0", Offset = "0x11806B0", VA = "0x1811818B0")]
		public void OnPreSolve(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002595 RID: 9621 RVA: 0x00054CBC File Offset: 0x00052EBC
		[Token(Token = "0x6002595")]
		[Address(RVA = "0x1181880", Offset = "0x1180680", VA = "0x181181880")]
		public void OnPostWrite()
		{
			float z = Vector3.zero.z;
			this.positionOffset.z = z;
		}

		// Token: 0x06002596 RID: 9622 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002596")]
		[Address(RVA = "0x11809B0", Offset = "0x117F7B0", VA = "0x1811809B0")]
		private Quaternion GetPlaneRotation(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002597 RID: 9623 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002597")]
		[Address(RVA = "0x11822C0", Offset = "0x11810C0", VA = "0x1811822C0")]
		public void Update(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002598 RID: 9624 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002598")]
		[Address(RVA = "0x1180C10", Offset = "0x117FA10", VA = "0x181180C10")]
		private Vector3 GetPosition(IKSolverFullBody solver, out Quaternion planeRotationOffset)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04002F31 RID: 12081
		[FieldOffset(Offset = "0x10")]
		[Token(Token = "0x4002F31")]
		public Transform bone;

		// Token: 0x04002F32 RID: 12082
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x4002F32")]
		public Transform target;

		// Token: 0x04002F33 RID: 12083
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x4002F33")]
		[Range(0f, 1f)]
		public float positionWeight;

		// Token: 0x04002F34 RID: 12084
		[FieldOffset(Offset = "0x24")]
		[Token(Token = "0x4002F34")]
		[Range(0f, 1f)]
		public float rotationWeight;

		// Token: 0x04002F35 RID: 12085
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x4002F35")]
		public Vector3 position;

		// Token: 0x04002F36 RID: 12086
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x4002F36")]
		public Quaternion rotation;

		// Token: 0x04002F37 RID: 12087
		[FieldOffset(Offset = "0x44")]
		[Token(Token = "0x4002F37")]
		public Vector3 positionOffset;

		// Token: 0x04002F39 RID: 12089
		[FieldOffset(Offset = "0x51")]
		[Token(Token = "0x4002F39")]
		public bool effectChildNodes;

		// Token: 0x04002F3A RID: 12090
		[FieldOffset(Offset = "0x54")]
		[Token(Token = "0x4002F3A")]
		[Range(0f, 1f)]
		public float maintainRelativePositionWeight;

		// Token: 0x04002F3B RID: 12091
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4002F3B")]
		public Transform[] childBones;

		// Token: 0x04002F3C RID: 12092
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4002F3C")]
		public Transform planeBone1;

		// Token: 0x04002F3D RID: 12093
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4002F3D")]
		public Transform planeBone2;

		// Token: 0x04002F3E RID: 12094
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4002F3E")]
		public Transform planeBone3;

		// Token: 0x04002F3F RID: 12095
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4002F3F")]
		public Quaternion planeRotationOffset;

		// Token: 0x04002F40 RID: 12096
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x4002F40")]
		private float posW;

		// Token: 0x04002F41 RID: 12097
		[FieldOffset(Offset = "0x8C")]
		[Token(Token = "0x4002F41")]
		private float rotW;

		// Token: 0x04002F42 RID: 12098
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x4002F42")]
		private Vector3[] localPositions;

		// Token: 0x04002F43 RID: 12099
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x4002F43")]
		private bool usePlaneNodes;

		// Token: 0x04002F44 RID: 12100
		[FieldOffset(Offset = "0x9C")]
		[Token(Token = "0x4002F44")]
		private Quaternion animatedPlaneRotation;

		// Token: 0x04002F45 RID: 12101
		[FieldOffset(Offset = "0xAC")]
		[Token(Token = "0x4002F45")]
		private Vector3 animatedPosition;

		// Token: 0x04002F46 RID: 12102
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4002F46")]
		private bool firstUpdate;

		// Token: 0x04002F47 RID: 12103
		[FieldOffset(Offset = "0xBC")]
		[Token(Token = "0x4002F47")]
		private int chainIndex;

		// Token: 0x04002F48 RID: 12104
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4002F48")]
		private int nodeIndex;

		// Token: 0x04002F49 RID: 12105
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x4002F49")]
		private int plane1ChainIndex;

		// Token: 0x04002F4A RID: 12106
		[FieldOffset(Offset = "0xC8")]
		[Token(Token = "0x4002F4A")]
		private int plane1NodeIndex;

		// Token: 0x04002F4B RID: 12107
		[FieldOffset(Offset = "0xCC")]
		[Token(Token = "0x4002F4B")]
		private int plane2ChainIndex;

		// Token: 0x04002F4C RID: 12108
		[FieldOffset(Offset = "0xD0")]
		[Token(Token = "0x4002F4C")]
		private int plane2NodeIndex;

		// Token: 0x04002F4D RID: 12109
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x4002F4D")]
		private int plane3ChainIndex;

		// Token: 0x04002F4E RID: 12110
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4002F4E")]
		private int plane3NodeIndex;

		// Token: 0x04002F4F RID: 12111
		[FieldOffset(Offset = "0xE0")]
		[Token(Token = "0x4002F4F")]
		private int[] childChainIndexes;

		// Token: 0x04002F50 RID: 12112
		[FieldOffset(Offset = "0xE8")]
		[Token(Token = "0x4002F50")]
		private int[] childNodeIndexes;
	}
}
