using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000432 RID: 1074
	[Token(Token = "0x2000432")]
	[Serializable]
	public class IKSolverLimb : IKSolverTrigonometric
	{
		// Token: 0x0600269A RID: 9882 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600269A")]
		[Address(RVA = "0x1599040", Offset = "0x1597E40", VA = "0x181599040")]
		public void MaintainRotation()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600269B RID: 9883 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600269B")]
		[Address(RVA = "0x1598FF0", Offset = "0x1597DF0", VA = "0x181598FF0")]
		public void MaintainBend()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600269C RID: 9884 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600269C")]
		[Address(RVA = "0x1599090", Offset = "0x1597E90", VA = "0x181599090", Slot = "12")]
		protected override void OnInitiateVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600269D RID: 9885 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600269D")]
		[Address(RVA = "0x1599590", Offset = "0x1598390", VA = "0x181599590", Slot = "13")]
		protected override void OnUpdateVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600269E RID: 9886 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600269E")]
		[Address(RVA = "0x15994A0", Offset = "0x15982A0", VA = "0x1815994A0", Slot = "14")]
		protected override void OnPostSolveVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600269F RID: 9887 RVA: 0x00056438 File Offset: 0x00054638
		[Token(Token = "0x600269F")]
		[Address(RVA = "0x15999A0", Offset = "0x15987A0", VA = "0x1815999A0")]
		public IKSolverLimb()
		{
			IKSolverLimb.AxisDirection[] array = new IKSolverLimb.AxisDirection[4];
			this.axisDirectionsLeft = array;
			IKSolverLimb.AxisDirection[] array2 = new IKSolverLimb.AxisDirection[4];
			this.axisDirectionsRight = array2;
			base..ctor();
		}

		// Token: 0x060026A0 RID: 9888 RVA: 0x00056474 File Offset: 0x00054674
		[Token(Token = "0x60026A0")]
		[Address(RVA = "0x1599900", Offset = "0x1598700", VA = "0x181599900")]
		public IKSolverLimb(AvatarIKGoal goal)
		{
			IKSolverLimb.AxisDirection[] array = new IKSolverLimb.AxisDirection[4];
			this.axisDirectionsLeft = array;
			IKSolverLimb.AxisDirection[] array2 = new IKSolverLimb.AxisDirection[4];
			this.axisDirectionsRight = array2;
			base..ctor();
			this.goal = goal;
		}

		// Token: 0x17000250 RID: 592
		// (get) Token: 0x060026A1 RID: 9889 RVA: 0x000564B8 File Offset: 0x000546B8
		[Token(Token = "0x17000250")]
		private IKSolverLimb.AxisDirection[] axisDirections
		{
			[Token(Token = "0x60026A1")]
			[Address(RVA = "0x1599A30", Offset = "0x1598830", VA = "0x181599A30")]
			get
			{
				if (this.goal != AvatarIKGoal.LeftHand)
				{
					return this.axisDirectionsRight;
				}
				return this.axisDirectionsLeft;
			}
		}

		// Token: 0x060026A2 RID: 9890 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026A2")]
		[Address(RVA = "0x15996A0", Offset = "0x15984A0", VA = "0x1815996A0")]
		private void StoreAxisDirections(ref IKSolverLimb.AxisDirection[] axisDirections)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026A3 RID: 9891 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026A3")]
		[Address(RVA = "0x15982E0", Offset = "0x15970E0", VA = "0x1815982E0")]
		private Vector3 GetModifiedBendNormal()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04002FED RID: 12269
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x4002FED")]
		public AvatarIKGoal goal;

		// Token: 0x04002FEE RID: 12270
		[FieldOffset(Offset = "0xAC")]
		[Token(Token = "0x4002FEE")]
		public IKSolverLimb.BendModifier bendModifier;

		// Token: 0x04002FEF RID: 12271
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x4002FEF")]
		[Range(0f, 1f)]
		public float maintainRotationWeight;

		// Token: 0x04002FF0 RID: 12272
		[FieldOffset(Offset = "0xB4")]
		[Token(Token = "0x4002FF0")]
		[Range(0f, 1f)]
		public float bendModifierWeight = 1f;

		// Token: 0x04002FF1 RID: 12273
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4002FF1")]
		public Transform bendGoal;

		// Token: 0x04002FF2 RID: 12274
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4002FF2")]
		private bool maintainBendFor1Frame;

		// Token: 0x04002FF3 RID: 12275
		[FieldOffset(Offset = "0xC1")]
		[Token(Token = "0x4002FF3")]
		private bool maintainRotationFor1Frame;

		// Token: 0x04002FF4 RID: 12276
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x4002FF4")]
		private Quaternion defaultRootRotation;

		// Token: 0x04002FF5 RID: 12277
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x4002FF5")]
		private Quaternion parentDefaultRotation;

		// Token: 0x04002FF6 RID: 12278
		[FieldOffset(Offset = "0xE4")]
		[Token(Token = "0x4002FF6")]
		private Quaternion bone3RotationBeforeSolve;

		// Token: 0x04002FF7 RID: 12279
		[FieldOffset(Offset = "0xF4")]
		[Token(Token = "0x4002FF7")]
		private Quaternion maintainRotation;

		// Token: 0x04002FF8 RID: 12280
		[FieldOffset(Offset = "0x104")]
		[Token(Token = "0x4002FF8")]
		private Quaternion bone3DefaultRotation;

		// Token: 0x04002FF9 RID: 12281
		[FieldOffset(Offset = "0x114")]
		[Token(Token = "0x4002FF9")]
		private Vector3 _bendNormal;

		// Token: 0x04002FFA RID: 12282
		[FieldOffset(Offset = "0x120")]
		[Token(Token = "0x4002FFA")]
		private Vector3 animationNormal;

		// Token: 0x04002FFB RID: 12283
		[FieldOffset(Offset = "0x130")]
		[Token(Token = "0x4002FFB")]
		private IKSolverLimb.AxisDirection[] axisDirectionsLeft;

		// Token: 0x04002FFC RID: 12284
		[FieldOffset(Offset = "0x138")]
		[Token(Token = "0x4002FFC")]
		private IKSolverLimb.AxisDirection[] axisDirectionsRight;

		// Token: 0x02000433 RID: 1075
		[Token(Token = "0x2000433")]
		[Serializable]
		public enum BendModifier
		{
			// Token: 0x04002FFE RID: 12286
			[Token(Token = "0x4002FFE")]
			Animation,
			// Token: 0x04002FFF RID: 12287
			[Token(Token = "0x4002FFF")]
			Target,
			// Token: 0x04003000 RID: 12288
			[Token(Token = "0x4003000")]
			Parent,
			// Token: 0x04003001 RID: 12289
			[Token(Token = "0x4003001")]
			Arm,
			// Token: 0x04003002 RID: 12290
			[Token(Token = "0x4003002")]
			Goal
		}

		// Token: 0x02000434 RID: 1076
		[Token(Token = "0x2000434")]
		[Serializable]
		public struct AxisDirection
		{
			// Token: 0x060026A4 RID: 9892 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60026A4")]
			[Address(RVA = "0x14E5A30", Offset = "0x14E4830", VA = "0x1814E5A30")]
			public AxisDirection(Vector3 direction, Vector3 axis)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x04003003 RID: 12291
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x4003003")]
			public Vector3 direction;

			// Token: 0x04003004 RID: 12292
			[FieldOffset(Offset = "0xC")]
			[Token(Token = "0x4003004")]
			public Vector3 axis;

			// Token: 0x04003005 RID: 12293
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x4003005")]
			public float dot;
		}
	}
}
