using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Cpp2IlInjected;
using UnityEngine;

namespace Obi
{
	// Token: 0x0200051E RID: 1310
	[Token(Token = "0x200051E")]
	public class ObiMeshTopology : ScriptableObject
	{
		// Token: 0x17000313 RID: 787
		// (get) Token: 0x06002DED RID: 11757 RVA: 0x00064B38 File Offset: 0x00062D38
		[Token(Token = "0x17000313")]
		public bool Initialized
		{
			[Token(Token = "0x6002DED")]
			[Address(RVA = "0x4C3B00", Offset = "0x4C2B00", VA = "0x1804C3B00")]
			get
			{
				return this.initialized;
			}
		}

		// Token: 0x17000314 RID: 788
		// (get) Token: 0x06002DEE RID: 11758 RVA: 0x00064B4C File Offset: 0x00062D4C
		[Token(Token = "0x17000314")]
		public IntPtr HalfEdgeMesh
		{
			[Token(Token = "0x6002DEE")]
			[Address(RVA = "0x33F2F0", Offset = "0x33E2F0", VA = "0x18033F2F0")]
			get
			{
				return this.halfEdgeMesh;
			}
		}

		// Token: 0x17000315 RID: 789
		// (get) Token: 0x06002DF0 RID: 11760 RVA: 0x00064BD8 File Offset: 0x00062DD8
		// (set) Token: 0x06002DEF RID: 11759 RVA: 0x00064B60 File Offset: 0x00062D60
		[Token(Token = "0x17000315")]
		public Mesh InputMesh
		{
			[Token(Token = "0x6002DF0")]
			[Address(RVA = "0x2EF530", Offset = "0x2EE530", VA = "0x1802EF530")]
			get
			{
				return this.input;
			}
			[Token(Token = "0x6002DEF")]
			[Address(RVA = "0x10A7150", Offset = "0x10A6150", VA = "0x1810A7150")]
			set
			{
				Mesh mesh = this.input;
				if (value != mesh)
				{
					this.initialized = false;
					Oni.Face[] array = new Oni.Face[0];
					this.heFaces = array;
					Oni.Vertex[] array2 = new Oni.Vertex[0];
					this.heVertices = array2;
					Oni.HalfEdge[] array3 = new Oni.HalfEdge[0];
					this.heHalfEdges = array3;
					Quaternion[] array4 = new Quaternion[0];
					this.heOrientations = array4;
					int[] array5 = new int[0];
					this.visualMap = array5;
					this.input = value;
				}
			}
		}

