using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000435 RID: 1077
	[Token(Token = "0x2000435")]
	[Serializable]
	public class IKSolverLookAt : IKSolver
	{
		// Token: 0x060026A5 RID: 9893 RVA: 0x000564DC File Offset: 0x000546DC
		[Token(Token = "0x60026A5")]
		[Address(RVA = "0x1186B60", Offset = "0x1185960", VA = "0x181186B60")]
		public void SetLookAtWeight(float weight)
		{
			int num = 0;
			float num2 = Mathf.Clamp(weight, (float)num, 1f);
			this.IKPositionWeight = num2;
		}

		// Token: 0x060026A6 RID: 9894 RVA: 0x00056500 File Offset: 0x00054700
		[Token(Token = "0x60026A6")]
		[Address(RVA = "0x159AFF0", Offset = "0x1599DF0", VA = "0x18159AFF0")]
		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: 0x060026A7 RID: 9895 RVA: 0x0005653C File Offset: 0x0005473C
		[Token(Token = "0x60026A7")]
		[Address(RVA = "0x159B050", Offset = "0x1599E50", VA = "0x18159B050")]
		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: 0x060026A8 RID: 9896 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026A8")]
		[Address(RVA = "0x159AF50", Offset = "0x1599D50", VA = "0x18159AF50")]
		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: 0x060026A9 RID: 9897 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026A9")]
		[Address(RVA = "0x159AE70", Offset = "0x1599C70", VA = "0x18159AE70")]
		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: 0x060026AA RID: 9898 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026AA")]
		[Address(RVA = "0x159B0D0", Offset = "0x1599ED0", VA = "0x18159B0D0")]
		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: 0x060026AB RID: 9899 RVA: 0x00056594 File Offset: 0x00054794
		[Token(Token = "0x60026AB")]
		[Address(RVA = "0x159BAF0", Offset = "0x159A8F0", VA = "0x18159BAF0", 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: 0x060026AC RID: 9900 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026AC")]
		[Address(RVA = "0x1599A50", Offset = "0x1598850", VA = "0x181599A50", Slot = "8")]
		public override void FixTransforms()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026AD RID: 9901 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026AD")]
		[Address(RVA = "0x159A3E0", Offset = "0x15991E0", VA = "0x18159A3E0", Slot = "4")]
		public override bool IsValid(ref string message)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026AE RID: 9902 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026AE")]
		[Address(RVA = "0x159A0F0", Offset = "0x1598EF0", VA = "0x18159A0F0", Slot = "6")]
		public override IKSolver.Point[] GetPoints()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026AF RID: 9903 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026AF")]
		[Address(RVA = "0x1599F30", Offset = "0x1598D30", VA = "0x181599F30", Slot = "7")]
		public override IKSolver.Point GetPoint(Transform transform)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026B0 RID: 9904 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026B0")]
		[Address(RVA = "0x159ADB0", Offset = "0x1599BB0", VA = "0x18159ADB0")]
		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: 0x060026B1 RID: 9905 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026B1")]
		[Address(RVA = "0x159A710", Offset = "0x1599510", VA = "0x18159A710", Slot = "10")]
		protected override void OnInitiate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026B2 RID: 9906 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026B2")]
		[Address(RVA = "0x159AB00", Offset = "0x1599900", VA = "0x18159AB00", Slot = "11")]
		protected override void OnUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000251 RID: 593
		// (get) Token: 0x060026B3 RID: 9907 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000251")]
		private bool spineIsValid
		{
			[Token(Token = "0x60026B3")]
			[Address(RVA = "0x159C0A0", Offset = "0x159AEA0", VA = "0x18159C0A0")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000252 RID: 594
		// (get) Token: 0x060026B4 RID: 9908 RVA: 0x00056630 File Offset: 0x00054830
		[Token(Token = "0x17000252")]
		private bool spineIsEmpty
		{
			[Token(Token = "0x60026B4")]
			[Address(RVA = "0x159C080", Offset = "0x159AE80", VA = "0x18159C080")]
			get
			{
				return this.spine.Length == 0;
			}
		}

		// Token: 0x060026B5 RID: 9909 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026B5")]
		[Address(RVA = "0x159B860", Offset = "0x159A660", VA = "0x18159B860")]
		private void SolveSpine()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000253 RID: 595
		// (get) Token: 0x060026B6 RID: 9910 RVA: 0x00056654 File Offset: 0x00054854
		[Token(Token = "0x17000253")]
		private bool headIsValid
		{
			[Token(Token = "0x60026B6")]
			[Address(RVA = "0x159C070", Offset = "0x159AE70", VA = "0x18159C070")]
			get
			{
				return this.head != (ulong)0L;
			}
		}

		// Token: 0x17000254 RID: 596
		// (get) Token: 0x060026B7 RID: 9911 RVA: 0x00056670 File Offset: 0x00054870
		[Token(Token = "0x17000254")]
		private bool headIsEmpty
		{
			[Token(Token = "0x60026B7")]
			[Address(RVA = "0x159C000", Offset = "0x159AE00", VA = "0x18159C000")]
			get
			{
				Transform transform = this.head.transform;
				int num = 0;
				return transform == num;
			}
		}

		// Token: 0x060026B8 RID: 9912 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026B8")]
		[Address(RVA = "0x159B510", Offset = "0x159A310", VA = "0x18159B510")]
		private void SolveHead()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x17000255 RID: 597
		// (get) Token: 0x060026B9 RID: 9913 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000255")]
		private bool eyesIsValid
		{
			[Token(Token = "0x60026B9")]
			[Address(RVA = "0x159BF10", Offset = "0x159AD10", VA = "0x18159BF10")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000256 RID: 598
		// (get) Token: 0x060026BA RID: 9914 RVA: 0x00056698 File Offset: 0x00054898
		[Token(Token = "0x17000256")]
		private bool eyesIsEmpty
		{
			[Token(Token = "0x60026BA")]
			[Address(RVA = "0x159BEF0", Offset = "0x159ACF0", VA = "0x18159BEF0")]
			get
			{
				return this.eyes.Length == 0;
			}
		}

		// Token: 0x060026BB RID: 9915 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026BB")]
		[Address(RVA = "0x159B1E0", Offset = "0x1599FE0", VA = "0x18159B1E0")]
		private void SolveEyes()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026BC RID: 9916 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026BC")]
		[Address(RVA = "0x1599BC0", Offset = "0x15989C0", VA = "0x181599BC0")]
		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: 0x060026BD RID: 9917 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026BD")]
		[Address(RVA = "0x159ABE0", Offset = "0x15999E0", VA = "0x18159ABE0")]
		private void SetBones(Transform[] array, ref IKSolverLookAt.LookAtBone[] bones)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060026BE RID: 9918 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60026BE")]
		[Address(RVA = "0x159BC50", Offset = "0x159AA50", VA = "0x18159BC50")]
		public IKSolverLookAt()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003006 RID: 12294
		[FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003006")]
		public Transform target;

		// Token: 0x04003007 RID: 12295
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003007")]
		public IKSolverLookAt.LookAtBone[] spine;

		// Token: 0x04003008 RID: 12296
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003008")]
		public IKSolverLookAt.LookAtBone head;

		// Token: 0x04003009 RID: 12297
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003009")]
		public IKSolverLookAt.LookAtBone[] eyes;

		// Token: 0x0400300A RID: 12298
		[FieldOffset(Offset = "0x78")]
		[Token(Token = "0x400300A")]
		[Range(0f, 1f)]
		public float bodyWeight;

		// Token: 0x0400300B RID: 12299
		[FieldOffset(Offset = "0x7C")]
		[Token(Token = "0x400300B")]
		[Range(0f, 1f)]
		public float headWeight;

		// Token: 0x0400300C RID: 12300
		[FieldOffset(Offset = "0x80")]
		[Token(Token = "0x400300C")]
		[Range(0f, 1f)]
		public float eyesWeight;

		// Token: 0x0400300D RID: 12301
		[FieldOffset(Offset = "0x84")]
		[Token(Token = "0x400300D")]
		[Range(0f, 1f)]
		public float clampWeight;

		// Token: 0x0400300E RID: 12302
		[FieldOffset(Offset = "0x88")]
		[Token(Token = "0x400300E")]
		[Range(0f, 1f)]
		public float clampWeightHead;

		// Token: 0x0400300F RID: 12303
		[FieldOffset(Offset = "0x8C")]
		[Token(Token = "0x400300F")]
		[Range(0f, 1f)]
		public float clampWeightEyes;

		// Token: 0x04003010 RID: 12304
		[FieldOffset(Offset = "0x90")]
		[Token(Token = "0x4003010")]
		[Attribute(Name = "RangeAttribute", RVA = "0xDF060", Offset = "0xDE460")]
		public int clampSmoothing;

		// Token: 0x04003011 RID: 12305
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x4003011")]
		public AnimationCurve spineWeightCurve;

		// Token: 0x04003012 RID: 12306
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x4003012")]
		private Vector3[] spineForwards;

		// Token: 0x04003013 RID: 12307
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x4003013")]
		private Vector3[] headForwards;

		// Token: 0x04003014 RID: 12308
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x4003014")]
		private Vector3[] eyeForward;

		// Token: 0x02000436 RID: 1078
		[Token(Token = "0x2000436")]
		[Serializable]
		public class LookAtBone : IKSolver.Bone
		{
			// Token: 0x060026BF RID: 9919 RVA: 0x000566BC File Offset: 0x000548BC
			[Token(Token = "0x60026BF")]
			[Address(RVA = "0x14F1520", Offset = "0x14F0320", VA = "0x1814F1520")]
			public LookAtBone()
			{
			}

			// Token: 0x060026C0 RID: 9920 RVA: 0x000566D0 File Offset: 0x000548D0
			[Token(Token = "0x60026C0")]
			[Address(RVA = "0x14F14F0", Offset = "0x14F02F0", VA = "0x1814F14F0")]
			public LookAtBone(Transform transform)
			{
				/*
An exception occurred when decompiling this method (060026C0)

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: 0x060026C1 RID: 9921 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60026C1")]
			[Address(RVA = "0x14F1270", Offset = "0x14F0070", VA = "0x1814F1270")]
			public void Initiate(Transform root)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x060026C2 RID: 9922 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x60026C2")]
			[Address(RVA = "0x14F1390", Offset = "0x14F0190", VA = "0x1814F1390")]
			public void LookAt(Vector3 direction, float weight)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x17000257 RID: 599
			// (get) Token: 0x060026C3 RID: 9923 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x17000257")]
			public Vector3 forward
			{
				[Token(Token = "0x60026C3")]
				[Address(RVA = "0x14F1530", Offset = "0x14F0330", VA = "0x1814F1530")]
				get
				{
					throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
				}
			}
		}
	}
}
