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

namespace Obi
{
	// Token: 0x0200050B RID: 1291
	[Token(Token = "0x200050B")]
	[DisallowMultipleComponent]
	public class ObiAerodynamicConstraints : ObiBatchedConstraints
	{
		// Token: 0x06002D7C RID: 11644 RVA: 0x000641D4 File Offset: 0x000623D4
		[Token(Token = "0x6002D7C")]
		[Address(RVA = "0x516060", Offset = "0x515060", VA = "0x180516060", Slot = "8")]
		public override Oni.ConstraintType GetConstraintType()
		{
			return Oni.ConstraintType.Aerodynamics;
		}

		// Token: 0x06002D7D RID: 11645 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002D7D")]
		[Address(RVA = "0x108E610", Offset = "0x108D610", VA = "0x18108E610", Slot = "9")]
		public override List<ObiConstraintBatch> GetBatches()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002D7E RID: 11646 RVA: 0x000641E4 File Offset: 0x000623E4
		[Token(Token = "0x6002D7E")]
		[Address(RVA = "0x108E9F0", Offset = "0x108D9F0", VA = "0x18108E9F0")]
		public void OnValidate()
		{
			float num = this.airDensity;
			float num2 = Mathf.Max((float)0, num);
			float num3 = this.dragCoefficient;
			this.airDensity = num2;
			float num4 = Mathf.Max((float)0, num3);
			float num5 = this.liftCoefficient;
			this.dragCoefficient = num4;
			float num6 = Mathf.Max((float)0, num5);
			this.liftCoefficient = num6;
		}

		// Token: 0x06002D7F RID: 11647 RVA: 0x00064238 File Offset: 0x00062438
		[Token(Token = "0x6002D7F")]
		[Address(RVA = "0x108E5B0", Offset = "0x108D5B0", VA = "0x18108E5B0", Slot = "10")]
		public override void Clear()
		{
			int num = 0;
			bool flag = base.RemoveFromSolver(num);
			this.batches.Clear();
		}

		// Token: 0x06002D80 RID: 11648 RVA: 0x00064260 File Offset: 0x00062460
		[Token(Token = "0x6002D80")]
		[Address(RVA = "0x108E510", Offset = "0x108D510", VA = "0x18108E510")]
		public void AddBatch(ObiAerodynamicConstraintBatch batch)
		{
			if (batch != 0)
			{
				int constraintType = (int)batch.GetConstraintType();
				Oni.ConstraintType constraintType2 = this.GetConstraintType();
				if (constraintType == (int)constraintType2)
				{
					this.batches.Add(batch);
				}
			}
		}

		// Token: 0x06002D81 RID: 11649 RVA: 0x00064298 File Offset: 0x00062498
		[Token(Token = "0x6002D81")]
		[Address(RVA = "0x108EA40", Offset = "0x108DA40", VA = "0x18108EA40")]
		public void RemoveBatch(ObiAerodynamicConstraintBatch batch)
		{
			bool flag = this.batches.Remove(batch);
		}

		// Token: 0x06002D82 RID: 11650 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002D82")]
		[Address(RVA = "0x108E740", Offset = "0x108D740", VA = "0x18108E740")]
		public void OnDrawGizmosSelected()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002D83 RID: 11651 RVA: 0x000642B8 File Offset: 0x000624B8
		[Token(Token = "0x6002D83")]
		[Address(RVA = "0x108EAA0", Offset = "0x108DAA0", VA = "0x18108EAA0")]
		public ObiAerodynamicConstraints()
		{
			List<ObiAerodynamicConstraintBatch> list = new List();
			this.batches = list;
			base..ctor();
		}

		// Token: 0x04003656 RID: 13910
		[FieldOffset(Offset = "0x30")]
		[Token(Token = "0x4003656")]
		[Tooltip("Air density in kg/m3. Higher densities will make both drag and lift forces stronger.")]
		public float airDensity = 1.225f;

		// Token: 0x04003657 RID: 13911
		[FieldOffset(Offset = "0x34")]
		[Token(Token = "0x4003657")]
		[Tooltip("How much is the cloth affected by drag forces. Extreme values can cause the cloth to behave unrealistically, so use with care.")]
		public float dragCoefficient = 0.05f;

		// Token: 0x04003658 RID: 13912
		[FieldOffset(Offset = "0x38")]
		[Token(Token = "0x4003658")]
		[Tooltip("How much is the cloth affected by lift forces. Extreme values can cause the cloth to behave unrealistically, so use with care.")]
		public float liftCoefficient = 0.05f;

		// Token: 0x04003659 RID: 13913
		[FieldOffset(Offset = "0x40")]
		[Token(Token = "0x4003659")]
		[SerializeField]
		[HideInInspector]
		private List<ObiAerodynamicConstraintBatch> batches;
	}
}
