using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x0200048D RID: 1165
	[Token(Token = "0x200048D")]
	[Serializable]
	public class IKSolverLookAt : IKSolver
	{
		// Token: 0x0600296E RID: 10606 RVA: 0x0005D7D8 File Offset: 0x0005B9D8
		[Token(Token = "0x600296E")]
		[Address(RVA = "0x1520030", Offset = "0x151F030", VA = "0x181520030")]
		public void SetLookAtWeight(float weight)
		{
			int num = 0;
			float num2 = Mathf.Clamp(weight, (float)num, 1f);
			this.IKPositionWeight = num2;
		}

		// Token: 0x0600296F RID: 10607 RVA: 0x0005D7FC File Offset: 0x0005B9FC
		[Token(Token = "0x600296F")]
		[Address(RVA = "0x15201E0", Offset = "0x151F1E0", VA = "0x1815201E0")]
		public void SetLookAtWeight(float weight, float bodyWeight)
		{
			int num = 0;
			float num2 = Mathf.Clamp(weight, (float)num, 1f);
			this.IKPositionWeight = num2;
			int num3 = 0;
			float num4 = Mathf.Clamp(bodyWeight, (float)num3, 1f);
			this.bodyWeight = num4;
		}

		// Token: 0x06002970 RID: 10608 RVA: 0x0005D838 File Offset: 0x0005BA38
		[Token(Token = "0x6002970")]
		[Address(RVA = "0x1520240", Offset = "0x151F240", VA = "0x181520240")]
		public void SetLookAtWeight(float weight, float bodyWeight, float headWeight)
		{
			int num = 0;
			float num2 = Mathf.Clamp(weight, (float)num, 1f);
			this.IKPositionWeight = num2;
			int num3 = 0;
			float num4 = Mathf.Clamp(bodyWeight, (float)num3, 1f);
			this.bodyWeight = num4;
			int num5 = 0;
			float num6 = Mathf.Clamp(headWeight, (float)num5, 1f);
			this.headWeight = num6;
		}

		// Token: 0x06002971 RID: 10609 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002971")]
		[Address(RVA = "0x1520140", Offset = "0x151F140", VA = "0x181520140")]
		public void SetLookAtWeight(float weight, float bodyWeight, float headWeight, float eyesWeight)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002972 RID: 10610 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002972")]
		[Address(RVA = "0x1520060", Offset = "0x151F060", VA = "0x181520060")]
		public void SetLookAtWeight(float weight, float bodyWeight, float headWeight, float eyesWeight, float clampWeight)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002973 RID: 10611 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002973")]
		[Address(RVA = "0x15202C0", Offset = "0x151F2C0", VA = "0x1815202C0")]
		public void SetLookAtWeight(float weight, float bodyWeight = 0f, float headWeight = 1f, float eyesWeight = 0.5f, float clampWeight = 0.5f, float clampWeightHead = 0.5f, float clampWeightEyes = 0.3f)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002974 RID: 10612 RVA: 0x0005D890 File Offset: 0x0005BA90
		[Token(Token = "0x6002974")]
		[Address(RVA = "0x1520CE0", Offset = "0x151FCE0", VA = "0x181520CE0", Slot = "9")]
		public override void StoreDefaultLocalState()
		{
			IKSolverLookAt.LookAtBone[] array = this.spine;
			int num = 0;
			if (num < array.Length)
			{
				array[num].StoreDefaultLocalState();
				IKSolverLookAt.LookAtBone[] array2 = this.spine;
				num++;
			}
			IKSolverLookAt.LookAtBone[] array3 = this.eyes;
			if (num < array3.Length)
			{
				array3[num].StoreDefaultLocalState();
				IKSolverLookAt.LookAtBone[] array4 = this.eyes;
				num++;
				while (array4 != 0)
				{
				}
			}
			IKSolverLookAt.LookAtBone lookAtBone = this.head;
			if (lookAtBone != 0)
			{
				Transform transform = lookAtBone.transform;
				int num2 = 0;
				if (transform != num2)
				{
					this.head.StoreDefaultLocalState();
				}
			}
		}

		// Token: 0x06002975 RID: 10613 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002975")]
		[Address(RVA = "0x151EC10", Offset = "0x151DC10", VA = "0x18151EC10", Slot = "8")]
		public override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002976 RID: 10614 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002976")]
		[Address(RVA = "0x151F5A0", Offset = "0x151E5A0", VA = "0x18151F5A0", Slot = "4")]
		public override bool IsValid(ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002977 RID: 10615 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002977")]
		[Address(RVA = "0x151F2B0", Offset = "0x151E2B0", VA = "0x18151F2B0", Slot = "6")]
		public override IKSolver.Point[] GetPoints()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002978 RID: 10616 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002978")]
		[Address(RVA = "0x151F0F0", Offset = "0x151E0F0", VA = "0x18151F0F0", Slot = "7")]
		public override IKSolver.Point GetPoint(Transform transform)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002979 RID: 10617 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002979")]
		[Address(RVA = "0x151FF70", Offset = "0x151EF70", VA = "0x18151FF70")]
		public bool SetChain(Transform[] spine, Transform head, Transform[] eyes, Transform root)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600297A RID: 10618 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600297A")]
		[Address(RVA = "0x151F8D0", Offset = "0x151E8D0", VA = "0x18151F8D0", Slot = "10")]
		protected override void OnInitiate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600297B RID: 10619 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600297B")]
		[Address(RVA = "0x151FCC0", Offset = "0x151ECC0", VA = "0x18151FCC0", Slot = "11")]
		protected override void OnUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000276 RID: 630
		// (get) Token: 0x0600297C RID: 10620 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000276")]
		private bool spineIsValid
		{
			[Token(Token = "0x600297C")]
			[Address(RVA = "0x1521290", Offset = "0x1520290", VA = "0x181521290")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000277 RID: 631
		// (get) Token: 0x0600297D RID: 10621 RVA: 0x0005D92C File Offset: 0x0005BB2C
		[Token(Token = "0x17000277")]
		private bool spineIsEmpty
		{
			[Token(Token = "0x600297D")]
			[Address(RVA = "0x1521270", Offset = "0x1520270", VA = "0x181521270")]
			get
			{
				return this.spine.Length == 0;
			}
		}

		// Token: 0x0600297E RID: 10622 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600297E")]
		[Address(RVA = "0x1520A50", Offset = "0x151FA50", VA = "0x181520A50")]
		private void SolveSpine()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000278 RID: 632
		// (get) Token: 0x0600297F RID: 10623 RVA: 0x0005D950 File Offset: 0x0005BB50
		[Token(Token = "0x17000278")]
		private bool headIsValid
		{
			[Token(Token = "0x600297F")]
			[Address(RVA = "0x1521260", Offset = "0x1520260", VA = "0x181521260")]
			get
			{
				return this.head != (ulong)0L;
			}
		}

		// Token: 0x17000279 RID: 633
		// (get) Token: 0x06002980 RID: 10624 RVA: 0x0005D96C File Offset: 0x0005BB6C
		[Token(Token = "0x17000279")]
		private bool headIsEmpty
		{
			[Token(Token = "0x6002980")]
			[Address(RVA = "0x15211F0", Offset = "0x15201F0", VA = "0x1815211F0")]
			get
			{
				Transform transform = this.head.transform;
				int num = 0;
				return transform == num;
			}
		}

		// Token: 0x06002981 RID: 10625 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002981")]
		[Address(RVA = "0x1520700", Offset = "0x151F700", VA = "0x181520700")]
		private void SolveHead()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x1700027A RID: 634
		// (get) Token: 0x06002982 RID: 10626 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700027A")]
		private bool eyesIsValid
		{
			[Token(Token = "0x6002982")]
			[Address(RVA = "0x1521100", Offset = "0x1520100", VA = "0x181521100")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x1700027B RID: 635
		// (get) Token: 0x06002983 RID: 10627 RVA: 0x0005D994 File Offset: 0x0005BB94
		[Token(Token = "0x1700027B")]
		private bool eyesIsEmpty
		{
			[Token(Token = "0x6002983")]
			[Address(RVA = "0x15210E0", Offset = "0x15200E0", VA = "0x1815210E0")]
			get
			{
				return this.eyes.Length == 0;
			}
		}

		// Token: 0x06002984 RID: 10628 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002984")]
		[Address(RVA = "0x15203D0", Offset = "0x151F3D0", VA = "0x1815203D0")]
		private void SolveEyes()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002985 RID: 10629 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002985")]
		[Address(RVA = "0x151ED80", Offset = "0x151DD80", VA = "0x18151ED80")]
		private Vector3[] GetForwards(ref Vector3[] forwards, Vector3 baseForward, Vector3 targetForward, int bones, float clamp)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002986 RID: 10630 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002986")]
		[Address(RVA = "0x151FDA0", Offset = "0x151EDA0", VA = "0x18151FDA0")]
		private void SetBones(Transform[] array, ref IKSolverLookAt.LookAtBone[] bones)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002987 RID: 10631 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002987")]
		[Address(RVA = "0x1520E40", Offset = "0x151FE40", VA = "0x181520E40")]
		public IKSolverLookAt()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x040032F0 RID: 13040
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x40032F0")]
		public Transform target;

		// Token: 0x040032F1 RID: 13041
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x40032F1")]
		public IKSolverLookAt.LookAtBone[] spine;

		// Token: 0x040032F2 RID: 13042
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x40032F2")]
		public IKSolverLookAt.LookAtBone head;

		// Token: 0x040032F3 RID: 13043
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x40032F3")]
		public IKSolverLookAt.LookAtBone[] eyes;

		// Token: 0x040032F4 RID: 13044
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x40032F4")]
		[Range(0f, 1f)]
		public float bodyWeight;

		// Token: 0x040032F5 RID: 13045
		[FieldOffset(Offset = "0x7C")]
		[Token(Token = "0x40032F5")]
		[Range(0f, 1f)]
		public float headWeight;

		// Token: 0x040032F6 RID: 13046
		[FieldOffset(Offset = "0x80")]
		[Token(Token = "0x40032F6")]
		[Range(0f, 1f)]
		public float eyesWeight;

		// Token: 0x040032F7 RID: 13047
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x40032F7")]
		[Range(0f, 1f)]
		public float clampWeight;

		// Token: 0x040032F8 RID: 13048
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x40032F8")]
		[Range(0f, 1f)]
		public float clampWeightHead;

		// Token: 0x040032F9 RID: 13049
		[FieldOffset(Offset = "0x8C")]
		[Token(Token = "0x40032F9")]
		[Range(0f, 1f)]
		public float clampWeightEyes;

		// Token: 0x040032FA RID: 13050
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x40032FA")]
		[Attribute(Name = "RangeAttribute", RVA = "0x25BBB0", Offset = "0x25AFB0")]
		public int clampSmoothing;

		// Token: 0x040032FB RID: 13051
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x40032FB")]
		public AnimationCurve spineWeightCurve;

		// Token: 0x040032FC RID: 13052
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x40032FC")]
		private Vector3[] spineForwards;

		// Token: 0x040032FD RID: 13053
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x40032FD")]
		private Vector3[] headForwards;

		// Token: 0x040032FE RID: 13054
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x40032FE")]
		private Vector3[] eyeForward;

		// Token: 0x0200048E RID: 1166
		[Token(Token = "0x200048E")]
		[Serializable]
		public class LookAtBone : IKSolver.Bone
		{
			// Token: 0x06002988 RID: 10632 RVA: 0x0005D9B8 File Offset: 0x0005BBB8
			[Token(Token = "0x6002988")]
			[Address(RVA = "0x16AC430", Offset = "0x16AB430", VA = "0x1816AC430")]
			public LookAtBone()
			{
			}

			// Token: 0x06002989 RID: 10633 RVA: 0x0005D9CC File Offset: 0x0005BBCC
			[Token(Token = "0x6002989")]
			[Address(RVA = "0x16AC400", Offset = "0x16AB400", VA = "0x1816AC400")]
			public LookAtBone(Transform transform)
			{
				/*
An exception occurred when decompiling this method (06002989)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.IKSolverLookAt/LookAtBone::.ctor(UnityEngine.Transform)

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	call:void(Bone::.ctor, ldloc:LookAtBone[exp:Bone](this)); 	stfld:Transform(Point::transform, ldloc:LookAtBone[exp:Point](this), ldloc:Transform(transform)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}

			// Token: 0x0600298A RID: 10634 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600298A")]
			[Address(RVA = "0x16AC180", Offset = "0x16AB180", VA = "0x1816AC180")]
			public void Initiate(Transform root)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x0600298B RID: 10635 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x600298B")]
			[Address(RVA = "0x16AC2A0", Offset = "0x16AB2A0", VA = "0x1816AC2A0")]
			public void LookAt(Vector3 direction, float weight)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x1700027C RID: 636
			// (get) Token: 0x0600298C RID: 10636 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x1700027C")]
			public Vector3 forward
			{
				[Token(Token = "0x600298C")]
				[Address(RVA = "0x16AC440", Offset = "0x16AB440", VA = "0x1816AC440")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}
		}
	}
}
