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

namespace Obi
{
	// Token: 0x020004BE RID: 1214
	[Token(Token = "0x20004BE")]
	[DisallowMultipleComponent]
	public class ObiTetherConstraints : ObiBatchedConstraints
	{
		// Token: 0x06002AF9 RID: 11001 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AF9")]
		[Address(RVA = "0x2B4CB0", Offset = "0x2B3AB0", VA = "0x1802B4CB0", Slot = "8")]
		public override Oni.ConstraintType GetConstraintType()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AFA RID: 11002 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AFA")]
		[Address(RVA = "0xD34110", Offset = "0xD32F10", VA = "0x180D34110", Slot = "9")]
		public override List<ObiConstraintBatch> GetBatches()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AFB RID: 11003 RVA: 0x0005D478 File Offset: 0x0005B678
		[Token(Token = "0x6002AFB")]
		[Address(RVA = "0xD340B0", Offset = "0xD32EB0", VA = "0x180D340B0", Slot = "10")]
		public override void Clear()
		{
			int num = 0;
			bool flag = base.RemoveFromSolver(num);
			this.batches.Clear();
		}

		// Token: 0x06002AFC RID: 11004 RVA: 0x0005D4A0 File Offset: 0x0005B6A0
		[Token(Token = "0x6002AFC")]
		[Address(RVA = "0xD34010", Offset = "0xD32E10", VA = "0x180D34010")]
		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: 0x06002AFD RID: 11005 RVA: 0x0005D4D8 File Offset: 0x0005B6D8
		[Token(Token = "0x6002AFD")]
		[Address(RVA = "0xD34550", Offset = "0xD33350", VA = "0x180D34550")]
		public void RemoveBatch(ObiTetherConstraintBatch batch)
		{
			bool flag = this.batches.Remove(batch);
		}

		// Token: 0x06002AFE RID: 11006 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AFE")]
		[Address(RVA = "0xD34240", Offset = "0xD33040", VA = "0x180D34240")]
		public void OnDrawGizmosSelected()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AFF RID: 11007 RVA: 0x0005D4F8 File Offset: 0x0005B6F8
		[Token(Token = "0x6002AFF")]
		[Address(RVA = "0xD345B0", Offset = "0xD333B0", VA = "0x180D345B0")]
		public ObiTetherConstraints()
		{
			List<ObiTetherConstraintBatch> list = new List();
			this.batches = list;
			base..ctor();
		}

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

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

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