using System;
using Cpp2IlInjected;
using RootMotion.FinalIK;
using UnityEngine;

namespace RootMotion.Demos
{
	// Token: 0x02000407 RID: 1031
	[Token(Token = "0x2000407")]
	public class AnimationWarping : OffsetModifier
	{
		// Token: 0x060025E5 RID: 9701 RVA: 0x00057BC4 File Offset: 0x00055DC4
		[Token(Token = "0x60025E5")]
		[Address(RVA = "0xDB1AE0", Offset = "0xDB0AE0", VA = "0x180DB1AE0", Slot = "5")]
		protected override void Start()
		{
			base.Start();
			AnimationWarping.EffectorMode effectorMode = this.effectorMode;
			this.lastMode = effectorMode;
		}

		// Token: 0x060025E6 RID: 9702 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60025E6")]
		[Address(RVA = "0xDB1350", Offset = "0xDB0350", VA = "0x180DB1350")]
		public float GetWarpWeight(int warpIndex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060025E7 RID: 9703 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60025E7")]
		[Address(RVA = "0xDB1690", Offset = "0xDB0690", VA = "0x180DB1690", Slot = "4")]
		protected override void OnModifyOffset()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060025E8 RID: 9704 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x60025E8")]
		[Address(RVA = "0xDB15E0", Offset = "0xDB05E0", VA = "0x180DB15E0")]
		private void OnDisable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x060025E9 RID: 9705 RVA: 0x00057BE8 File Offset: 0x00055DE8
		[Token(Token = "0x60025E9")]
		[Address(RVA = "0xDA8200", Offset = "0xDA7200", VA = "0x180DA8200")]
		public AnimationWarping()
		{
		}

		// Token: 0x04002F4F RID: 12111
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4002F4F")]
		[Tooltip("Reference to the Animator component to use")]
		public Animator animator;

		// Token: 0x04002F50 RID: 12112
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4002F50")]
		[Tooltip("Using effector.positionOffset or effector.position with effector.positionWeight? The former will enable you to use effector.position for other things, the latter will weigh in the effectors, hence using Reach and Pull in the process.")]
		public AnimationWarping.EffectorMode effectorMode;

		// Token: 0x04002F51 RID: 12113
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4002F51")]
		[Space]
		[Space(10f)]
		[Tooltip("The array of warps, can have multiple simultaneous warps.")]
		public AnimationWarping.Warp[] warps;

		// Token: 0x04002F52 RID: 12114
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4002F52")]
		private AnimationWarping.EffectorMode lastMode;

		// Token: 0x02000408 RID: 1032
		[Token(Token = "0x2000408")]
		[Serializable]
		public struct Warp
		{
			// Token: 0x04002F53 RID: 12115
			[FieldOffset(Offset = "0x0")]
			[Token(Token = "0x4002F53")]
			[Tooltip("Layer of the 'Animation State' in the Animator.")]
			public int animationLayer;

			// Token: 0x04002F54 RID: 12116
			[FieldOffset(Offset = "0x8")]
			[Token(Token = "0x4002F54")]
			[Tooltip("Name of the state in the Animator to warp.")]
			public string animationState;

			// Token: 0x04002F55 RID: 12117
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x4002F55")]
			[Tooltip("Warping weight by normalized time of the animation state.")]
			public AnimationCurve weightCurve;

			// Token: 0x04002F56 RID: 12118
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x4002F56")]
			[Tooltip("Animated point to warp from. This should be in character space so keep this Transform parented to the root of the character.")]
			public Transform warpFrom;

			// Token: 0x04002F57 RID: 12119
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x4002F57")]
			[Tooltip("World space point to warp to.")]
			public Transform warpTo;

			// Token: 0x04002F58 RID: 12120
			[FieldOffset(Offset = "0x28")]
			[Token(Token = "0x4002F58")]
			[Tooltip("Which FBBIK effector to use?")]
			public FullBodyBipedEffector effector;
		}

		// Token: 0x02000409 RID: 1033
		[Token(Token = "0x2000409")]
		[Serializable]
		public enum EffectorMode
		{
			// Token: 0x04002F5A RID: 12122
			[Token(Token = "0x4002F5A")]
			PositionOffset,
			// Token: 0x04002F5B RID: 12123
			[Token(Token = "0x4002F5B")]
			Position
		}
	}
}