		// Token: 0x17000316 RID: 790
		// (get) Token: 0x06002DF1 RID: 11761 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000316")]
		public float MeshVolume
		{
			[Token(Token = "0x6002DF1")]
			[Address(RVA = "0x10A7140", Offset = "0x10A6140", VA = "0x1810A7140")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000317 RID: 791
		// (get) Token: 0x06002DF2 RID: 11762 RVA: 0x00064BEC File Offset: 0x00062DEC
		[Token(Token = "0x17000317")]
		public float MeshArea
		{
			[Token(Token = "0x6002DF2")]
			[Address(RVA = "0xC35320", Offset = "0xC34320", VA = "0x180C35320")]
			get
			{
				return this.meshInfo.area;
			}
		}

		// Token: 0x17000318 RID: 792
		// (get) Token: 0x06002DF3 RID: 11763 RVA: 0x00064C04 File Offset: 0x00062E04
		[Token(Token = "0x17000318")]
		public int VertexCount
		{
			[Token(Token = "0x6002DF3")]
			[Address(RVA = "0x4920C0", Offset = "0x4910C0", VA = "0x1804920C0")]
			get
			{
				return this.vertexCount;
			}
		}

		// Token: 0x17000319 RID: 793
		// (get) Token: 0x06002DF4 RID: 11764 RVA: 0x00064C18 File Offset: 0x00062E18
		[Token(Token = "0x17000319")]
		public int BorderEdgeCount
		{
			[Token(Token = "0x6002DF4")]
			[Address(RVA = "0x771930", Offset = "0x770930", VA = "0x180771930")]
			get
			{
				return this.meshInfo.borderEdgeCount;
			}
		}

		// Token: 0x1700031A RID: 794
		// (get) Token: 0x06002DF5 RID: 11765 RVA: 0x00064C30 File Offset: 0x00062E30
		[Token(Token = "0x1700031A")]
		public bool IsClosed
		{
			[Token(Token = "0x6002DF5")]
			[Address(RVA = "0x41C7C0", Offset = "0x41B7C0", VA = "0x18041C7C0")]
			get
			{
				return this.meshInfo.closed;
			}
		}

		// Token: 0x1700031B RID: 795
		// (get) Token: 0x06002DF6 RID: 11766 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x1700031B")]
		public bool IsModified
		{
			[Token(Token = "0x6002DF6")]
			[Address(RVA = "0x29A960", Offset = "0x299960", VA = "0x18029A960")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x1700031C RID: 796
		// (get) Token: 0x06002DF7 RID: 11767 RVA: 0x00064C48 File Offset: 0x00062E48
		[Token(Token = "0x1700031C")]
		public bool IsNonManifold
		{
			[Token(Token = "0x6002DF7")]
			[Address(RVA = "0x77D8A0", Offset = "0x77C8A0", VA = "0x18077D8A0")]
			get
			{
				return this.meshInfo.nonManifold;
			}
		}

		// Token: 0x06002DF8 RID: 11768 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DF8")]
		[Address(RVA = "0x10A6A90", Offset = "0x10A5A90", VA = "0x1810A6A90")]
		public void OnEnable()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DF9 RID: 11769 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DF9")]
		[Address(RVA = "0x10A5740", Offset = "0x10A4740", VA = "0x1810A5740")]
		public void CopyDataFrom(ObiMeshTopology source)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DFA RID: 11770 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DFA")]
		[Address(RVA = "0x10A6EA0", Offset = "0x10A5EA0", VA = "0x1810A6EA0")]
		public void SetVertexCapacity(int maxVertices, int maxVisualVertices)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DFB RID: 11771 RVA: 0x00064C60 File Offset: 0x00062E60
		[Token(Token = "0x6002DFB")]
		[Address(RVA = "0x10A6A80", Offset = "0x10A5A80", VA = "0x1810A6A80")]
		public void OnDisable()
		{
			Oni.DestroyHalfEdgeMesh(this.halfEdgeMesh);
		}

		// Token: 0x06002DFC RID: 11772 RVA: 0x00064C78 File Offset: 0x00062E78
		[Token(Token = "0x6002DFC")]
		[Address(RVA = "0x10A70E0", Offset = "0x10A60E0", VA = "0x1810A70E0")]
		public void UpdateVertexCount()
		{
			int num = Oni.GetVertexCount(this.halfEdgeMesh);
			this.vertexCount = num;
		}

		// Token: 0x06002DFD RID: 11773 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DFD")]
		[Address(RVA = "0x10A5BF0", Offset = "0x10A4BF0", VA = "0x1810A5BF0")]
		public void Generate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DFE RID: 11774 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DFE")]
		[Address(RVA = "0x10A6680", Offset = "0x10A5680", VA = "0x1810A6680")]
		public int GetHalfEdgeStartVertex(Oni.HalfEdge edge)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DFF RID: 11775 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DFF")]
		[Address(RVA = "0x10A61D0", Offset = "0x10A51D0", VA = "0x1810A61D0")]
		public float GetFaceArea(Oni.Face face)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E00 RID: 11776 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E00")]
		[Address(RVA = "0x10A6860", Offset = "0x10A5860", VA = "0x1810A6860")]
		public IEnumerable<Oni.Vertex> GetNeighbourVerticesEnumerator(Oni.Vertex vertex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E01 RID: 11777 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E01")]
		[Address(RVA = "0x10A6740", Offset = "0x10A5740", VA = "0x1810A6740")]
		public IEnumerable<Oni.HalfEdge> GetNeighbourEdgesEnumerator(Oni.Vertex vertex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E02 RID: 11778 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E02")]
		[Address(RVA = "0x10A67D0", Offset = "0x10A57D0", VA = "0x1810A67D0")]
		public IEnumerable<Oni.Face> GetNeighbourFacesEnumerator(Oni.Vertex vertex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E03 RID: 11779 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E03")]
		[Address(RVA = "0x10A6510", Offset = "0x10A5510", VA = "0x1810A6510")]
		public int[] GetFaceEdges(Oni.Face face)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E04 RID: 11780 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E04")]
		[Address(RVA = "0x10A5FD0", Offset = "0x10A4FD0", VA = "0x1810A5FD0")]
		public List<ObiMeshTopology.HEEdge> GetEdgeList()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E05 RID: 11781 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002E05")]
		[Address(RVA = "0x10A68F0", Offset = "0x10A58F0", VA = "0x1810A68F0")]
		public bool IsSplit(int halfEdgeIndex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002E06 RID: 11782 RVA: 0x00064C98 File Offset: 0x00062E98
		[Token(Token = "0x6002E06")]
		[Address(RVA = "0x10A7100", Offset = "0x10A6100", VA = "0x1810A7100")]
		public ObiMeshTopology()
		{
			float z = Vector3.one.z;
			this.scale.z = z;
			base..ctor();
		}

		// Token: 0x0400368C RID: 13964
		[Cpp2IlInjected.FieldOffset(Offset = "0x18")]
		[Token(Token = "0x400368C")]
		public Mesh input;

		// Token: 0x0400368D RID: 13965
		[Cpp2IlInjected.FieldOffset(Offset = "0x20")]
		[Token(Token = "0x400368D")]
		public Vector3 scale;

		// Token: 0x0400368E RID: 13966
		[Cpp2IlInjected.FieldOffset(Offset = "0x2C")]
		[Token(Token = "0x400368E")]
		[HideInInspector]
		public bool initialized;

		// Token: 0x0400368F RID: 13967
		[Cpp2IlInjected.FieldOffset(Offset = "0x30")]
		[Token(Token = "0x400368F")]
		private IntPtr halfEdgeMesh;

		// Token: 0x04003690 RID: 13968
		[Cpp2IlInjected.FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003690")]
		[SerializeField]
		[HideInInspector]
		protected int vertexCount;

		// Token: 0x04003691 RID: 13969
		[Cpp2IlInjected.FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003691")]
		[HideInInspector]
		public Oni.Face[] heFaces;

		// Token: 0x04003692 RID: 13970
		[Cpp2IlInjected.FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003692")]
		[HideInInspector]
		public Oni.HalfEdge[] heHalfEdges;

		// Token: 0x04003693 RID: 13971
		[Cpp2IlInjected.FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4003693")]
		[HideInInspector]
		public Oni.Vertex[] heVertices;

		// Token: 0x04003694 RID: 13972
		[Cpp2IlInjected.FieldOffset(Offset = "0x58")]
		[Token(Token = "0x4003694")]
		[HideInInspector]
		public Quaternion[] heOrientations;

		// Token: 0x04003695 RID: 13973
		[Cpp2IlInjected.FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003695")]
		[HideInInspector]
		public Vector3[] normals;

		// Token: 0x04003696 RID: 13974
		[Cpp2IlInjected.FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003696")]
		[HideInInspector]
		public Vector4[] tangents;

		// Token: 0x04003697 RID: 13975
		[Cpp2IlInjected.FieldOffset(Offset = "0x70")]
		[Token(Token = "0x4003697")]
		[HideInInspector]
		public int[] visualMap;

		// Token: 0x04003698 RID: 13976
		[Cpp2IlInjected.FieldOffset(Offset = "0x78")]
		[Token(Token = "0x4003698")]
		[SerializeField]
		[HideInInspector]
		protected Oni.MeshInformation meshInfo;

		// Token: 0x04003699 RID: 13977
		[Cpp2IlInjected.FieldOffset(Offset = "0x88")]
		[Token(Token = "0x4003699")]
		private GCHandle facesHandle;

		// Token: 0x0400369A RID: 13978
		[Cpp2IlInjected.FieldOffset(Offset = "0x8C")]
		[Token(Token = "0x400369A")]
		private GCHandle halfEdgesHandle;

		// Token: 0x0400369B RID: 13979
		[Cpp2IlInjected.FieldOffset(Offset = "0x90")]
		[Token(Token = "0x400369B")]
		private GCHandle verticesHandle;

		// Token: 0x0400369C RID: 13980
		[Cpp2IlInjected.FieldOffset(Offset = "0x94")]
		[Token(Token = "0x400369C")]
		private GCHandle orientationsHandle;

		// Token: 0x0400369D RID: 13981
		[Cpp2IlInjected.FieldOffset(Offset = "0x98")]
		[Token(Token = "0x400369D")]
		private GCHandle visualMapHandle;

		// Token: 0x0400369E RID: 13982
		[Cpp2IlInjected.FieldOffset(Offset = "0x9C")]
		[Token(Token = "0x400369E")]
		private GCHandle normalsHandle;

		// Token: 0x0400369F RID: 13983
		[Cpp2IlInjected.FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x400369F")]
		private GCHandle tangentsHandle;

		// Token: 0x0200051F RID: 1311
		[Token(Token = "0x200051F")]
		public class HEEdge
		{
			// Token: 0x06002E07 RID: 11783 RVA: 0x00064CC4 File Offset: 0x00062EC4
			[Token(Token = "0x6002E07")]
			[Address(RVA = "0x49BC10", Offset = "0x49AC10", VA = "0x18049BC10")]
			public HEEdge(int halfEdgeIndex)
			{
				this.halfEdgeIndex = halfEdgeIndex;
			}

			// Token: 0x040036A0 RID: 13984
			[Cpp2IlInjected.FieldOffset(Offset = "0x10")]
			[Token(Token = "0x40036A0")]
			public int halfEdgeIndex;
		}
	}
}
