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

namespace RootMotion
{
	// Token: 0x020003A9 RID: 937
	public class Hierarchy : Il2CppSystem.Object
	{
		// Token: 0x06007568 RID: 30056 RVA: 0x001DEE54 File Offset: 0x001DD054
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 590713, RefRangeEnd = 590714, XrefRangeStart = 590711, XrefRangeEnd = 590713, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static bool HierarchyIsValid(Il2CppReferenceArray<Transform> bones)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(bones);
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_HierarchyIsValid_Public_Static_Boolean_Il2CppReferenceArray_1_Transform_0, 0, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return *IL2CPP.il2cpp_object_unbox(intPtr);
			}
		}

		// Token: 0x06007569 RID: 30057 RVA: 0x001DEEAC File Offset: 0x001DD0AC
		[CallerCount(3)]
		[CachedScanResults(RefRangeStart = 590720, RefRangeEnd = 590723, XrefRangeStart = 590714, XrefRangeEnd = 590720, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static UnityEngine.Object ContainsDuplicate(Il2CppReferenceArray<UnityEngine.Object> objects)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(objects);
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_ContainsDuplicate_Public_Static_Object_Il2CppReferenceArray_1_Object_0, 0, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				IntPtr intPtr3 = intPtr;
				return (intPtr3 != 0) ? new UnityEngine.Object(intPtr3) : null;
			}
		}

		// Token: 0x0600756A RID: 30058 RVA: 0x001DEF0C File Offset: 0x001DD10C
		[CallerCount(12)]
		[CachedScanResults(RefRangeStart = 590740, RefRangeEnd = 590752, XrefRangeStart = 590723, XrefRangeEnd = 590740, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static bool IsAncestor(Transform transform, Transform ancestor)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(ancestor);
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_IsAncestor_Public_Static_Boolean_Transform_Transform_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600756B RID: 30059 RVA: 0x001DEF7C File Offset: 0x001DD17C
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 590764, RefRangeEnd = 590766, XrefRangeStart = 590752, XrefRangeEnd = 590764, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static bool ContainsChild(Transform transform, Transform child)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(child);
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_ContainsChild_Public_Static_Boolean_Transform_Transform_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600756C RID: 30060 RVA: 0x001DEFEC File Offset: 0x001DD1EC
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 590791, RefRangeEnd = 590792, XrefRangeStart = 590766, XrefRangeEnd = 590791, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static void AddAncestors(Transform transform, Transform blocker, ref Il2CppReferenceArray<Transform> array)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)3) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(blocker);
			ref IntPtr ptr2 = ref ptr[checked(unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)];
			IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtr(array);
			ptr2 = &intPtr;
			IntPtr intPtr3;
			IntPtr intPtr2 = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_AddAncestors_Public_Static_Void_Transform_Transform_byref_Il2CppReferenceArray_1_Transform_0, 0, (void**)ptr, ref intPtr3);
			Il2CppException.RaiseExceptionIfNecessary(intPtr3);
			IntPtr intPtr4 = intPtr;
			array = ((intPtr4 == 0) ? null : new Il2CppReferenceArray(intPtr4));
		}

		// Token: 0x0600756D RID: 30061 RVA: 0x001DF088 File Offset: 0x001DD288
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 590805, RefRangeEnd = 590806, XrefRangeStart = 590792, XrefRangeEnd = 590805, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static Transform GetAncestor(Transform transform, int minChildCount)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref minChildCount;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_GetAncestor_Public_Static_Transform_Transform_Int32_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			IntPtr intPtr3 = intPtr;
			return (intPtr3 != 0) ? new Transform(intPtr3) : null;
		}

		// Token: 0x0600756E RID: 30062 RVA: 0x001DF0FC File Offset: 0x001DD2FC
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 590826, RefRangeEnd = 590828, XrefRangeStart = 590806, XrefRangeEnd = 590826, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static Transform GetFirstCommonAncestor(Transform t1, Transform t2)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(t1);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(t2);
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Transform_Transform_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			IntPtr intPtr3 = intPtr;
			return (intPtr3 != 0) ? new Transform(intPtr3) : null;
		}

		// Token: 0x0600756F RID: 30063 RVA: 0x001DF174 File Offset: 0x001DD374
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 590828, XrefRangeEnd = 590837, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static Transform GetFirstCommonAncestor(Il2CppReferenceArray<Transform> transforms)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transforms);
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Il2CppReferenceArray_1_Transform_0, 0, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				IntPtr intPtr3 = intPtr;
				return (intPtr3 != 0) ? new Transform(intPtr3) : null;
			}
		}

		// Token: 0x06007570 RID: 30064 RVA: 0x001DF1D4 File Offset: 0x001DD3D4
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 590852, RefRangeEnd = 590853, XrefRangeStart = 590837, XrefRangeEnd = 590852, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static Transform GetFirstCommonAncestorRecursive(Transform transform, Il2CppReferenceArray<Transform> transforms)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(transforms);
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestorRecursive_Public_Static_Transform_Transform_Il2CppReferenceArray_1_Transform_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			IntPtr intPtr3 = intPtr;
			return (intPtr3 != 0) ? new Transform(intPtr3) : null;
		}

		// Token: 0x06007571 RID: 30065 RVA: 0x001DF24C File Offset: 0x001DD44C
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 590876, RefRangeEnd = 590878, XrefRangeStart = 590853, XrefRangeEnd = 590876, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe static bool IsCommonAncestor(Transform transform, Il2CppReferenceArray<Transform> transforms)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(transform);
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = IL2CPP.Il2CppObjectBaseToPtr(transforms);
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr_IsCommonAncestor_Public_Static_Boolean_Transform_Il2CppReferenceArray_1_Transform_0, 0, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x06007572 RID: 30066 RVA: 0x001DF2BC File Offset: 0x001DD4BC
		[CallerCount(1642)]
		[CachedScanResults(RefRangeStart = 7417, RefRangeEnd = 9059, XrefRangeStart = 7417, XrefRangeEnd = 9059, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe Hierarchy()
			: this(IL2CPP.il2cpp_object_new(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr))
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Hierarchy.NativeMethodInfoPtr__ctor_Public_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x06007573 RID: 30067 RVA: 0x001DF308 File Offset: 0x001DD508
		// Note: this type is marked as 'beforefieldinit'.
		static Hierarchy()
		{
			Il2CppClassPointerStore<Hierarchy>.NativeClassPtr = IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "RootMotion", "Hierarchy");
			IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr);
			Hierarchy.NativeMethodInfoPtr_HierarchyIsValid_Public_Static_Boolean_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672143);
			Hierarchy.NativeMethodInfoPtr_ContainsDuplicate_Public_Static_Object_Il2CppReferenceArray_1_Object_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672144);
			Hierarchy.NativeMethodInfoPtr_IsAncestor_Public_Static_Boolean_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672145);
			Hierarchy.NativeMethodInfoPtr_ContainsChild_Public_Static_Boolean_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672146);
			Hierarchy.NativeMethodInfoPtr_AddAncestors_Public_Static_Void_Transform_Transform_byref_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672147);
			Hierarchy.NativeMethodInfoPtr_GetAncestor_Public_Static_Transform_Transform_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672148);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672149);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672150);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestorRecursive_Public_Static_Transform_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672151);
			Hierarchy.NativeMethodInfoPtr_IsCommonAncestor_Public_Static_Boolean_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672152);
			Hierarchy.NativeMethodInfoPtr__ctor_Public_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672153);
		}

		// Token: 0x06007574 RID: 30068 RVA: 0x0000A688 File Offset: 0x00008888
		public Hierarchy(IntPtr pointer)
			: base(pointer)
		{
		}

		// Token: 0x04004ECB RID: 20171
		private static readonly IntPtr NativeMethodInfoPtr_HierarchyIsValid_Public_Static_Boolean_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04004ECC RID: 20172
		private static readonly IntPtr NativeMethodInfoPtr_ContainsDuplicate_Public_Static_Object_Il2CppReferenceArray_1_Object_0;

		// Token: 0x04004ECD RID: 20173
		private static readonly IntPtr NativeMethodInfoPtr_IsAncestor_Public_Static_Boolean_Transform_Transform_0;

		// Token: 0x04004ECE RID: 20174
		private static readonly IntPtr NativeMethodInfoPtr_ContainsChild_Public_Static_Boolean_Transform_Transform_0;

		// Token: 0x04004ECF RID: 20175
		private static readonly IntPtr NativeMethodInfoPtr_AddAncestors_Public_Static_Void_Transform_Transform_byref_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04004ED0 RID: 20176
		private static readonly IntPtr NativeMethodInfoPtr_GetAncestor_Public_Static_Transform_Transform_Int32_0;

		// Token: 0x04004ED1 RID: 20177
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Transform_Transform_0;

		// Token: 0x04004ED2 RID: 20178
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04004ED3 RID: 20179
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestorRecursive_Public_Static_Transform_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04004ED4 RID: 20180
		private static readonly IntPtr NativeMethodInfoPtr_IsCommonAncestor_Public_Static_Boolean_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04004ED5 RID: 20181
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_0;
	}
}
