using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000473 RID: 1139
	[Token(Token = "0x2000473")]
	[Serializable]
	public class IKEffector
	{
		// Token: 0x06002853 RID: 10323 RVA: 0x0005BF08 File Offset: 0x0005A108
		[Token(Token = "0x6002853")]
		[Address(RVA = "0x1707010", Offset = "0x1706010", VA = "0x181707010")]
		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: 0x17000252 RID: 594
		// (get) Token: 0x06002854 RID: 10324 RVA: 0x0005BF44 File Offset: 0x0005A144
		// (set) Token: 0x06002855 RID: 10325 RVA: 0x0005BF58 File Offset: 0x0005A158
		[Token(Token = "0x17000252")]
		public bool isEndEffector
		{
			[Token(Token = "0x6002854")]
			[Address(RVA = "0x4E8C10", Offset = "0x4E7C10", VA = "0x1804E8C10")]
			get;
			[Token(Token = "0x6002855")]
			[Address(RVA = "0x770AF0", Offset = "0x76FAF0", VA = "0x180770AF0")]
			private set;
		}

		// Token: 0x06002856 RID: 10326 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002856")]
		[Address(RVA = "0x1708700", Offset = "0x1707700", VA = "0x181708700")]
		public void PinToBone(float positionWeight, float rotationWeight)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002857 RID: 10327 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002857")]
		[Address(RVA = "0x1708DA0", Offset = "0x1707DA0", VA = "0x181708DA0")]
		public IKEffector()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002858 RID: 10328 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002858")]
		[Address(RVA = "0x1708EF0", Offset = "0x1707EF0", VA = "0x181708EF0")]
		public IKEffector(Transform bone, Transform[] childBones)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002859 RID: 10329 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002859")]
		[Address(RVA = "0x1707BF0", Offset = "0x1706BF0", VA = "0x181707BF0")]
		public bool IsValid(IKSolver solver, ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600285A RID: 10330 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600285A")]
		[Address(RVA = "0x1707880", Offset = "0x1706880", VA = "0x181707880")]
		public void Initiate(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600285B RID: 10331 RVA: 0x0005BF6C File Offset: 0x0005A16C
		[Token(Token = "0x600285B")]
		[Address(RVA = "0x17087B0", Offset = "0x17077B0", VA = "0x1817087B0")]
		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: 0x0600285C RID: 10332 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600285C")]
		[Address(RVA = "0x17088E0", Offset = "0x17078E0", VA = "0x1817088E0")]
		public void SetToTarget()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600285D RID: 10333 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600285D")]
		[Address(RVA = "0x1707F80", Offset = "0x1706F80", VA = "0x181707F80")]
		public void OnPreSolve(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600285E RID: 10334 RVA: 0x0005C018 File Offset: 0x0005A218
		[Token(Token = "0x600285E")]
		[Address(RVA = "0x1707F50", Offset = "0x1706F50", VA = "0x181707F50")]
		public void OnPostWrite()
		{
			float z = Vector3.zero.z;
			this.positionOffset.z = z;
		}

		// Token: 0x0600285F RID: 10335 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600285F")]
		[Address(RVA = "0x1707080", Offset = "0x1706080", VA = "0x181707080")]
		private Quaternion GetPlaneRotation(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002860 RID: 10336 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002860")]
		[Address(RVA = "0x1708990", Offset = "0x1707990", VA = "0x181708990")]
		public void Update(IKSolverFullBody solver)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002861 RID: 10337 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002861")]
		[Address(RVA = "0x17072E0", Offset = "0x17062E0", VA = "0x1817072E0")]
		private Vector3 GetPosition(IKSolverFullBody solver, out Quaternion planeRotationOffset)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0400321B RID: 12827
		[FieldOffset(Offset = "0x10")]
		[Token(Token = "0x400321B")]
		public Transform bone;

		// Token: 0x0400321C RID: 12828
		[FieldOffset(Offset = "0x18")]
		[Token(Token = "0x400321C")]
		public Transform target;

		// Token: 0x0400321D RID: 12829
		[FieldOffset(Offset = "0x20")]
		[Token(Token = "0x400321D")]
		[Range(0f, 1f)]
		public float positionWeight;

		// Token: 0x0400321E RID: 12830
		[FieldOffset(Offset = "0x24")]
		[Token(Token = "0x400321E")]
		[Range(0f, 1f)]
		public float rotationWeight;

		// Token: 0x0400321F RID: 12831
		[FieldOffset(Offset = "0x28")]
		[Token(Token = "0x400321F")]
		public Vector3 position;

		// Token: 0x04003220 RID: 12832
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x4003220")]
		public Quaternion rotation;

		// Token: 0x04003221 RID: 12833
		[FieldOffset(Offset = "0x44")]
		[Token(Token = "0x4003221")]
		public Vector3 positionOffset;

		// Token: 0x04003223 RID: 12835
		[FieldOffset(Offset = "0x51")]
		[Token(Token = "0x4003223")]
		public bool effectChildNodes;

		// Token: 0x04003224 RID: 12836
		[FieldOffset(Offset = "0x54")]
		[Token(Token = "0x4003224")]
		[Range(0f, 1f)]
		public float maintainRelativePositionWeight;

		// Token: 0x04003225 RID: 12837
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003225")]
		public Transform[] childBones;

		// Token: 0x04003226 RID: 12838
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003226")]
		public Transform planeBone1;

		// Token: 0x04003227 RID: 12839
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003227")]
		public Transform planeBone2;

		// Token: 0x04003228 RID: 12840
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003228")]
		public Transform planeBone3;

		// Token: 0x04003229 RID: 12841
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4003229")]
		public Quaternion planeRotationOffset;

		// Token: 0x0400322A RID: 12842
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x400322A")]
		private float posW;

		// Token: 0x0400322B RID: 12843
		[FieldOffset(Offset = "0x8C")]
		[Token(Token = "0x400322B")]
		private float rotW;

		// Token: 0x0400322C RID: 12844
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x400322C")]
		private Vector3[] localPositions;

		// Token: 0x0400322D RID: 12845
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x400322D")]
		private bool usePlaneNodes;

		// Token: 0x0400322E RID: 12846
		[FieldOffset(Offset = "0x9C")]
		[Token(Token = "0x400322E")]
		private Quaternion animatedPlaneRotation;

		// Token: 0x0400322F RID: 12847
		[FieldOffset(Offset = "0xAC")]
		[Token(Token = "0x400322F")]
		private Vector3 animatedPosition;

		// Token: 0x04003230 RID: 12848
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4003230")]
		private bool firstUpdate;

		// Token: 0x04003231 RID: 12849
		[FieldOffset(Offset = "0xBC")]
		[Token(Token = "0x4003231")]
		private int chainIndex;

		// Token: 0x04003232 RID: 12850
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4003232")]
		private int nodeIndex;

		// Token: 0x04003233 RID: 12851
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x4003233")]
		private int plane1ChainIndex;

		// Token: 0x04003234 RID: 12852
		[FieldOffset(Offset = "0xC8")]
		[Token(Token = "0x4003234")]
		private int plane1NodeIndex;

		// Token: 0x04003235 RID: 12853
		[FieldOffset(Offset = "0xCC")]
		[Token(Token = "0x4003235")]
		private int plane2ChainIndex;

		// Token: 0x04003236 RID: 12854
		[FieldOffset(Offset = "0xD0")]
		[Token(Token = "0x4003236")]
		private int plane2NodeIndex;

		// Token: 0x04003237 RID: 12855
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x4003237")]
		private int plane3ChainIndex;

		// Token: 0x04003238 RID: 12856
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4003238")]
		private int plane3NodeIndex;

		// Token: 0x04003239 RID: 12857
		[FieldOffset(Offset = "0xE0")]
		[Token(Token = "0x4003239")]
		private int[] childChainIndexes;

		// Token: 0x0400323A RID: 12858
		[FieldOffset(Offset = "0xE8")]
		[Token(Token = "0x400323A")]
		private int[] childNodeIndexes;
	}
}
