using System;
using Il2CppInterop.Common.Attributes;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using UnityEngine;

namespace RootMotion.FinalIK
{
	// Token: 0x02000475 RID: 1141
	public class RotationLimitSpline : RotationLimit
	{
		// Token: 0x060087B8 RID: 34744 RVA: 0x0022CA98 File Offset: 0x0022AC98
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603940, XrefRangeEnd = 603943, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe void OpenUserManual()
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_OpenUserManual_Private_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x060087B9 RID: 34745 RVA: 0x0022CADC File Offset: 0x0022ACDC
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603943, XrefRangeEnd = 603946, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe void OpenScriptReference()
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_OpenScriptReference_Private_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x060087BA RID: 34746 RVA: 0x0022CB20 File Offset: 0x0022AD20
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603946, XrefRangeEnd = 603949, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe void SupportGroup()
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_SupportGroup_Private_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x060087BB RID: 34747 RVA: 0x0022CB64 File Offset: 0x0022AD64
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603949, XrefRangeEnd = 603952, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe void ASThread()
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_ASThread_Private_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x060087BC RID: 34748 RVA: 0x0022CBA8 File Offset: 0x0022ADA8
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603952, XrefRangeEnd = 603954, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe void SetSpline(Il2CppStructArray<Keyframe> keyframes)
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(keyframes);
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_SetSpline_Public_Void_Il2CppStructArray_1_Keyframe_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			}
		}

		// Token: 0x060087BD RID: 34749 RVA: 0x0022CC04 File Offset: 0x0022AE04
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603954, XrefRangeEnd = 603957, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe override Quaternion LimitRotation(Quaternion rotation)
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref rotation;
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(IL2CPP.il2cpp_object_get_virtual_method(IL2CPP.Il2CppObjectBaseToPtr(this), RotationLimitSpline.NativeMethodInfoPtr_LimitRotation_Protected_Virtual_Quaternion_Quaternion_0), IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return *IL2CPP.il2cpp_object_unbox(intPtr);
			}
		}

		// Token: 0x060087BE RID: 34750 RVA: 0x0022CC74 File Offset: 0x0022AE74
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 603972, RefRangeEnd = 603973, XrefRangeStart = 603957, XrefRangeEnd = 603972, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe Quaternion LimitSwing(Quaternion rotation)
		{
			IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref rotation;
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr_LimitSwing_Public_Quaternion_Quaternion_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return *IL2CPP.il2cpp_object_unbox(intPtr);
			}
		}

		// Token: 0x060087BF RID: 34751 RVA: 0x0022CCD8 File Offset: 0x0022AED8
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 603973, XrefRangeEnd = 603974, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe RotationLimitSpline()
			: this(IL2CPP.il2cpp_object_new(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr))
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(RotationLimitSpline.NativeMethodInfoPtr__ctor_Public_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x060087C0 RID: 34752 RVA: 0x0022CD24 File Offset: 0x0022AF24
		// Note: this type is marked as 'beforefieldinit'.
		static RotationLimitSpline()
		{
			Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr = IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "RootMotion.FinalIK", "RotationLimitSpline");
			IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr);
			RotationLimitSpline.NativeFieldInfoPtr_twistLimit = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, "twistLimit");
			RotationLimitSpline.NativeFieldInfoPtr_spline = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, "spline");
			RotationLimitSpline.NativeMethodInfoPtr_OpenUserManual_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673664);
			RotationLimitSpline.NativeMethodInfoPtr_OpenScriptReference_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673665);
			RotationLimitSpline.NativeMethodInfoPtr_SupportGroup_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673666);
			RotationLimitSpline.NativeMethodInfoPtr_ASThread_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673667);
			RotationLimitSpline.NativeMethodInfoPtr_SetSpline_Public_Void_Il2CppStructArray_1_Keyframe_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673668);
			RotationLimitSpline.NativeMethodInfoPtr_LimitRotation_Protected_Virtual_Quaternion_Quaternion_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673669);
			RotationLimitSpline.NativeMethodInfoPtr_LimitSwing_Public_Quaternion_Quaternion_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673670);
			RotationLimitSpline.NativeMethodInfoPtr__ctor_Public_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100673671);
		}

		// Token: 0x060087C1 RID: 34753 RVA: 0x0022B5E0 File Offset: 0x002297E0
		public RotationLimitSpline(IntPtr pointer)
			: base(pointer)
		{
		}

		// Token: 0x17002E37 RID: 11831
		// (get) Token: 0x060087C2 RID: 34754 RVA: 0x0022CE1C File Offset: 0x0022B01C
		// (set) Token: 0x060087C3 RID: 34755 RVA: 0x0022CE44 File Offset: 0x0022B044
		public unsafe float twistLimit
		{
			get
			{
				IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(RotationLimitSpline.NativeFieldInfoPtr_twistLimit);
				return *intPtr;
			}
			set
			{
				*(IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(RotationLimitSpline.NativeFieldInfoPtr_twistLimit)) = value;
			}
		}

		// Token: 0x17002E38 RID: 11832
		// (get) Token: 0x060087C4 RID: 34756 RVA: 0x0022CE68 File Offset: 0x0022B068
		// (set) Token: 0x060087C5 RID: 34757 RVA: 0x0022CE9C File Offset: 0x0022B09C
		public unsafe AnimationCurve spline
		{
			get
			{
				IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(RotationLimitSpline.NativeFieldInfoPtr_spline);
				IntPtr intPtr2 = *intPtr;
				return (intPtr2 != 0) ? new AnimationCurve(intPtr2) : null;
			}
			set
			{
				IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
				IL2CPP.il2cpp_gc_wbarrier_set_field(intPtr, intPtr + (IntPtr)IL2CPP.il2cpp_field_get_offset(RotationLimitSpline.NativeFieldInfoPtr_spline), IL2CPP.Il2CppObjectBaseToPtr(value));
			}
		}

		// Token: 0x04005A9F RID: 23199
		private static readonly IntPtr NativeFieldInfoPtr_twistLimit;

		// Token: 0x04005AA0 RID: 23200
		private static readonly IntPtr NativeFieldInfoPtr_spline;

		// Token: 0x04005AA1 RID: 23201
		private static readonly IntPtr NativeMethodInfoPtr_OpenUserManual_Private_Void_0;

		// Token: 0x04005AA2 RID: 23202
		private static readonly IntPtr NativeMethodInfoPtr_OpenScriptReference_Private_Void_0;

		// Token: 0x04005AA3 RID: 23203
		private static readonly IntPtr NativeMethodInfoPtr_SupportGroup_Private_Void_0;

		// Token: 0x04005AA4 RID: 23204
		private static readonly IntPtr NativeMethodInfoPtr_ASThread_Private_Void_0;

		// Token: 0x04005AA5 RID: 23205
		private static readonly IntPtr NativeMethodInfoPtr_SetSpline_Public_Void_Il2CppStructArray_1_Keyframe_0;

		// Token: 0x04005AA6 RID: 23206
		private static readonly IntPtr NativeMethodInfoPtr_LimitRotation_Protected_Virtual_Quaternion_Quaternion_0;

		// Token: 0x04005AA7 RID: 23207
		private static readonly IntPtr NativeMethodInfoPtr_LimitSwing_Public_Quaternion_Quaternion_0;

		// Token: 0x04005AA8 RID: 23208
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_0;
	}
}
