using System;
using Cpp2IlInjected;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000469 RID: 1129
	[Token(Token = "0x2000469")]
	public class Amplifier : OffsetModifier
	{
		// Token: 0x0600288E RID: 10382 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600288E")]
		[Address(RVA = "0x11E4E70", Offset = "0x11E3C70", VA = "0x1811E4E70", Slot = "4")]
		protected override void OnModifyOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600288F RID: 10383 RVA: 0x000595D4 File Offset: 0x000577D4
		[Token(Token = "0x600288F")]
		[Address(RVA = "0x8CD260", Offset = "0x8CC060", VA = "0x1808CD260")]
		public Amplifier()
		{
		}

		// Token: 0x040031CD RID: 12749
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x40031CD")]
		[Tooltip("The amplified bodies.")]
		public Amplifier.Body[] bodies;

		// Token: 0x0200046A RID: 1130
		[Token(Token = "0x200046A")]
		[Serializable]
		public class Body
		{
			// Token: 0x06002890 RID: 10384 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002890")]
			[Address(RVA = "0x5F8C60", Offset = "0x5F7A60", VA = "0x1805F8C60")]
			public void Update(IKSolverFullBodyBiped solver, float w, float deltaTime)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002891 RID: 10385 RVA: 0x000020D3 File Offset: 0x000002D3
			[Token(Token = "0x6002891")]
			[Address(RVA = "0x5F8C00", Offset = "0x5F7A00", VA = "0x1805F8C00")]
			private static Vector3 Multiply(Vector3 v1, Vector3 v2)
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}

			// Token: 0x06002892 RID: 10386 RVA: 0x000595E8 File Offset: 0x000577E8
			[Token(Token = "0x6002892")]
			[Address(RVA = "0x5F91B0", Offset = "0x5F7FB0", VA = "0x1805F91B0")]
			public Body()
			{
			}

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

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

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

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

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

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

			// Token: 0x040031D4 RID: 12756
			[FieldOffset(Offset = "0x34")]
			[Token(Token = "0x40031D4")]
			private Vector3 lastRelativePos;

			// Token: 0x040031D5 RID: 12757
			[FieldOffset(Offset = "0x40")]
			[Token(Token = "0x40031D5")]
			private Vector3 smoothDelta;

			// Token: 0x040031D6 RID: 12758
			[FieldOffset(Offset = "0x4C")]
			[Token(Token = "0x40031D6")]
			private bool firstUpdate;

			// Token: 0x0200046B RID: 1131
			[Token(Token = "0x200046B")]
			[Serializable]
			public class EffectorLink
			{
				// Token: 0x06002893 RID: 10387 RVA: 0x0003883F File Offset: 0x00036A3F
				[Token(Token = "0x6002893")]
				[Address(RVA = "0x3D8B20", Offset = "0x3D7920", VA = "0x1803D8B20")]
				public EffectorLink()
				{
				}

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

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