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

namespace Obi
{
	// Token: 0x02000516 RID: 1302
	[Token(Token = "0x2000516")]
	[DisallowMultipleComponent]
	public class ObiTetherConstraints : ObiBatchedConstraints
	{
		// Token: 0x06002DC2 RID: 11714 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DC2")]
		[Address(RVA = "0x2FF2E0", Offset = "0x2FE2E0", VA = "0x1802FF2E0", Slot = "8")]
		public override Oni.ConstraintType GetConstraintType()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DC3 RID: 11715 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DC3")]
		[Address(RVA = "0xE65290", Offset = "0xE64290", VA = "0x180E65290", Slot = "9")]
		public override List<ObiConstraintBatch> GetBatches()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DC4 RID: 11716 RVA: 0x00064778 File Offset: 0x00062978
		[Token(Token = "0x6002DC4")]
		[Address(RVA = "0xE65230", Offset = "0xE64230", VA = "0x180E65230", Slot = "10")]
		public override void Clear()
		{
			int num = 0;
			bool flag = base.RemoveFromSolver(num);
			this.batches.Clear();
		}

		// Token: 0x06002DC5 RID: 11717 RVA: 0x000647A0 File Offset: 0x000629A0
		[Token(Token = "0x6002DC5")]
		[Address(RVA = "0xE65190", Offset = "0xE64190", VA = "0x180E65190")]
		public void AddBatch(ObiTetherConstraintBatch batch)
		{
			if (batch != 0)
			{
				int constraintType = (int)batch.GetConstraintType();
				Oni.ConstraintType constraintType2 = this.GetConstraintType();
				if (constraintType == (int)constraintType2)
				{
					this.batches.Add(batch);
				}
			}
		}

		// Token: 0x06002DC6 RID: 11718 RVA: 0x000647D8 File Offset: 0x000629D8
		[Token(Token = "0x6002DC6")]
		[Address(RVA = "0xE656D0", Offset = "0xE646D0", VA = "0x180E656D0")]
		public void RemoveBatch(ObiTetherConstraintBatch batch)
		{
			bool flag = this.batches.Remove(batch);
		}

		// Token: 0x06002DC7 RID: 11719 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002DC7")]
		[Address(RVA = "0xE653C0", Offset = "0xE643C0", VA = "0x180E653C0")]
		public void OnDrawGizmosSelected()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002DC8 RID: 11720 RVA: 0x000647F8 File Offset: 0x000629F8
		[Token(Token = "0x6002DC8")]
		[Address(RVA = "0xE65730", Offset = "0xE64730", VA = "0x180E65730")]
		public ObiTetherConstraints()
		{
			List<ObiTetherConstraintBatch> list = new List();
			this.batches = list;
			base..ctor();
		}

		// Token: 0x04003672 RID: 13938
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003672")]
		[Attribute(Name = "RangeAttribute", RVA = "0x261140", Offset = "0x260540")]
		[Tooltip("Scale of tether constraints. Values > 1 will expand initial tether length, values < 1 will make it shrink.")]
		public float tetherScale = 1f;

		// Token: 0x04003673 RID: 13939
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x4003673")]
		[Tooltip("Tether resistance to stretching. Lower values will enforce tethers with more strenght.")]
		[Range(0f, 1f)]
		public float stiffness = 1f;

		// Token: 0x04003674 RID: 13940
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003674")]
		[HideInInspector]
		[SerializeField]
		private List<ObiTetherConstraintBatch> batches;
	}
}
