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

namespace Obi
{
	// Token: 0x020004DC RID: 1244
	[Token(Token = "0x20004DC")]
	[ExecuteInEditMode]
	[DisallowMultipleComponent]
	[AddComponentMenu("Physics/Obi/Obi Solver")]
	public sealed class ObiSolver : MonoBehaviour
	{
		// Token: 0x14000015 RID: 21
		// (add) Token: 0x06002B9E RID: 11166 RVA: 0x0005E148 File Offset: 0x0005C348
		// (remove) Token: 0x06002B9F RID: 11167 RVA: 0x0005E178 File Offset: 0x0005C378
		[Token(Token = "0x14000015")]
		public event EventHandler OnFrameBegin
		{
			[Token(Token = "0x6002B9E")]
			[Address(RVA = "0xD2CF10", Offset = "0xD2BD10", VA = "0x180D2CF10")]
			[CompilerGenerated]
			add
			{
				EventHandler onFrameBegin = this.OnFrameBegin;
				Delegate @delegate = Delegate.Combine(onFrameBegin, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFrameBegin)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002B9F")]
			[Address(RVA = "0xD2D6C0", Offset = "0xD2C4C0", VA = "0x180D2D6C0")]
			[CompilerGenerated]
			remove
			{
				EventHandler onFrameBegin = this.OnFrameBegin;
				Delegate @delegate = Delegate.Remove(onFrameBegin, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFrameBegin)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x14000016 RID: 22
		// (add) Token: 0x06002BA0 RID: 11168 RVA: 0x0005E1A8 File Offset: 0x0005C3A8
		// (remove) Token: 0x06002BA1 RID: 11169 RVA: 0x0005E1D8 File Offset: 0x0005C3D8
		[Token(Token = "0x14000016")]
		public event EventHandler OnStepBegin
		{
			[Token(Token = "0x6002BA0")]
			[Address(RVA = "0xD2D050", Offset = "0xD2BE50", VA = "0x180D2D050")]
			[CompilerGenerated]
			add
			{
				EventHandler onStepBegin = this.OnStepBegin;
				Delegate @delegate = Delegate.Combine(onStepBegin, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onStepBegin)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BA1")]
			[Address(RVA = "0xD2D800", Offset = "0xD2C600", VA = "0x180D2D800")]
			[CompilerGenerated]
			remove
			{
				EventHandler onStepBegin = this.OnStepBegin;
				Delegate @delegate = Delegate.Remove(onStepBegin, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onStepBegin)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x14000017 RID: 23
		// (add) Token: 0x06002BA2 RID: 11170 RVA: 0x0005E208 File Offset: 0x0005C408
		// (remove) Token: 0x06002BA3 RID: 11171 RVA: 0x0005E238 File Offset: 0x0005C438
		[Token(Token = "0x14000017")]
		public event EventHandler OnFixedParticlesUpdated
		{
			[Token(Token = "0x6002BA2")]
			[Address(RVA = "0xD2CDD0", Offset = "0xD2BBD0", VA = "0x180D2CDD0")]
			[CompilerGenerated]
			add
			{
				EventHandler onFixedParticlesUpdated = this.OnFixedParticlesUpdated;
				Delegate @delegate = Delegate.Combine(onFixedParticlesUpdated, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFixedParticlesUpdated)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BA3")]
			[Address(RVA = "0xD2D580", Offset = "0xD2C380", VA = "0x180D2D580")]
			[CompilerGenerated]
			remove
			{
				EventHandler onFixedParticlesUpdated = this.OnFixedParticlesUpdated;
				Delegate @delegate = Delegate.Remove(onFixedParticlesUpdated, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFixedParticlesUpdated)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x14000018 RID: 24
		// (add) Token: 0x06002BA4 RID: 11172 RVA: 0x0005E268 File Offset: 0x0005C468
		// (remove) Token: 0x06002BA5 RID: 11173 RVA: 0x0005E298 File Offset: 0x0005C498
		[Token(Token = "0x14000018")]
		public event EventHandler OnStepEnd
		{
			[Token(Token = "0x6002BA4")]
			[Address(RVA = "0xD2D0F0", Offset = "0xD2BEF0", VA = "0x180D2D0F0")]
			[CompilerGenerated]
			add
			{
				EventHandler onStepEnd = this.OnStepEnd;
				Delegate @delegate = Delegate.Combine(onStepEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onStepEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BA5")]
			[Address(RVA = "0xD2D8A0", Offset = "0xD2C6A0", VA = "0x180D2D8A0")]
			[CompilerGenerated]
			remove
			{
				EventHandler onStepEnd = this.OnStepEnd;
				Delegate @delegate = Delegate.Remove(onStepEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onStepEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x14000019 RID: 25
		// (add) Token: 0x06002BA6 RID: 11174 RVA: 0x0005E2C8 File Offset: 0x0005C4C8
		// (remove) Token: 0x06002BA7 RID: 11175 RVA: 0x0005E2F8 File Offset: 0x0005C4F8
		[Token(Token = "0x14000019")]
		public event EventHandler OnBeforePositionInterpolation
		{
			[Token(Token = "0x6002BA6")]
			[Address(RVA = "0xD2CC90", Offset = "0xD2BA90", VA = "0x180D2CC90")]
			[CompilerGenerated]
			add
			{
				EventHandler onBeforePositionInterpolation = this.OnBeforePositionInterpolation;
				Delegate @delegate = Delegate.Combine(onBeforePositionInterpolation, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onBeforePositionInterpolation)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BA7")]
			[Address(RVA = "0xD2D440", Offset = "0xD2C240", VA = "0x180D2D440")]
			[CompilerGenerated]
			remove
			{
				EventHandler onBeforePositionInterpolation = this.OnBeforePositionInterpolation;
				Delegate @delegate = Delegate.Remove(onBeforePositionInterpolation, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onBeforePositionInterpolation)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x1400001A RID: 26
		// (add) Token: 0x06002BA8 RID: 11176 RVA: 0x0005E328 File Offset: 0x0005C528
		// (remove) Token: 0x06002BA9 RID: 11177 RVA: 0x0005E358 File Offset: 0x0005C558
		[Token(Token = "0x1400001A")]
		public event EventHandler OnBeforeActorsFrameEnd
		{
			[Token(Token = "0x6002BA8")]
			[Address(RVA = "0xD2CBF0", Offset = "0xD2B9F0", VA = "0x180D2CBF0")]
			[CompilerGenerated]
			add
			{
				EventHandler onBeforeActorsFrameEnd = this.OnBeforeActorsFrameEnd;
				Delegate @delegate = Delegate.Combine(onBeforeActorsFrameEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onBeforeActorsFrameEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BA9")]
			[Address(RVA = "0xD2D3A0", Offset = "0xD2C1A0", VA = "0x180D2D3A0")]
			[CompilerGenerated]
			remove
			{
				EventHandler onBeforeActorsFrameEnd = this.OnBeforeActorsFrameEnd;
				Delegate @delegate = Delegate.Remove(onBeforeActorsFrameEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onBeforeActorsFrameEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x1400001B RID: 27
		// (add) Token: 0x06002BAA RID: 11178 RVA: 0x0005E388 File Offset: 0x0005C588
		// (remove) Token: 0x06002BAB RID: 11179 RVA: 0x0005E3B8 File Offset: 0x0005C5B8
		[Token(Token = "0x1400001B")]
		public event EventHandler OnFrameEnd
		{
			[Token(Token = "0x6002BAA")]
			[Address(RVA = "0xD2CFB0", Offset = "0xD2BDB0", VA = "0x180D2CFB0")]
			[CompilerGenerated]
			add
			{
				EventHandler onFrameEnd = this.OnFrameEnd;
				Delegate @delegate = Delegate.Combine(onFrameEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFrameEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BAB")]
			[Address(RVA = "0xD2D760", Offset = "0xD2C560", VA = "0x180D2D760")]
			[CompilerGenerated]
			remove
			{
				EventHandler onFrameEnd = this.OnFrameEnd;
				Delegate @delegate = Delegate.Remove(onFrameEnd, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFrameEnd)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x1400001C RID: 28
		// (add) Token: 0x06002BAC RID: 11180 RVA: 0x0005E3E8 File Offset: 0x0005C5E8
		// (remove) Token: 0x06002BAD RID: 11181 RVA: 0x0005E418 File Offset: 0x0005C618
		[Token(Token = "0x1400001C")]
		public event EventHandler<ObiSolver.ObiCollisionEventArgs> OnCollision
		{
			[Token(Token = "0x6002BAC")]
			[Address(RVA = "0xD2CD30", Offset = "0xD2BB30", VA = "0x180D2CD30")]
			[CompilerGenerated]
			add
			{
				EventHandler<ObiSolver.ObiCollisionEventArgs> onCollision = this.OnCollision;
				Delegate @delegate = Delegate.Combine(onCollision, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onCollision)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BAD")]
			[Address(RVA = "0xD2D4E0", Offset = "0xD2C2E0", VA = "0x180D2D4E0")]
			[CompilerGenerated]
			remove
			{
				EventHandler<ObiSolver.ObiCollisionEventArgs> onCollision = this.OnCollision;
				Delegate @delegate = Delegate.Remove(onCollision, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onCollision)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x1400001D RID: 29
		// (add) Token: 0x06002BAE RID: 11182 RVA: 0x0005E448 File Offset: 0x0005C648
		// (remove) Token: 0x06002BAF RID: 11183 RVA: 0x0005E478 File Offset: 0x0005C678
		[Token(Token = "0x1400001D")]
		public event EventHandler<ObiSolver.ObiFluidEventArgs> OnFluidUpdated
		{
			[Token(Token = "0x6002BAE")]
			[Address(RVA = "0xD2CE70", Offset = "0xD2BC70", VA = "0x180D2CE70")]
			[CompilerGenerated]
			add
			{
				EventHandler<ObiSolver.ObiFluidEventArgs> onFluidUpdated = this.OnFluidUpdated;
				Delegate @delegate = Delegate.Combine(onFluidUpdated, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFluidUpdated)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
			[Token(Token = "0x6002BAF")]
			[Address(RVA = "0xD2D620", Offset = "0xD2C420", VA = "0x180D2D620")]
			[CompilerGenerated]
			remove
			{
				EventHandler<ObiSolver.ObiFluidEventArgs> onFluidUpdated = this.OnFluidUpdated;
				Delegate @delegate = Delegate.Remove(onFluidUpdated, value);
				if (@delegate == 0 || @delegate != 0)
				{
					while (@delegate != onFluidUpdated)
					{
					}
					return;
				}
				throw new InvalidCastException();
			}
		}

		// Token: 0x17000304 RID: 772
		// (get) Token: 0x06002BB0 RID: 11184 RVA: 0x0005E4A8 File Offset: 0x0005C6A8
		[Token(Token = "0x17000304")]
		public IntPtr OniSolver
		{
			[Token(Token = "0x6002BB0")]
			[Address(RVA = "0x3191D0", Offset = "0x317FD0", VA = "0x1803191D0")]
			get
			{
				return this.oniSolver;
			}
		}

		// Token: 0x17000305 RID: 773
		// (get) Token: 0x06002BB1 RID: 11185 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000305")]
		public Bounds Bounds
		{
			[Token(Token = "0x6002BB1")]
			[Address(RVA = "0xD2D310", Offset = "0xD2C110", VA = "0x180D2D310")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000306 RID: 774
		// (get) Token: 0x06002BB2 RID: 11186 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000306")]
		public Matrix4x4 LastTransform
		{
			[Token(Token = "0x6002BB2")]
			[Address(RVA = "0xD2D370", Offset = "0xD2C170", VA = "0x180D2D370")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x17000307 RID: 775
		// (get) Token: 0x06002BB3 RID: 11187 RVA: 0x0005E4BC File Offset: 0x0005C6BC
		[Token(Token = "0x17000307")]
		public bool IsVisible
		{
			[Token(Token = "0x6002BB3")]
			[Address(RVA = "0xD2D360", Offset = "0xD2C160", VA = "0x180D2D360")]
			get
			{
				return this.isVisible;
			}
		}

		// Token: 0x17000308 RID: 776
		// (get) Token: 0x06002BB4 RID: 11188 RVA: 0x0005E4D0 File Offset: 0x0005C6D0
		[Token(Token = "0x17000308")]
		public int AllocParticleCount
		{
			[Token(Token = "0x6002BB4")]
			[Address(RVA = "0xD02B90", Offset = "0xD01990", VA = "0x180D02B90")]
			get
			{
				return this.allocatedParticleCount;
			}
		}

		// Token: 0x17000309 RID: 777
		// (get) Token: 0x06002BB5 RID: 11189 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x17000309")]
		public bool IsUpdating
		{
			[Token(Token = "0x6002BB5")]
			[Address(RVA = "0xD2D330", Offset = "0xD2C130", VA = "0x180D2D330")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x06002BB6 RID: 11190 RVA: 0x0005E4E4 File Offset: 0x0005C6E4
		[Token(Token = "0x6002BB6")]
		[Address(RVA = "0xD2B640", Offset = "0xD2A440", VA = "0x180D2B640")]
		public void RequireRenderablePositions()
		{
		}

		// Token: 0x06002BB7 RID: 11191 RVA: 0x0005E4F4 File Offset: 0x0005C6F4
		[Token(Token = "0x6002BB7")]
		[Address(RVA = "0xD2B450", Offset = "0xD2A250", VA = "0x180D2B450")]
		public void RelinquishRenderablePositions()
		{
			int num = this.renderablePositionsClients;
			if (num > 0)
			{
				this.renderablePositionsClients = num;
			}
		}

		// Token: 0x06002BB8 RID: 11192 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BB8")]
		[Address(RVA = "0xD2A440", Offset = "0xD29240", VA = "0x180D2A440")]
		private void Awake()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BB9 RID: 11193 RVA: 0x0005E514 File Offset: 0x0005C714
		[Token(Token = "0x6002BB9")]
		[Address(RVA = "0xD2B890", Offset = "0xD2A690", VA = "0x180D2B890")]
		private void Start()
		{
			if (Application.isPlaying)
			{
				ObiColliderBase[] array = UnityEngine.Object.FindObjectsOfType<ObiColliderBase>();
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					array[num].RegisterInSolver(this, true);
					num++;
				}
			}
		}

		// Token: 0x06002BBA RID: 11194 RVA: 0x0005E558 File Offset: 0x0005C758
		[Token(Token = "0x6002BBA")]
		[Address(RVA = "0xD2B250", Offset = "0xD2A050", VA = "0x180D2B250")]
		private void OnDestroy()
		{
			if (Application.isPlaying)
			{
				this.Teardown();
				ObiColliderBase[] array = UnityEngine.Object.FindObjectsOfType<ObiColliderBase>();
				int num = 0;
				int length = array.Length;
				if (num < length)
				{
					array[num].RemoveFromSolver(this);
					num++;
				}
			}
		}

		// Token: 0x06002BBB RID: 11195 RVA: 0x0005E5A0 File Offset: 0x0005C7A0
		[Token(Token = "0x6002BBB")]
		[Address(RVA = "0xD2B3C0", Offset = "0xD2A1C0", VA = "0x180D2B3C0")]
		private void OnEnable()
		{
			if (!Application.isPlaying)
			{
				this.Initialize();
			}
			Coroutine coroutine = base.StartCoroutine("RunLateFixedUpdate");
			ObiArbiter.RegisterSolver(this);
		}

		// Token: 0x06002BBC RID: 11196 RVA: 0x0005E5D0 File Offset: 0x0005C7D0
		[Token(Token = "0x6002BBC")]
		[Address(RVA = "0xD2B330", Offset = "0xD2A130", VA = "0x180D2B330")]
		private void OnDisable()
		{
			if (!Application.isPlaying)
			{
				this.Teardown();
			}
			base.StopCoroutine("RunLateFixedUpdate");
			ObiArbiter.UnregisterSolver(this);
		}

		// Token: 0x06002BBD RID: 11197 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BBD")]
		[Address(RVA = "0xD2ADA0", Offset = "0xD29BA0", VA = "0x180D2ADA0")]
		public void Initialize()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BBE RID: 11198 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BBE")]
		[Address(RVA = "0xD2B970", Offset = "0xD2A770", VA = "0x180D2B970")]
		private void Teardown()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BBF RID: 11199 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BBF")]
		[Address(RVA = "0xD29E40", Offset = "0xD28C40", VA = "0x180D29E40")]
		public bool AddActor(ObiActor actor, int numParticles)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC0 RID: 11200 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC0")]
		[Address(RVA = "0xD2B470", Offset = "0xD2A270", VA = "0x180D2B470")]
		public int RemoveActor(ObiActor actor)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC1 RID: 11201 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC1")]
		[Address(RVA = "0xD2C450", Offset = "0xD2B250", VA = "0x180D2C450")]
		public void UpdateParameters()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC2 RID: 11202 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC2")]
		[Address(RVA = "0xD2BE10", Offset = "0xD2AC10", VA = "0x180D2BE10")]
		public void UpdateActiveParticles()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC3 RID: 11203 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC3")]
		[Address(RVA = "0xD2BFA0", Offset = "0xD2ADA0", VA = "0x180D2BFA0")]
		public void UpdateEmitterMaterials()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC4 RID: 11204 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC4")]
		[Address(RVA = "0xD2D190", Offset = "0xD2BF90", VA = "0x180D2D190")]
		private void emitterMaterial_OnChangesMade(object sender, ObiEmitterMaterial.MaterialChangeEventArgs e)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC5 RID: 11205 RVA: 0x0005E600 File Offset: 0x0005C800
		[Token(Token = "0x6002BC5")]
		[Address(RVA = "0xD29E30", Offset = "0xD28C30", VA = "0x180D29E30")]
		public void AccumulateSimulationTime(float dt)
		{
			Oni.AddSimulationTime(this.oniSolver, dt);
		}

		// Token: 0x06002BC6 RID: 11206 RVA: 0x0005E61C File Offset: 0x0005C81C
		[Token(Token = "0x6002BC6")]
		[Address(RVA = "0xD2B650", Offset = "0xD2A450", VA = "0x180D2B650")]
		public void ResetSimulationTime()
		{
			Oni.ResetSimulationTime(this.oniSolver);
		}

		// Token: 0x06002BC7 RID: 11207 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC7")]
		[Address(RVA = "0xD2B6D0", Offset = "0xD2A4D0", VA = "0x180D2B6D0")]
		public void SimulateStep(float stepTime)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC8 RID: 11208 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BC8")]
		[Address(RVA = "0xD2A7E0", Offset = "0xD295E0", VA = "0x180D2A7E0")]
		public void EndFrame(float frameDelta)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BC9 RID: 11209 RVA: 0x0005E634 File Offset: 0x0005C834
		[Token(Token = "0x6002BC9")]
		[Address(RVA = "0xD2BC20", Offset = "0xD2AA20", VA = "0x180D2BC20")]
		private void TriggerFluidUpdateEvents()
		{
			int constraintCount = Oni.GetConstraintCount(this.oniSolver, 6);
			if (constraintCount > 0 && this.OnFluidUpdated != (ulong)0L)
			{
				int[] array = new int[constraintCount];
				Vector4[] array2 = new Vector4[this.maxParticles];
				float[] array3 = new float[this.maxParticles];
				IntPtr intPtr = this.oniSolver;
				Oni.GetActiveConstraintIndices(intPtr, array, constraintCount, 6);
				int num = this.maxParticles;
				int num2 = 0;
				int particleVorticities = Oni.GetParticleVorticities(this.oniSolver, array2, num, num2);
				int num3 = this.maxParticles;
				int num4 = 0;
				int particleDensities = Oni.GetParticleDensities(this.oniSolver, array3, num3, num4);
				EventHandler<ObiSolver.ObiFluidEventArgs> onFluidUpdated = this.OnFluidUpdated;
				ObiSolver.ObiFluidEventArgs obiFluidEventArgs = new ObiSolver.ObiFluidEventArgs(array, array2, array3);
				onFluidUpdated(this, obiFluidEventArgs);
			}
		}

		// Token: 0x06002BCA RID: 11210 RVA: 0x0005E6F4 File Offset: 0x0005C8F4
		[Token(Token = "0x6002BCA")]
		[Address(RVA = "0xD2BB30", Offset = "0xD2A930", VA = "0x180D2BB30")]
		private void TriggerCollisionEvents()
		{
			int constraintCount = Oni.GetConstraintCount(this.oniSolver, 7);
			if (this.OnCollision != (ulong)0L)
			{
				Oni.Contact[] array = new Oni.Contact[constraintCount];
				if (constraintCount > 0)
				{
					Oni.GetCollisionContacts(this.oniSolver, array, constraintCount);
				}
				EventHandler<ObiSolver.ObiCollisionEventArgs> onCollision = this.OnCollision;
				ObiSolver.ObiCollisionEventArgs obiCollisionEventArgs = new ObiSolver.ObiCollisionEventArgs(array);
				onCollision(this, obiCollisionEventArgs);
			}
		}

		// Token: 0x06002BCB RID: 11211 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BCB")]
		[Address(RVA = "0xD2A330", Offset = "0xD29130", VA = "0x180D2A330")]
		private bool AreBoundsValid(Bounds bounds)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BCC RID: 11212 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BCC")]
		[Address(RVA = "0xD2A4C0", Offset = "0xD292C0", VA = "0x180D2A4C0")]
		private void CheckVisibility()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BCD RID: 11213 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BCD")]
		[Address(RVA = "0xD2C600", Offset = "0xD2B400", VA = "0x180D2C600")]
		private void Update()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BCE RID: 11214 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BCE")]
		[Address(RVA = "0xD2B660", Offset = "0xD2A460", VA = "0x180D2B660")]
		private IEnumerator RunLateFixedUpdate()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BCF RID: 11215 RVA: 0x0005E750 File Offset: 0x0005C950
		[Token(Token = "0x6002BCF")]
		[Address(RVA = "0xD2AD40", Offset = "0xD29B40", VA = "0x180D2AD40")]
		private void FixedUpdate()
		{
			if (Application.isPlaying && this.initialized && this.simulate && (this.simulateWhenInvisible || this.isVisible) && this.simulationOrder == ObiSolver.SimulationOrder.FixedUpdate)
			{
				float fixedDeltaTime = Time.fixedDeltaTime;
				this.SimulateStep(fixedDeltaTime);
			}
		}

		// Token: 0x06002BD0 RID: 11216 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BD0")]
		[Address(RVA = "0xD2A0E0", Offset = "0xD28EE0", VA = "0x180D2A0E0")]
		public void AllSolversStepEnd()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002BD1 RID: 11217 RVA: 0x0005E7A4 File Offset: 0x0005C9A4
		[Token(Token = "0x6002BD1")]
		[Address(RVA = "0xD2B170", Offset = "0xD29F70", VA = "0x180D2B170")]
		private void LateUpdate()
		{
			if (Application.isPlaying && this.initialized && this.simulate && (this.simulateWhenInvisible || this.isVisible) && this.simulationOrder == ObiSolver.SimulationOrder.LateUpdate)
			{
				float deltaTime = Time.deltaTime;
				float num = this.smoothDelta;
				float num2 = Mathf.Lerp(deltaTime, num, 0.95f);
				IntPtr intPtr = this.oniSolver;
				num = num2;
				this.smoothDelta = num2;
				Oni.AddSimulationTime(intPtr, num);
				float num3 = this.smoothDelta;
				this.SimulateStep(num3);
			}
			if (Application.isPlaying)
			{
				if (this.simulationOrder == ObiSolver.SimulationOrder.LateUpdate)
				{
				}
				float fixedDeltaTime = Time.fixedDeltaTime;
				this.EndFrame(fixedDeltaTime);
				EventHandler onFrameEnd = this.OnFrameEnd;
				if (onFrameEnd != 0)
				{
					int num4 = 0;
					onFrameEnd(this, num4);
					return;
				}
			}
		}

		// Token: 0x06002BD2 RID: 11218 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002BD2")]
		[Address(RVA = "0xD2C780", Offset = "0xD2B580", VA = "0x180D2C780")]
		public ObiSolver()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x04003419 RID: 13337
		[Token(Token = "0x4003419")]
		public const int MAX_NEIGHBOURS = 92;

		// Token: 0x0400341A RID: 13338
		[Token(Token = "0x400341A")]
		public const int CONSTRAINT_GROUPS = 12;

		// Token: 0x04003424 RID: 13348
		[FieldOffset(Offset = "0x60")]
		[Token(Token = "0x4003424")]
		public int maxParticles;

		// Token: 0x04003425 RID: 13349
		[FieldOffset(Offset = "0x64")]
		[Token(Token = "0x4003425")]
		[HideInInspector]
		[NonSerialized]
		public bool simulate;

		// Token: 0x04003426 RID: 13350
		[FieldOffset(Offset = "0x65")]
		[Token(Token = "0x4003426")]
		[Tooltip("If enabled, will force the solver to keep simulating even when not visible from any camera.")]
		public bool simulateWhenInvisible;

		// Token: 0x04003427 RID: 13351
		[FieldOffset(Offset = "0x66")]
		[Token(Token = "0x4003427")]
		[Tooltip("If enabled, the solver object transform will be used as the frame of reference for all actors using this solver, instead of the world's frame.")]
		public bool simulateInLocalSpace;

		// Token: 0x04003428 RID: 13352
		[FieldOffset(Offset = "0x68")]
		[Token(Token = "0x4003428")]
		[Tooltip("Determines when will the solver update particles.")]
		public ObiSolver.SimulationOrder simulationOrder;

		// Token: 0x04003429 RID: 13353
		[FieldOffset(Offset = "0x6C")]
		[Token(Token = "0x4003429")]
		public LayerMask collisionLayers;

		// Token: 0x0400342A RID: 13354
		[FieldOffset(Offset = "0x70")]
		[Token(Token = "0x400342A")]
		public Oni.SolverParameters parameters;

		// Token: 0x0400342B RID: 13355
		[FieldOffset(Offset = "0x98")]
		[Token(Token = "0x400342B")]
		[HideInInspector]
		[NonSerialized]
		public List<ObiActor> actors;

		// Token: 0x0400342C RID: 13356
		[FieldOffset(Offset = "0xA0")]
		[Token(Token = "0x400342C")]
		private int allocatedParticleCount;

		// Token: 0x0400342D RID: 13357
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x400342D")]
		[HideInInspector]
		[NonSerialized]
		public ObiSolver.ParticleInActor[] particleToActor;

		// Token: 0x0400342E RID: 13358
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x400342E")]
		[HideInInspector]
		[NonSerialized]
		public int[] materialIndices;

		// Token: 0x0400342F RID: 13359
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x400342F")]
		[HideInInspector]
		[NonSerialized]
		public int[] fluidMaterialIndices;

		// Token: 0x04003430 RID: 13360
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4003430")]
		private int[] activeParticles;

		// Token: 0x04003431 RID: 13361
		[FieldOffset(Offset = "0xC8")]
		[Token(Token = "0x4003431")]
		private List<ObiEmitterMaterial> emitterMaterials;

		// Token: 0x04003432 RID: 13362
		[FieldOffset(Offset = "0xD0")]
		[Token(Token = "0x4003432")]
		[HideInInspector]
		[NonSerialized]
		public Vector4[] renderablePositions;

		// Token: 0x04003433 RID: 13363
		[FieldOffset(Offset = "0xD8")]
		[Token(Token = "0x4003433")]
		[HideInInspector]
		public int[] constraintsOrder;

		// Token: 0x04003434 RID: 13364
		[FieldOffset(Offset = "0xE0")]
		[Token(Token = "0x4003434")]
		public Oni.ConstraintParameters distanceConstraintParameters;

		// Token: 0x04003435 RID: 13365
		[FieldOffset(Offset = "0xED")]
		[Token(Token = "0x4003435")]
		public Oni.ConstraintParameters bendingConstraintParameters;

		// Token: 0x04003436 RID: 13366
		[FieldOffset(Offset = "0xFA")]
		[Token(Token = "0x4003436")]
		public Oni.ConstraintParameters particleCollisionConstraintParameters;

		// Token: 0x04003437 RID: 13367
		[FieldOffset(Offset = "0x107")]
		[Token(Token = "0x4003437")]
		public Oni.ConstraintParameters collisionConstraintParameters;

		// Token: 0x04003438 RID: 13368
		[FieldOffset(Offset = "0x114")]
		[Token(Token = "0x4003438")]
		public Oni.ConstraintParameters skinConstraintParameters;

		// Token: 0x04003439 RID: 13369
		[FieldOffset(Offset = "0x121")]
		[Token(Token = "0x4003439")]
		public Oni.ConstraintParameters volumeConstraintParameters;

		// Token: 0x0400343A RID: 13370
		[FieldOffset(Offset = "0x12E")]
		[Token(Token = "0x400343A")]
		public Oni.ConstraintParameters tetherConstraintParameters;

		// Token: 0x0400343B RID: 13371
		[FieldOffset(Offset = "0x13B")]
		[Token(Token = "0x400343B")]
		public Oni.ConstraintParameters pinConstraintParameters;

		// Token: 0x0400343C RID: 13372
		[FieldOffset(Offset = "0x148")]
		[Token(Token = "0x400343C")]
		public Oni.ConstraintParameters stitchConstraintParameters;

		// Token: 0x0400343D RID: 13373
		[FieldOffset(Offset = "0x155")]
		[Token(Token = "0x400343D")]
		public Oni.ConstraintParameters densityConstraintParameters;

		// Token: 0x0400343E RID: 13374
		[FieldOffset(Offset = "0x168")]
		[Token(Token = "0x400343E")]
		private IntPtr oniSolver;

		// Token: 0x0400343F RID: 13375
		[FieldOffset(Offset = "0x170")]
		[Token(Token = "0x400343F")]
		private ObiEmitterMaterial defaultFluidMaterial;

		// Token: 0x04003440 RID: 13376
		[FieldOffset(Offset = "0x178")]
		[Token(Token = "0x4003440")]
		private Bounds bounds;

		// Token: 0x04003441 RID: 13377
		[FieldOffset(Offset = "0x190")]
		[Token(Token = "0x4003441")]
		private Matrix4x4 lastTransform;

		// Token: 0x04003442 RID: 13378
		[FieldOffset(Offset = "0x1D0")]
		[Token(Token = "0x4003442")]
		private bool initialized;

		// Token: 0x04003443 RID: 13379
		[FieldOffset(Offset = "0x1D1")]
		[Token(Token = "0x4003443")]
		private bool isVisible;

		// Token: 0x04003444 RID: 13380
		[FieldOffset(Offset = "0x1D4")]
		[Token(Token = "0x4003444")]
		private float smoothDelta;

		// Token: 0x04003445 RID: 13381
		[FieldOffset(Offset = "0x1D8")]
		[Token(Token = "0x4003445")]
		private int renderablePositionsClients;

		// Token: 0x020004DD RID: 1245
		[Token(Token = "0x20004DD")]
		public enum SimulationOrder
		{
			// Token: 0x04003447 RID: 13383
			[Token(Token = "0x4003447")]
			FixedUpdate,
			// Token: 0x04003448 RID: 13384
			[Token(Token = "0x4003448")]
			AfterFixedUpdate,
			// Token: 0x04003449 RID: 13385
			[Token(Token = "0x4003449")]
			LateUpdate
		}

		// Token: 0x020004DE RID: 1246
		[Token(Token = "0x20004DE")]
		public class ObiCollisionEventArgs : EventArgs
		{
			// Token: 0x06002BD4 RID: 11220 RVA: 0x0005E874 File Offset: 0x0005CA74
			[Token(Token = "0x6002BD4")]
			[Address(RVA = "0x69F3E0", Offset = "0x69E1E0", VA = "0x18069F3E0")]
			public ObiCollisionEventArgs(Oni.Contact[] contacts)
			{
				/*
An exception occurred when decompiling this method (06002BD4)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void Obi.ObiSolver/ObiCollisionEventArgs::.ctor(Oni/Contact[])

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	call:void(EventArgs::.ctor, ldloc:ObiCollisionEventArgs[exp:EventArgs](this)); 	stfld:valuetype Oni/Contact[](ObiCollisionEventArgs::contacts, ldloc:ObiCollisionEventArgs(this), ldloc:valuetype Oni/Contact[](contacts)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}

			// Token: 0x0400344A RID: 13386
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x400344A")]
			public Oni.Contact[] contacts;
		}

		// Token: 0x020004DF RID: 1247
		[Token(Token = "0x20004DF")]
		public class ObiFluidEventArgs : EventArgs
		{
			// Token: 0x06002BD5 RID: 11221 RVA: 0x0005E890 File Offset: 0x0005CA90
			[Token(Token = "0x6002BD5")]
			[Address(RVA = "0x69F450", Offset = "0x69E250", VA = "0x18069F450")]
			public ObiFluidEventArgs(int[] indices, Vector4[] vorticities, float[] densities)
			{
				/*
An exception occurred when decompiling this method (06002BD5)

ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void Obi.ObiSolver/ObiFluidEventArgs::.ctor(System.Int32[],UnityEngine.Vector4[],System.Single[])

 ---> System.Exception: Basic block has to end with unconditional control flow. 
{; 	Block_0:; 	call:void(EventArgs::.ctor, ldloc:ObiFluidEventArgs[exp:EventArgs](this)); 	stfld:int32[](ObiFluidEventArgs::indices, ldloc:ObiFluidEventArgs(this), ldloc:int32[](indices)); 	stfld:valuetype [UnityEngine.CoreModule]UnityEngine.Vector4[](ObiFluidEventArgs::vorticities, ldloc:ObiFluidEventArgs(this), ldloc:valuetype [UnityEngine.CoreModule]UnityEngine.Vector4[](vorticities)); 	stfld:float32[](ObiFluidEventArgs::densities, ldloc:ObiFluidEventArgs(this), ldloc:float32[](densities)); }; 
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
   at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
   --- End of inner exception stack trace ---
   at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
   at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
*/;
			}

			// Token: 0x0400344B RID: 13387
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x400344B")]
			public int[] indices;

			// Token: 0x0400344C RID: 13388
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x400344C")]
			public Vector4[] vorticities;

			// Token: 0x0400344D RID: 13389
			[FieldOffset(Offset = "0x20")]
			[Token(Token = "0x400344D")]
			public float[] densities;
		}

		// Token: 0x020004E0 RID: 1248
		[Token(Token = "0x20004E0")]
		public class ParticleInActor
		{
			// Token: 0x06002BD6 RID: 11222 RVA: 0x0005E8B8 File Offset: 0x0005CAB8
			[Token(Token = "0x6002BD6")]
			[Address(RVA = "0x69F910", Offset = "0x69E710", VA = "0x18069F910")]
			public ParticleInActor(ObiActor actor, int indexInActor)
			{
				this.actor = actor;
				this.indexInActor = indexInActor;
			}

			// Token: 0x0400344E RID: 13390
			[FieldOffset(Offset = "0x10")]
			[Token(Token = "0x400344E")]
			public ObiActor actor;

			// Token: 0x0400344F RID: 13391
			[FieldOffset(Offset = "0x18")]
			[Token(Token = "0x400344F")]
			public int indexInActor;
		}
	}
}
