using System;
using System.Collections.Generic;
using System.Linq;
using Cpp2IlInjected;
using UnityEngine;

namespace Obi
{
	// Token: 0x020004B1 RID: 1201
	[Token(Token = "0x20004B1")]
	[Serializable]
	public class ObiTetherConstraintBatch : ObiConstraintBatch
	{
		// Token: 0x06002A9D RID: 10909 RVA: 0x0005CC04 File Offset: 0x0005AE04
		[Token(Token = "0x6002A9D")]
		[Address(RVA = "0xD33EC0", Offset = "0xD32CC0", VA = "0x180D33EC0")]
		public ObiTetherConstraintBatch(bool cooked, bool sharesParticles)
		{
			List<int> list = new List();
			this.tetherIndices = list;
			List<Vector2> list2 = new List();
			this.maxLengthsScales = list2;
			List<float> list3 = new List();
			this.stiffnesses = list3;
			int[] array = new int[0];
			this.solverIndices = array;
			base..ctor(cooked, sharesParticles);
		}

		// Token: 0x06002A9E RID: 10910 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002A9E")]
		[Address(RVA = "0xD33D50", Offset = "0xD32B50", VA = "0x180D33D50")]
		public ObiTetherConstraintBatch(bool cooked, bool sharesParticles, float minYoungModulus, float maxYoungModulus)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002A9F RID: 10911 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002A9F")]
		[Address(RVA = "0x2B4CB0", Offset = "0x2B3AB0", VA = "0x1802B4CB0", Slot = "4")]
		public override Oni.ConstraintType GetConstraintType()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA0 RID: 10912 RVA: 0x0005CC50 File Offset: 0x0005AE50
		[Token(Token = "0x6002AA0")]
		[Address(RVA = "0xD331E0", Offset = "0xD31FE0", VA = "0x180D331E0", Slot = "5")]
		public override void Clear()
		{
			this.activeConstraints.Clear();
			this.tetherIndices.Clear();
			this.maxLengthsScales.Clear();
			this.stiffnesses.Clear();
			this.constraintCount = (int)((ulong)0L);
		}

		// Token: 0x06002AA1 RID: 10913 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA1")]
		[Address(RVA = "0xD330D0", Offset = "0xD31ED0", VA = "0x180D330D0")]
		public void AddConstraint(int index1, int index2, float maxLength, float scale, float stiffness)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA2 RID: 10914 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA2")]
		[Address(RVA = "0xD33BA0", Offset = "0xD329A0", VA = "0x180D33BA0")]
		public void RemoveConstraint(int index)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA3 RID: 10915 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA3")]
		[Address(RVA = "0xD335D0", Offset = "0xD323D0", VA = "0x180D335D0", Slot = "11")]
		public override List<int> GetConstraintsInvolvingParticle(int particleIndex)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA4 RID: 10916 RVA: 0x0005CC98 File Offset: 0x0005AE98
		[Token(Token = "0x6002AA4")]
		[Address(RVA = "0xD33290", Offset = "0xD32090", VA = "0x180D33290", Slot = "6")]
		public override void Cook()
		{
			ulong num;
			IntPtr intPtr = Oni.CreateBatch(0, num != 0UL);
			List<int> list = this.tetherIndices;
			this.batch = intPtr;
			int[] array = list.ToArray();
			Vector2[] array2 = this.maxLengthsScales.ToArray();
			float[] array3 = this.stiffnesses.ToArray();
			int constraintCount = this.constraintCount;
			Oni.SetTetherConstraints(intPtr, array, array2, array3, constraintCount);
			if (Oni.CookBatch(this.batch))
			{
				int batchConstraintCount = Oni.GetBatchConstraintCount(this.batch);
				this.constraintCount = batchConstraintCount;
				List<int> list2 = Enumerable.ToList<int>(Enumerable.Range(0, batchConstraintCount));
				this.activeConstraints = list2;
				int num2 = this.constraintCount;
				num2 += num2;
				int[] array4 = new int[num2];
				Vector2[] array5 = new Vector2[this.constraintCount];
				float[] array6 = new float[this.constraintCount];
				Oni.GetTetherConstraints(this.batch, array4, array5, array6);
				List<int> list3 = new List(array4);
				this.tetherIndices = list3;
				List<Vector2> list4 = new List(array5);
				this.maxLengthsScales = list4;
				List<float> list5 = new List(array6);
				this.stiffnesses = list5;
				int[] array7 = new int[Oni.GetBatchPhaseCount(this.batch)];
				Oni.GetBatchPhaseSizes(this.batch, array7);
				List<int> list6 = new List(array7);
				this.phaseSizes = list6;
			}
			Oni.DestroyBatch(this.batch);
			this.batch = (IntPtr)((ulong)0L);
		}

		// Token: 0x06002AA5 RID: 10917 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA5")]
		[Address(RVA = "0xD336F0", Offset = "0xD324F0", VA = "0x180D336F0", Slot = "7")]
		protected override void OnAddToSolver(ObiBatchedConstraints constraints)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA6 RID: 10918 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA6")]
		[Address(RVA = "0x297F00", Offset = "0x296D00", VA = "0x180297F00", Slot = "8")]
		protected override void OnRemoveFromSolver(ObiBatchedConstraints constraints)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA7 RID: 10919 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA7")]
		[Address(RVA = "0xD338F0", Offset = "0xD326F0", VA = "0x180D338F0", Slot = "9")]
		public override void PushDataToSolver(ObiBatchedConstraints constraints)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AA8 RID: 10920 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AA8")]
		[Address(RVA = "0x297F00", Offset = "0x296D00", VA = "0x180297F00", Slot = "10")]
		public override void PullDataFromSolver(ObiBatchedConstraints constraints)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003362 RID: 13154
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003362")]
		[HideInInspector]
		public List<int> tetherIndices;

		// Token: 0x04003363 RID: 13155
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003363")]
		[HideInInspector]
		public List<Vector2> maxLengthsScales;

		// Token: 0x04003364 RID: 13156
		[FieldOffset(Offset = "0x48")]
		[Token(Token = "0x4003364")]
		[HideInInspector]
		public List<float> stiffnesses;

		// Token: 0x04003365 RID: 13157
		[FieldOffset(Offset = "0x50")]
		[Token(Token = "0x4003365")]
		private int[] solverIndices;
	}
}
