using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x020004C1 RID: 1217
	[Token(Token = "0x20004C1")]
	public class Amplifier : OffsetModifier
	{
		// Token: 0x06002B57 RID: 11095 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002B57")]
		[Address(RVA = "0xDA80B0", Offset = "0xDA70B0", VA = "0x180DA80B0", Slot = "4")]
		protected override void OnModifyOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002B58 RID: 11096 RVA: 0x00060978 File Offset: 0x0005EB78
		[Token(Token = "0x6002B58")]
		[Address(RVA = "0xDA8200", Offset = "0xDA7200", VA = "0x180DA8200")]
		public Amplifier()
		{
		}

		// Token: 0x040034B7 RID: 13495
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x40034B7")]
		[Tooltip("The amplified bodies.")]
		public Amplifier.Body[] bodies;

		// Token: 0x020004C2 RID: 1218
		[Token(Token = "0x20004C2")]
		[Serializable]
		public class Body
		{
			// Token: 0x06002B59 RID: 11097 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002B59")]
			[Address(RVA = "0x19BBE00", Offset = "0x19BAE00", VA = "0x1819BBE00")]
			public void Update(IKSolverFullBodyBiped solver, float w, float deltaTime)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002B5A RID: 11098 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002B5A")]
			[Address(RVA = "0x19BBDA0", Offset = "0x19BADA0", VA = "0x1819BBDA0")]
			private static Vector3 Multiply(Vector3 v1, Vector3 v2)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002B5B RID: 11099 RVA: 0x0006098C File Offset: 0x0005EB8C
			[Token(Token = "0x6002B5B")]
			[Address(RVA = "0x19BC350", Offset = "0x19BB350", VA = "0x1819BC350")]
			public Body()
			{
			}

			// Token: 0x040034B8 RID: 13496
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40034B8")]
			[Tooltip("The Transform that's motion we are reading.")]
			public Transform transform;

			// Token: 0x040034B9 RID: 13497
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x40034B9")]
			[Tooltip("Amplify the 'transform's' position relative to this Transform.")]
			public Transform relativeTo;

			// Token: 0x040034BA RID: 13498
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x40034BA")]
			[Tooltip("Linking the body to effectors. One Body can be used to offset more than one effector.")]
			public Amplifier.Body.EffectorLink[] effectorLinks;

			// Token: 0x040034BB RID: 13499
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x40034BB")]
			[Tooltip("Amplification magnitude along the up axis of the character.")]
			public float verticalWeight = 1f;

			// Token: 0x040034BC RID: 13500
			[FieldOffset(Offset = "0x2C")]
			[Token(Token = "0x40034BC")]
			[Tooltip("Amplification magnitude along the horizontal axes of the character.")]
			public float horizontalWeight = 1f;

			// Token: 0x040034BD RID: 13501
			[FieldOffset(Offset = "0x30")]
			[Token(Token = "0x40034BD")]
			[Tooltip("Speed of the amplifier. 0 means instant.")]
			public float speed = 3f;

			// Token: 0x040034BE RID: 13502
			[FieldOffset(Offset = "0x34")]
			[Token(Token = "0x40034BE")]
			private Vector3 lastRelativePos;

			// Token: 0x040034BF RID: 13503
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x40034BF")]
			private Vector3 smoothDelta;

			// Token: 0x040034C0 RID: 13504
			[FieldOffset(Offset = "0x4C")]
			[Token(Token = "0x40034C0")]
			private bool firstUpdate;

			// Token: 0x020004C3 RID: 1219
			[Token(Token = "0x20004C3")]
			[Serializable]
			public class EffectorLink
			{
				// Token: 0x06002B5C RID: 11100 RVA: 0x0003DF9B File Offset: 0x0003C19B
				[Token(Token = "0x6002B5C")]
				[Address(RVA = "0x36ABD0", Offset = "0x369BD0", VA = "0x18036ABD0")]
				public EffectorLink()
				{
				}

				// Token: 0x040034C1 RID: 13505
				[FieldOffset(Offset = "0x10")]
				[Token(Token = "0x40034C1")]
				[Tooltip("Type of the FBBIK effector to use")]
				public FullBodyBipedEffector effector;

				// Token: 0x040034C2 RID: 13506
				[FieldOffset(Offset = "0x14")]
				[Token(Token = "0x40034C2")]
				[Tooltip("Weight of using this effector")]
				public float weight;
			}
		}
	}
}
