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

namespace MTAssets.UltimateLODSystem.MeshSimplifier.Internal
{
	// Token: 0x0200068C RID: 1676
	[StructLayout(2)]
	public struct Vertex
	{
		// Token: 0x0600AA26 RID: 43558 RVA: 0x002BC0C4 File Offset: 0x002BA2C4
		[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: 0x0600AA27 RID: 43559 RVA: 0x002BC11C File Offset: 0x002BA31C
		[CallerCount(55)]
		[CachedScanResults(RefRangeStart = 22219, RefRangeEnd = 22274, XrefRangeStart = 22219, XrefRangeEnd = 22274, 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: 0x0600AA28 RID: 43560 RVA: 0x002BC160 File Offset: 0x002BA360
		[CallerCount(0)]
		[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 658731, XrefRangeEnd = 658734, 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: 0x0600AA29 RID: 43561 RVA: 0x002BC1B8 File Offset: 0x002BA3B8
		[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: 0x0600AA2A RID: 43562 RVA: 0x002BC20C File Offset: 0x002BA40C
		// 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, 100676572);
			Vertex.NativeMethodInfoPtr_GetHashCode_Public_Virtual_Int32_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100676573);
			Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Boolean_Object_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100676574);
			Vertex.NativeMethodInfoPtr_Equals_Public_Virtual_Final_New_Boolean_Vertex_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<Vertex>.NativeClassPtr, 100676575);
		}

		// Token: 0x0600AA2B RID: 43563 RVA: 0x002BC32C File Offset: 0x002BA52C
		public Object BoxIl2CppObject()
		{
			return new Object(IL2CPP.il2cpp_value_box(Il2CppClassPointerStore<Vertex>.NativeClassPtr, ref this));
		}

		// Token: 0x04007274 RID: 29300
		private static readonly IntPtr NativeFieldInfoPtr_index;

		// Token: 0x04007275 RID: 29301
		private static readonly IntPtr NativeFieldInfoPtr_p;

		// Token: 0x04007276 RID: 29302
		private static readonly IntPtr NativeFieldInfoPtr_tstart;

		// Token: 0x04007277 RID: 29303
		private static readonly IntPtr NativeFieldInfoPtr_tcount;

		// Token: 0x04007278 RID: 29304
		private static readonly IntPtr NativeFieldInfoPtr_q;

		// Token: 0x04007279 RID: 29305
		private static readonly IntPtr NativeFieldInfoPtr_borderEdge;

		// Token: 0x0400727A RID: 29306
		private static readonly IntPtr NativeFieldInfoPtr_uvSeamEdge;

		// Token: 0x0400727B RID: 29307
		private static readonly IntPtr NativeFieldInfoPtr_uvFoldoverEdge;

		// Token: 0x0400727C RID: 29308
		private static readonly IntPtr NativeMethodInfoPtr__ctor_Public_Void_Int32_Vector3d_0;

		// Token: 0x0400727D RID: 29309
		private static readonly IntPtr NativeMethodInfoPtr_GetHashCode_Public_Virtual_Int32_0;

		// Token: 0x0400727E RID: 29310
		private static readonly IntPtr NativeMethodInfoPtr_Equals_Public_Virtual_Boolean_Object_0;

		// Token: 0x0400727F RID: 29311
		private static readonly IntPtr NativeMethodInfoPtr_Equals_Public_Virtual_Final_New_Boolean_Vertex_0;

		// Token: 0x04007280 RID: 29312
		[FieldOffset(0)]
		public int index;

		// Token: 0x04007281 RID: 29313
		[FieldOffset(8)]
		public Vector3d p;

		// Token: 0x04007282 RID: 29314
		[FieldOffset(32)]
		public int tstart;

		// Token: 0x04007283 RID: 29315
		[FieldOffset(36)]
		public int tcount;

		// Token: 0x04007284 RID: 29316
		[FieldOffset(40)]
		public SymmetricMatrix q;

		// Token: 0x04007285 RID: 29317
		[FieldOffset(120)]
		[MarshalAs(4)]
		public bool borderEdge;

		// Token: 0x04007286 RID: 29318
		[FieldOffset(121)]
		[MarshalAs(4)]
		public bool uvSeamEdge;

		// Token: 0x04007287 RID: 29319
		[FieldOffset(122)]
		[MarshalAs(4)]
		public bool uvFoldoverEdge;
	}
}
