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

namespace Obi
{
	// Token: 0x020004B8 RID: 1208
	[Token(Token = "0x20004B8")]
	[DisallowMultipleComponent]
	public class ObiDistanceConstraints : ObiBatchedConstraints
	{
		// Token: 0x06002ADB RID: 10971 RVA: 0x0005D1B4 File Offset: 0x0005B3B4
		[Token(Token = "0x6002ADB")]
		[Address(RVA = "0x51C620", Offset = "0x51B420", VA = "0x18051C620", Slot = "8")]
		public override Oni.ConstraintType GetConstraintType()
		{
			return Oni.ConstraintType.Distance;
		}

		// Token: 0x06002ADC RID: 10972 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002ADC")]
		[Address(RVA = "0x100E5F0", Offset = "0x100D3F0", VA = "0x18100E5F0", Slot = "9")]
		public override List<ObiConstraintBatch> GetBatches()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002ADD RID: 10973 RVA: 0x0005D1C4 File Offset: 0x0005B3C4
		[Token(Token = "0x6002ADD")]
		[Address(RVA = "0x100E590", Offset = "0x100D390", VA = "0x18100E590", Slot = "10")]
		public override void Clear()
		{
			int num = 0;
			bool flag = base.RemoveFromSolver(num);
			this.batches.Clear();
		}

		// Token: 0x06002ADE RID: 10974 RVA: 0x0005D1EC File Offset: 0x0005B3EC
		[Token(Token = "0x6002ADE")]
		[Address(RVA = "0x100E4F0", Offset = "0x100D2F0", VA = "0x18100E4F0")]
		public void AddBatch(ObiDistanceConstraintBatch batch)
		{
			if (batch != 0)
			{
				int constraintType = (int)batch.GetConstraintType();
				Oni.ConstraintType constraintType2 = this.GetConstraintType();
				if (constraintType == (int)constraintType2)
				{
					this.batches.Add(batch);
				}
			}
		}

		// Token: 0x06002ADF RID: 10975 RVA: 0x0005D224 File Offset: 0x0005B424
		[Token(Token = "0x6002ADF")]
		[Address(RVA = "0x100EA60", Offset = "0x100D860", VA = "0x18100EA60")]
		public void RemoveBatch(ObiDistanceConstraintBatch batch)
		{
			bool flag = this.batches.Remove(batch);
		}

		// Token: 0x06002AE0 RID: 10976 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002AE0")]
		[Address(RVA = "0x100E720", Offset = "0x100D520", VA = "0x18100E720")]
		public void OnDrawGizmosSelected()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002AE1 RID: 10977 RVA: 0x0005D244 File Offset: 0x0005B444
		[Token(Token = "0x6002AE1")]
		[Address(RVA = "0x100EAC0", Offset = "0x100D8C0", VA = "0x18100EAC0")]
		public ObiDistanceConstraints()
		{
			List<ObiDistanceConstraintBatch> list = new List();
			this.batches = list;
			base..ctor();
		}

		// Token: 0x0400337A RID: 13178
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x400337A")]
		[Tooltip("Scale of stretching constraints. Values > 1 will expand initial cloth size, values < 1 will make it shrink.")]
		public float stretchingScale = 1f;

		// Token: 0x0400337B RID: 13179
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x400337B")]
		[Range(0f, 1f)]
		[Tooltip("Cloth resistance to stretching. Lower values will yield more elastic cloth.")]
		public float stiffness = 1f;

		// Token: 0x0400337C RID: 13180
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x400337C")]
		[Range(0f, 1f)]
		[Tooltip("Amount of compression slack. 0 means total resistance to compression, 1 no resistance at all. 0.5 means constraints will allow a compression of up to 50% of their rest length.")]
		public float slack;

		// Token: 0x0400337D RID: 13181
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x400337D")]
		[SerializeField]
		[HideInInspector]
		private List<ObiDistanceConstraintBatch> batches;
	}
}
