using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x0200048A RID: 1162
	[Token(Token = "0x200048A")]
	[Serializable]
	public class IKSolverLimb : IKSolverTrigonometric
	{
		// Token: 0x06002963 RID: 10595 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002963")]
		[Address(RVA = "0x151E200", Offset = "0x151D200", VA = "0x18151E200")]
		public void MaintainRotation()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002964 RID: 10596 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002964")]
		[Address(RVA = "0x151E1B0", Offset = "0x151D1B0", VA = "0x18151E1B0")]
		public void MaintainBend()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002965 RID: 10597 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002965")]
		[Address(RVA = "0x151E250", Offset = "0x151D250", VA = "0x18151E250", Slot = "12")]
		protected override void OnInitiateVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002966 RID: 10598 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002966")]
		[Address(RVA = "0x151E750", Offset = "0x151D750", VA = "0x18151E750", Slot = "13")]
		protected override void OnUpdateVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002967 RID: 10599 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002967")]
		[Address(RVA = "0x151E660", Offset = "0x151D660", VA = "0x18151E660", Slot = "14")]
		protected override void OnPostSolveVirtual()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002968 RID: 10600 RVA: 0x0005D734 File Offset: 0x0005B934
		[Token(Token = "0x6002968")]
		[Address(RVA = "0x151EB60", Offset = "0x151DB60", VA = "0x18151EB60")]
		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: 0x06002969 RID: 10601 RVA: 0x0005D770 File Offset: 0x0005B970
		[Token(Token = "0x6002969")]
		[Address(RVA = "0x151EAC0", Offset = "0x151DAC0", VA = "0x18151EAC0")]
		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: 0x17000275 RID: 629
		// (get) Token: 0x0600296A RID: 10602 RVA: 0x0005D7B4 File Offset: 0x0005B9B4
		[Token(Token = "0x17000275")]
		private IKSolverLimb.AxisDirection[] axisDirections
		{
			[Token(Token = "0x600296A")]
			[Address(RVA = "0x151EBF0", Offset = "0x151DBF0", VA = "0x18151EBF0")]
			get
			{
				if (this.goal != AvatarIKGoal.LeftHand)
				{
					return this.axisDirectionsRight;
				}
				return this.axisDirectionsLeft;
			}
		}

		// Token: 0x0600296B RID: 10603 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600296B")]
		[Address(RVA = "0x151E860", Offset = "0x151D860", VA = "0x18151E860")]
		private void StoreAxisDirections(ref IKSolverLimb.AxisDirection[] axisDirections)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600296C RID: 10604 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600296C")]
		[Address(RVA = "0x151D4A0", Offset = "0x151C4A0", VA = "0x18151D4A0")]
		private Vector3 GetModifiedBendNormal()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x040032D7 RID: 13015
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x40032D7")]
		public AvatarIKGoal goal;

		// Token: 0x040032D8 RID: 13016
		[FieldOffset(Offset = "0xAC")]
		[Token(Token = "0x40032D8")]
		public IKSolverLimb.BendModifier bendModifier;

		// Token: 0x040032D9 RID: 13017
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x40032D9")]
		[Range(0f, 1f)]
		public float maintainRotationWeight;

		// Token: 0x040032DA RID: 13018
		[FieldOffset(Offset = "0xB4")]
		[Token(Token = "0x40032DA")]
		[Range(0f, 1f)]
		public float bendModifierWeight = 1f;

		// Token: 0x040032DB RID: 13019
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x40032DB")]
		public Transform bendGoal;

		// Token: 0x040032DC RID: 13020
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x40032DC")]
		private bool maintainBendFor1Frame;

		// Token: 0x040032DD RID: 13021
		[FieldOffset(Offset = "0xC1")]
		[Token(Token = "0x40032DD")]
		private bool maintainRotationFor1Frame;

		// Token: 0x040032DE RID: 13022
		[FieldOffset(Offset = "0xC4")]
		[Token(Token = "0x40032DE")]
		private Quaternion defaultRootRotation;

		// Token: 0x040032DF RID: 13023
		[FieldOffset(Offset = "0xD4")]
		[Token(Token = "0x40032DF")]
		private Quaternion parentDefaultRotation;

		// Token: 0x040032E0 RID: 13024
		[FieldOffset(Offset = "0xE4")]
		[Token(Token = "0x40032E0")]
		private Quaternion bone3RotationBeforeSolve;

		// Token: 0x040032E1 RID: 13025
		[FieldOffset(Offset = "0xF4")]
		[Token(Token = "0x40032E1")]
		private Quaternion maintainRotation;

		// Token: 0x040032E2 RID: 13026
		[FieldOffset(Offset = "0x104")]
		[Token(Token = "0x40032E2")]
		private Quaternion bone3DefaultRotation;

		// Token: 0x040032E3 RID: 13027
		[FieldOffset(Offset = "0x114")]
		[Token(Token = "0x40032E3")]
		private Vector3 _bendNormal;

		// Token: 0x040032E4 RID: 13028
		[FieldOffset(Offset = "0x120")]
		[Token(Token = "0x40032E4")]
		private Vector3 animationNormal;

		// Token: 0x040032E5 RID: 13029
		[FieldOffset(Offset = "0x130")]
		[Token(Token = "0x40032E5")]
		private IKSolverLimb.AxisDirection[] axisDirectionsLeft;

		// Token: 0x040032E6 RID: 13030
		[FieldOffset(Offset = "0x138")]
		[Token(Token = "0x40032E6")]
		private IKSolverLimb.AxisDirection[] axisDirectionsRight;

		// Token: 0x0200048B RID: 1163
		[Token(Token = "0x200048B")]
		[Serializable]
		public enum BendModifier
		{
			// Token: 0x040032E8 RID: 13032
			[Token(Token = "0x40032E8")]
			Animation,
			// Token: 0x040032E9 RID: 13033
			[Token(Token = "0x40032E9")]
			Target,
			// Token: 0x040032EA RID: 13034
			[Token(Token = "0x40032EA")]
			Parent,
			// Token: 0x040032EB RID: 13035
			[Token(Token = "0x40032EB")]
			Arm,
			// Token: 0x040032EC RID: 13036
			[Token(Token = "0x40032EC")]
			Goal
		}

		// Token: 0x0200048C RID: 1164
		[Token(Token = "0x200048C")]
		[Serializable]
		public struct AxisDirection
		{
			// Token: 0x0600296D RID: 10605 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600296D")]
			[Address(RVA = "0x169F030", Offset = "0x169E030", VA = "0x18169F030")]
			public AxisDirection(Vector3 direction, Vector3 axis)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x040032ED RID: 13037
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x40032ED")]
			public Vector3 direction;

			// Token: 0x040032EE RID: 13038
			[FieldOffset(Offset = "0xC")]
			[Token(Token = "0x40032EE")]
			public Vector3 axis;

			// Token: 0x040032EF RID: 13039
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40032EF")]
			public float dot;
		}
	}
}
