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

namespace RootMotion.FinalIK
{
	// Token: 0x020004CD RID: 1229
	public class RotationLimitSpline : RotationLimit
	{
		// Token: 0x0600900B RID: 36875 RVA: 0x0024F7D4 File Offset: 0x0024D9D4
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636249, XrefRangeEnd = 636252, 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: 0x0600900C RID: 36876 RVA: 0x0024F818 File Offset: 0x0024DA18
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636252, XrefRangeEnd = 636255, 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: 0x0600900D RID: 36877 RVA: 0x0024F85C File Offset: 0x0024DA5C
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636255, XrefRangeEnd = 636258, 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: 0x0600900E RID: 36878 RVA: 0x0024F8A0 File Offset: 0x0024DAA0
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636258, XrefRangeEnd = 636261, 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: 0x0600900F RID: 36879 RVA: 0x0024F8E4 File Offset: 0x0024DAE4
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636261, XrefRangeEnd = 636263, 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: 0x06009010 RID: 36880 RVA: 0x0024F940 File Offset: 0x0024DB40
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636263, XrefRangeEnd = 636265, 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: 0x06009011 RID: 36881 RVA: 0x0024F9B0 File Offset: 0x0024DBB0
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 636281, RefRangeEnd = 636282, XrefRangeStart = 636265, XrefRangeEnd = 636281, 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: 0x06009012 RID: 36882 RVA: 0x0024FA14 File Offset: 0x0024DC14
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 636282, XrefRangeEnd = 636284, 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: 0x06009013 RID: 36883 RVA: 0x0024FA60 File Offset: 0x0024DC60
		// 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, 100674377);
			RotationLimitSpline.NativeMethodInfoPtr_OpenScriptReference_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674378);
			RotationLimitSpline.NativeMethodInfoPtr_SupportGroup_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674379);
			RotationLimitSpline.NativeMethodInfoPtr_ASThread_Private_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674380);
			RotationLimitSpline.NativeMethodInfoPtr_SetSpline_Public_Void_Il2CppStructArray_1_Keyframe_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674381);
			RotationLimitSpline.NativeMethodInfoPtr_LimitRotation_Protected_Virtual_Quaternion_Quaternion_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674382);
			RotationLimitSpline.NativeMethodInfoPtr_LimitSwing_Public_Quaternion_Quaternion_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674383);
			RotationLimitSpline.NativeMethodInfoPtr__ctor_Public_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<RotationLimitSpline>.NativeClassPtr, 100674384);
		}

		// Token: 0x06009014 RID: 36884 RVA: 0x0024E31C File Offset: 0x0024C51C
		public RotationLimitSpline(IntPtr pointer)
			: base(pointer)
		{
		}

		// Token: 0x170030D2 RID: 12498
		// (get) Token: 0x06009015 RID: 36885 RVA: 0x0024FB58 File Offset: 0x0024DD58
		// (set) Token: 0x06009016 RID: 36886 RVA: 0x0024FB80 File Offset: 0x0024DD80
		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: 0x170030D3 RID: 12499
		// (get) Token: 0x06009017 RID: 36887 RVA: 0x0024FBA4 File Offset: 0x0024DDA4
		// (set) Token: 0x06009018 RID: 36888 RVA: 0x0024FBD8 File Offset: 0x0024DDD8
		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: 0x04006048 RID: 24648
		private static readonly IntPtr NativeFieldInfoPtr_twistLimit;

		// Token: 0x04006049 RID: 24649
		private static readonly IntPtr NativeFieldInfoPtr_spline;

		// Token: 0x0400604A RID: 24650
		private static readonly IntPtr NativeMethodInfoPtr_OpenUserManual_Private_Void_0;

		// Token: 0x0400604B RID: 24651
		private static readonly IntPtr NativeMethodInfoPtr_OpenScriptReference_Private_Void_0;

		// Token: 0x0400604C RID: 24652
		private static readonly IntPtr NativeMethodInfoPtr_SupportGroup_Private_Void_0;

		// Token: 0x0400604D RID: 24653
		private static readonly IntPtr NativeMethodInfoPtr_ASThread_Private_Void_0;

		// Token: 0x0400604E RID: 24654
		private static readonly IntPtr NativeMethodInfoPtr_SetSpline_Public_Void_Il2CppStructArray_1_Keyframe_0;

		// Token: 0x0400604F RID: 24655
		private static readonly IntPtr NativeMethodInfoPtr_LimitRotation_Protected_Virtual_Quaternion_Quaternion_0;

		// Token: 0x04006050 RID: 24656
		private static readonly IntPtr NativeMethodInfoPtr_LimitSwing_Public_Quaternion_Quaternion_0;

		// Token: 0x04006051 RID: 24657
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_0;
	}
}
