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

namespace RootMotion
{
	// Token: 0x02000401 RID: 1025
	public class Hierarchy : Il2CppSystem.Object
	{
		// Token: 0x06007DBB RID: 32187 RVA: 0x00201B90 File Offset: 0x001FFD90
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 623018, RefRangeEnd = 623019, XrefRangeStart = 623016, XrefRangeEnd = 623018, 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: 0x06007DBC RID: 32188 RVA: 0x00201BE8 File Offset: 0x001FFDE8
		[CallerCount(3)]
		[CachedScanResults(RefRangeStart = 623025, RefRangeEnd = 623028, XrefRangeStart = 623019, XrefRangeEnd = 623025, 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: 0x06007DBD RID: 32189 RVA: 0x00201C48 File Offset: 0x001FFE48
		[CallerCount(12)]
		[CachedScanResults(RefRangeStart = 623045, RefRangeEnd = 623057, XrefRangeStart = 623028, XrefRangeEnd = 623045, 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: 0x06007DBE RID: 32190 RVA: 0x00201CB8 File Offset: 0x001FFEB8
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 623069, RefRangeEnd = 623071, XrefRangeStart = 623057, XrefRangeEnd = 623069, 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: 0x06007DBF RID: 32191 RVA: 0x00201D28 File Offset: 0x001FFF28
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 623096, RefRangeEnd = 623097, XrefRangeStart = 623071, XrefRangeEnd = 623096, 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: 0x06007DC0 RID: 32192 RVA: 0x00201DC4 File Offset: 0x001FFFC4
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 623110, RefRangeEnd = 623111, XrefRangeStart = 623097, XrefRangeEnd = 623110, 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: 0x06007DC1 RID: 32193 RVA: 0x00201E38 File Offset: 0x00200038
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 623131, RefRangeEnd = 623133, XrefRangeStart = 623111, XrefRangeEnd = 623131, 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: 0x06007DC2 RID: 32194 RVA: 0x00201EB0 File Offset: 0x002000B0
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 623133, XrefRangeEnd = 623142, 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: 0x06007DC3 RID: 32195 RVA: 0x00201F10 File Offset: 0x00200110
		[CallerCount(1)]
		[CachedScanResults(RefRangeStart = 623157, RefRangeEnd = 623158, XrefRangeStart = 623142, XrefRangeEnd = 623157, 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: 0x06007DC4 RID: 32196 RVA: 0x00201F88 File Offset: 0x00200188
		[CallerCount(2)]
		[CachedScanResults(RefRangeStart = 623181, RefRangeEnd = 623183, XrefRangeStart = 623158, XrefRangeEnd = 623181, 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: 0x06007DC5 RID: 32197 RVA: 0x00201FF8 File Offset: 0x002001F8
		[CallerCount(1664)]
		[CachedScanResults(RefRangeStart = 7711, RefRangeEnd = 9375, XrefRangeStart = 7711, XrefRangeEnd = 9375, 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: 0x06007DC6 RID: 32198 RVA: 0x00202044 File Offset: 0x00200244
		// 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, 100672856);
			Hierarchy.NativeMethodInfoPtr_ContainsDuplicate_Public_Static_Object_Il2CppReferenceArray_1_Object_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672857);
			Hierarchy.NativeMethodInfoPtr_IsAncestor_Public_Static_Boolean_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672858);
			Hierarchy.NativeMethodInfoPtr_ContainsChild_Public_Static_Boolean_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672859);
			Hierarchy.NativeMethodInfoPtr_AddAncestors_Public_Static_Void_Transform_Transform_byref_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672860);
			Hierarchy.NativeMethodInfoPtr_GetAncestor_Public_Static_Transform_Transform_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672861);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Transform_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672862);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672863);
			Hierarchy.NativeMethodInfoPtr_GetFirstCommonAncestorRecursive_Public_Static_Transform_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672864);
			Hierarchy.NativeMethodInfoPtr_IsCommonAncestor_Public_Static_Boolean_Transform_Il2CppReferenceArray_1_Transform_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672865);
			Hierarchy.NativeMethodInfoPtr__ctor_Public_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Hierarchy>.NativeClassPtr, 100672866);
		}

		// Token: 0x06007DC7 RID: 32199 RVA: 0x0000A74C File Offset: 0x0000894C
		public Hierarchy(IntPtr pointer)
			: base(pointer)
		{
		}

		// Token: 0x04005474 RID: 21620
		private static readonly IntPtr NativeMethodInfoPtr_HierarchyIsValid_Public_Static_Boolean_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04005475 RID: 21621
		private static readonly IntPtr NativeMethodInfoPtr_ContainsDuplicate_Public_Static_Object_Il2CppReferenceArray_1_Object_0;

		// Token: 0x04005476 RID: 21622
		private static readonly IntPtr NativeMethodInfoPtr_IsAncestor_Public_Static_Boolean_Transform_Transform_0;

		// Token: 0x04005477 RID: 21623
		private static readonly IntPtr NativeMethodInfoPtr_ContainsChild_Public_Static_Boolean_Transform_Transform_0;

		// Token: 0x04005478 RID: 21624
		private static readonly IntPtr NativeMethodInfoPtr_AddAncestors_Public_Static_Void_Transform_Transform_byref_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x04005479 RID: 21625
		private static readonly IntPtr NativeMethodInfoPtr_GetAncestor_Public_Static_Transform_Transform_Int32_0;

		// Token: 0x0400547A RID: 21626
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Transform_Transform_0;

		// Token: 0x0400547B RID: 21627
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestor_Public_Static_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x0400547C RID: 21628
		private static readonly IntPtr NativeMethodInfoPtr_GetFirstCommonAncestorRecursive_Public_Static_Transform_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x0400547D RID: 21629
		private static readonly IntPtr NativeMethodInfoPtr_IsCommonAncestor_Public_Static_Boolean_Transform_Il2CppReferenceArray_1_Transform_0;

		// Token: 0x0400547E RID: 21630
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_0;
	}
}
