using System;
using System.Runtime.InteropServices;
using Il2CppInterop.Common.Attributes;
using Il2CppInterop.Runtime;
using Il2CppSystem;

namespace MTAssets.UltimateLODSystem.MeshSimplifier.Internal
{
	// Token: 0x02000634 RID: 1588
	[StructLayout(LayoutKind.Explicit)]
	public struct Vertex
	{
		// Token: 0x0600A1D3 RID: 41427 RVA: 0x00299388 File Offset: 0x00297588
		[CallerCount(0)]
		public unsafe Vertex(int index, Vector3d p)
		{
			IntPtr* ptr;
			checked
			{
				ptr = stackalloc IntPtr[unchecked((UIntPtr)2) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref index;
			}
			ptr[checked(unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)) / (UIntPtr)sizeof(IntPtr)] = ref p;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Vertex.NativeMethodInfoPtr__ctor_Public_Void_Int32_Vector3d_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
		}

		// Token: 0x0600A1D4 RID: 41428 RVA: 0x002993E0 File Offset: 0x002975E0
		[CallerCount(54)]
		[CachedScanResults(RefRangeStart = 22303, RefRangeEnd = 22357, XrefRangeStart = 22303, XrefRangeEnd = 22357, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe override int GetHashCode()
		{
			IntPtr* ptr = null;
			IntPtr intPtr2;
			IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Vertex.NativeMethodInfoPtr_GetHashCode_Public_Virtual_Int32_0, ref this, (void**)ptr, ref intPtr2);
			Il2CppException.RaiseExceptionIfNecessary(intPtr2);
			return *IL2CPP.il2cpp_object_unbox(intPtr);
		}

		// Token: 0x0600A1D5 RID: 41429 RVA: 0x00299424 File Offset: 0x00297624
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 626430, XrefRangeEnd = 626433, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
		public unsafe override bool Equals(Object obj)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = IL2CPP.Il2CppObjectBaseToPtr(obj);
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Boolean_Object_0, ref this, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return *IL2CPP.il2cpp_object_unbox(intPtr);
			}
		}

		// Token: 0x0600A1D6 RID: 41430 RVA: 0x0029947C File Offset: 0x0029767C
		[CallerCount(0)]
		public unsafe bool Equals(Vertex other)
		{
			checked
			{
				IntPtr* ptr = stackalloc IntPtr[unchecked((UIntPtr)1) * (UIntPtr)sizeof(IntPtr)];
				*ptr = ref other;
				IntPtr intPtr2;
				IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Final_New_Boolean_Vertex_0, ref this, (void**)ptr, ref intPtr2);
				Il2CppException.RaiseExceptionIfNecessary(intPtr2);
				return *IL2CPP.il2cpp_object_unbox(intPtr);
			}
		}

		// Token: 0x0600A1D7 RID: 41431 RVA: 0x002994D0 File Offset: 0x002976D0
		// Note: this type is marked as 'beforefieldinit'.
		static Vertex()
		{
			Il2CppClassPointerStore<Vertex>.NativeClassPtr = IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "MTAssets.UltimateLODSystem.MeshSimplifier.Internal", "Vertex");
			IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<Vertex>.NativeClassPtr);
			Vertex.NativeFieldInfoPtr_index = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "index");
			Vertex.NativeFieldInfoPtr_p = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "p");
			Vertex.NativeFieldInfoPtr_tstart = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "tstart");
			Vertex.NativeFieldInfoPtr_tcount = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "tcount");
			Vertex.NativeFieldInfoPtr_q = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "q");
			Vertex.NativeFieldInfoPtr_borderEdge = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "borderEdge");
			Vertex.NativeFieldInfoPtr_uvSeamEdge = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "uvSeamEdge");
			Vertex.NativeFieldInfoPtr_uvFoldoverEdge = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<Vertex>.NativeClassPtr, "uvFoldoverEdge");
			Vertex.NativeMethodInfoPtr__ctor_Public_Void_Int32_Vector3d_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100675859);
			Vertex.NativeMethodInfoPtr_GetHashCode_Public_Virtual_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100675860);
			Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Boolean_Object_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100675861);
			Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Final_New_Boolean_Vertex_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100675862);
		}

		// Token: 0x0600A1D8 RID: 41432 RVA: 0x002995F0 File Offset: 0x002977F0
		public Object BoxIl2CppObject()
		{
			return new Object(IL2CPP.il2cpp_value_box(Il2CppClassPointerStore<Vertex>.NativeClassPtr, ref this));
		}

		// Token: 0x04006CCB RID: 27851
		private static readonly IntPtr NativeFieldInfoPtr_index;

		// Token: 0x04006CCC RID: 27852
		private static readonly IntPtr NativeFieldInfoPtr_p;

		// Token: 0x04006CCD RID: 27853
		private static readonly IntPtr NativeFieldInfoPtr_tstart;

		// Token: 0x04006CCE RID: 27854
		private static readonly IntPtr NativeFieldInfoPtr_tcount;

		// Token: 0x04006CCF RID: 27855
		private static readonly IntPtr NativeFieldInfoPtr_q;

		// Token: 0x04006CD0 RID: 27856
		private static readonly IntPtr NativeFieldInfoPtr_borderEdge;

		// Token: 0x04006CD1 RID: 27857
		private static readonly IntPtr NativeFieldInfoPtr_uvSeamEdge;

		// Token: 0x04006CD2 RID: 27858
		private static readonly IntPtr NativeFieldInfoPtr_uvFoldoverEdge;

		// Token: 0x04006CD3 RID: 27859
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_Int32_Vector3d_0;

		// Token: 0x04006CD4 RID: 27860
		private static readonly IntPtr NativeMethodInfoPtr_GetHashCode_Public_Virtual_Int32_0;

		// Token: 0x04006CD5 RID: 27861
		private static readonly IntPtr NativeMethodInfoPtr_Equals_Public_Virtual_Boolean_Object_0;

		// Token: 0x04006CD6 RID: 27862
		private static readonly IntPtr NativeMethodInfoPtr_Equals_Public_Virtual_Final_New_Boolean_Vertex_0;

		// Token: 0x04006CD7 RID: 27863
		[FieldOffset(0)]
		public int index;

		// Token: 0x04006CD8 RID: 27864
		[FieldOffset(8)]
		public Vector3d p;

		// Token: 0x04006CD9 RID: 27865
		[FieldOffset(32)]
		public int tstart;

		// Token: 0x04006CDA RID: 27866
		[FieldOffset(36)]
		public int tcount;

		// Token: 0x04006CDB RID: 27867
		[FieldOffset(40)]
		public SymmetricMatrix q;

		// Token: 0x04006CDC RID: 27868
		[FieldOffset(120)]
		[MarshalAs(UnmanagedType.U1)]
		public bool borderEdge;

		// Token: 0x04006CDD RID: 27869
		[FieldOffset(121)]
		[MarshalAs(UnmanagedType.U1)]
		public bool uvSeamEdge;

		// Token: 0x04006CDE RID: 27870
		[FieldOffset(122)]
		[MarshalAs(UnmanagedType.U1)]
		public bool uvFoldoverEdge;
	}
}
