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

namespace Obi
{
	// Token: 0x0200048D RID: 1165
	[Token(Token = "0x200048D")]
	[ExecuteInEditMode]
	[AddComponentMenu("Physics/Obi/Obi Bone")]
	[RequireComponent(typeof(ObiDistanceConstraints))]
	[RequireComponent(typeof(ObiBendingConstraints))]
	[RequireComponent(typeof(ObiSkinConstraints))]
	public class ObiBone : ObiActor
	{
		// Token: 0x170002B1 RID: 689
		// (get) Token: 0x06002953 RID: 10579 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x170002B1")]
		public ObiSkinConstraints SkinConstraints
		{
			[Token(Token = "0x6002953")]
			[Address(RVA = "0x10002F0", Offset = "0xFFF0F0", VA = "0x1810002F0")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x170002B2 RID: 690
		// (get) Token: 0x06002954 RID: 10580 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x170002B2")]
		public ObiDistanceConstraints DistanceConstraints
		{
			[Token(Token = "0x6002954")]
			[Address(RVA = "0x1000240", Offset = "0xFFF040", VA = "0x181000240")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x170002B3 RID: 691
		// (get) Token: 0x06002955 RID: 10581 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x170002B3")]
		public ObiBendingConstraints BendingConstraints
		{
			[Token(Token = "0x6002955")]
			[Address(RVA = "0x1000190", Offset = "0xFFEF90", VA = "0x181000190")]
			get
			{
				throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
			}
		}

		// Token: 0x06002956 RID: 10582 RVA: 0x0005AA24 File Offset: 0x00058C24
		[Token(Token = "0x6002956")]
		[Address(RVA = "0xFFEE60", Offset = "0xFFDC60", VA = "0x180FFEE60", Slot = "13")]
		public override void Awake()
		{
			base..ctor();
			Animator componentInParent = base.GetComponentInParent<Animator>();
			int num = 0;
			if (componentInParent != num)
			{
				ObiAnimatorController component = componentInParent.GetComponent<ObiAnimatorController>();
				this.animatorController = component;
				ObiAnimatorController obiAnimatorController = this.animatorController;
				int num2 = 0;
				if (obiAnimatorController == num2)
				{
					ObiAnimatorController obiAnimatorController2 = componentInParent.gameObject.AddComponent<ObiAnimatorController>();
					this.animatorController = obiAnimatorController2;
				}
			}
		}

		// Token: 0x06002957 RID: 10583 RVA: 0x0005AA88 File Offset: 0x00058C88
		[Token(Token = "0x6002957")]
		[Address(RVA = "0xFFF970", Offset = "0xFFE770", VA = "0x180FFF970")]
		public void OnValidate()
		{
			float num = this.particleRadius;
			float num2 = Mathf.Max((float)0, num);
			this.particleRadius = num2;
		}

		// Token: 0x06002958 RID: 10584 RVA: 0x0005AAAC File Offset: 0x00058CAC
		[Token(Token = "0x6002958")]
		[Address(RVA = "0xFFF090", Offset = "0xFFDE90", VA = "0x180FFF090", Slot = "30")]
		public override void OnSolverFrameEnd()
		{
			base..ctor();
			this.UpdateBones();
		}

		// Token: 0x06002959 RID: 10585 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002959")]
		[Address(RVA = "0xFFEE10", Offset = "0xFFDC10", VA = "0x180FFEE10", Slot = "21")]
		public override bool AddToSolver(object info)
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600295A RID: 10586 RVA: 0x0005AAC8 File Offset: 0x00058CC8
		[Token(Token = "0x600295A")]
		[Address(RVA = "0xFFF9A0", Offset = "0xFFE7A0", VA = "0x180FFF9A0", Slot = "22")]
		public override bool RemoveFromSolver(object info)
		{
			ObiSolver solver = this.solver;
			int num = 0;
			if (solver != num)
			{
				this.solver.RelinquishRenderablePositions();
			}
			return base.RemoveFromSolver(info);
		}

		// Token: 0x0600295B RID: 10587 RVA: 0x0005AB00 File Offset: 0x00058D00
		[Token(Token = "0x600295B")]
		[Address(RVA = "0xFFFC90", Offset = "0xFFEA90", VA = "0x180FFFC90")]
		private void SetupAnimatorController()
		{
			Animator componentInParent = base.GetComponentInParent<Animator>();
			int num = 0;
			if (componentInParent != num)
			{
				ObiAnimatorController component = componentInParent.GetComponent<ObiAnimatorController>();
				this.animatorController = component;
				ObiAnimatorController obiAnimatorController = this.animatorController;
				int num2 = 0;
				if (obiAnimatorController == num2)
				{
					ObiAnimatorController obiAnimatorController2 = componentInParent.gameObject.AddComponent<ObiAnimatorController>();
					this.animatorController = obiAnimatorController2;
				}
			}
		}

		// Token: 0x0600295C RID: 10588 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600295C")]
		[Address(RVA = "0xFFEFB0", Offset = "0xFFDDB0", VA = "0x180FFEFB0")]
		private IEnumerable EnumerateBonesBreadthFirst()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600295D RID: 10589 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600295D")]
		[Address(RVA = "0xFFF020", Offset = "0xFFDE20", VA = "0x180FFF020")]
		public IEnumerator GeneratePhysicRepresentationForBones()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600295E RID: 10590 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x600295E")]
		[Address(RVA = "0xFFF0B0", Offset = "0xFFDEB0", VA = "0x180FFF0B0", Slot = "27")]
		public override void OnSolverStepBegin()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x0600295F RID: 10591 RVA: 0x0005AB60 File Offset: 0x00058D60
		[Token(Token = "0x600295F")]
		[Address(RVA = "0xFFF8E0", Offset = "0xFFE6E0", VA = "0x180FFF8E0", Slot = "28")]
		public override void OnSolverStepEnd()
		{
			base..ctor();
			ObiAnimatorController obiAnimatorController = this.animatorController;
			int num = 0;
			if (obiAnimatorController != num)
			{
				this.animatorController.updatedThisStep = false;
			}
		}

		// Token: 0x06002960 RID: 10592 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002960")]
		[Address(RVA = "0xFFFDE0", Offset = "0xFFEBE0", VA = "0x180FFFDE0")]
		public void UpdateBones()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002961 RID: 10593 RVA: 0x000020D3 File Offset: 0x000002D3
		[Token(Token = "0x6002961")]
		[Address(RVA = "0xFFFA40", Offset = "0xFFE840", VA = "0x180FFFA40", Slot = "19")]
		public override void ResetActor()
		{
			throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
		}

		// Token: 0x06002962 RID: 10594 RVA: 0x0005AB98 File Offset: 0x00058D98
		[Token(Token = "0x6002962")]
		[Address(RVA = "0x1000170", Offset = "0xFFEF70", VA = "0x181000170")]
		public ObiBone()
		{
		}

		// Token: 0x0400328E RID: 12942
		[Token(Token = "0x400328E")]
		public const float DEFAULT_PARTICLE_MASS = 0.1f;

		// Token: 0x0400328F RID: 12943
		[Token(Token = "0x400328F")]
		public const float MAX_YOUNG_MODULUS = 20f;

		// Token: 0x04003290 RID: 12944
		[Token(Token = "0x4003290")]
		public const float MIN_YOUNG_MODULUS = 0.0001f;

		// Token: 0x04003291 RID: 12945
		[FieldOffset(Offset = "0xA8")]
		[Token(Token = "0x4003291")]
		[Tooltip("Initial particle radius.")]
		public float particleRadius = 0.05f;

		// Token: 0x04003292 RID: 12946
		[FieldOffset(Offset = "0xB0")]
		[Token(Token = "0x4003292")]
		[SerializeField]
		[HideInInspector]
		private List<Transform> bones;

		// Token: 0x04003293 RID: 12947
		[FieldOffset(Offset = "0xB8")]
		[Token(Token = "0x4003293")]
		[HideInInspector]
		[SerializeField]
		private int[] parentIndices;

		// Token: 0x04003294 RID: 12948
		[FieldOffset(Offset = "0xC0")]
		[Token(Token = "0x4003294")]
		[HideInInspector]
		public bool[] frozen;

		// Token: 0x04003295 RID: 12949
		[FieldOffset(Offset = "0xC8")]
		[Token(Token = "0x4003295")]
		protected ObiAnimatorController animatorController;
	}
}
