Decompiled source of Venerated PlayerBody v1.0.3

Venerated_PlayerBody.dll

Decompiled 3 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Logging;
using DestinyScript;
using FistVR;
using H3MP;
using H3MP.Scripts;
using OtherLoader;
using RootMotion;
using RootMotion.FinalIK;
using RootMotion1.FinalIK;
using UnityEditor;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Events;
using UnityEngine.Serialization;

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
namespace JerryComponent
{
	public class Blink : MonoBehaviour
	{
		public SkinnedMeshRenderer skin;

		private float blendOne = 0f;

		private float blendSpeed = 100f;

		private bool blinked;

		private float nextTime;

		private float rate = 5f;

		private void Start()
		{
			((MonoBehaviour)this).InvokeRepeating("blinkeyes25", 5.02f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes50", 5.04f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes75", 5.06f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes100", 5.08f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes0", 5.1f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes25", 5.12f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes50", 5.14f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes75", 5.16f, 5f);
		}

		public void blinkeyes25()
		{
			skin.SetBlendShapeWeight(0, 25f);
		}

		public void blinkeyes50()
		{
			skin.SetBlendShapeWeight(0, 50f);
		}

		public void blinkeyes75()
		{
			skin.SetBlendShapeWeight(0, 75f);
		}

		public void blinkeyes100()
		{
			skin.SetBlendShapeWeight(0, 100f);
		}

		public void openeyes0()
		{
			skin.SetBlendShapeWeight(0, 75f);
		}

		public void openeyes25()
		{
			skin.SetBlendShapeWeight(0, 50f);
		}

		public void openeyes50()
		{
			skin.SetBlendShapeWeight(0, 25f);
		}

		public void openeyes75()
		{
			skin.SetBlendShapeWeight(0, 0f);
		}

		private void Update()
		{
		}
	}
	public class BlinkLena : MonoBehaviour
	{
		public SkinnedMeshRenderer skin;

		private float blendOne = 0f;

		private float blendSpeed = 100f;

		private bool blinked;

		private float nextTime;

		private float rate = 5f;

		private void Start()
		{
			((MonoBehaviour)this).InvokeRepeating("blinkeyes25", 5.02f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes50", 5.04f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes75", 5.06f, 5f);
			((MonoBehaviour)this).InvokeRepeating("blinkeyes100", 5.08f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes0", 5.1f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes25", 5.12f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes50", 5.14f, 5f);
			((MonoBehaviour)this).InvokeRepeating("openeyes75", 5.16f, 5f);
		}

		public void blinkeyes25()
		{
			skin.SetBlendShapeWeight(44, 25f);
		}

		public void blinkeyes50()
		{
			skin.SetBlendShapeWeight(44, 50f);
		}

		public void blinkeyes75()
		{
			skin.SetBlendShapeWeight(44, 75f);
		}

		public void blinkeyes100()
		{
			skin.SetBlendShapeWeight(44, 100f);
		}

		public void openeyes0()
		{
			skin.SetBlendShapeWeight(44, 75f);
		}

		public void openeyes25()
		{
			skin.SetBlendShapeWeight(44, 50f);
		}

		public void openeyes50()
		{
			skin.SetBlendShapeWeight(44, 25f);
		}

		public void openeyes75()
		{
			skin.SetBlendShapeWeight(44, 0f);
		}

		private void Update()
		{
		}
	}
}
namespace JerryLegsIK
{
	public class FOOTIK : MonoBehaviour
	{
		private Animator _animator;

		public LayerMask _layerMask;

		private Ray _ray;

		public Vector3 footOffset;

		[Range(0f, 1f)]
		public float rightFootPosWeight = 1f;

		[Range(0f, 1f)]
		public float rightFootRotWeight = 1f;

		[Range(0f, 1f)]
		public float leftFootPosWeight = 1f;

		[Range(0f, 1f)]
		public float leftFootRotWeight = 1f;

		private void Start()
		{
			_animator = ((Component)this).GetComponent<Animator>();
		}

		private void OnAnimatorIK(int layerIndex)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			Vector3 iKPosition = _animator.GetIKPosition((AvatarIKGoal)1);
			RaycastHit val = default(RaycastHit);
			if (Physics.Raycast(iKPosition + Vector3.up, Vector3.down, ref val, 2f, LayerMask.op_Implicit(_layerMask)))
			{
				_animator.SetIKPositionWeight((AvatarIKGoal)1, rightFootPosWeight);
				_animator.SetIKPosition((AvatarIKGoal)1, ((RaycastHit)(ref val)).point + footOffset);
				Quaternion val2 = Quaternion.LookRotation(Vector3.ProjectOnPlane(((Component)this).transform.forward, ((RaycastHit)(ref val)).normal), ((RaycastHit)(ref val)).normal);
				_animator.SetIKRotationWeight((AvatarIKGoal)1, rightFootRotWeight);
				_animator.SetIKRotation((AvatarIKGoal)1, val2);
			}
			else
			{
				_animator.SetIKPositionWeight((AvatarIKGoal)1, 0f);
			}
			Vector3 iKPosition2 = _animator.GetIKPosition((AvatarIKGoal)0);
			if (Physics.Raycast(iKPosition2 + Vector3.up, Vector3.down, ref val, 2f, LayerMask.op_Implicit(_layerMask)))
			{
				_animator.SetIKPositionWeight((AvatarIKGoal)0, leftFootPosWeight);
				_animator.SetIKPosition((AvatarIKGoal)0, ((RaycastHit)(ref val)).point + footOffset);
				Quaternion val3 = Quaternion.LookRotation(Vector3.ProjectOnPlane(((Component)this).transform.forward, ((RaycastHit)(ref val)).normal), ((RaycastHit)(ref val)).normal);
				_animator.SetIKRotationWeight((AvatarIKGoal)0, leftFootPosWeight);
				_animator.SetIKRotation((AvatarIKGoal)0, val3);
			}
			else
			{
				_animator.SetIKPositionWeight((AvatarIKGoal)0, 0f);
			}
		}
	}
}
namespace DestinyScript1
{
	public class HPR : MonoBehaviour
	{
		[Header("需要跟随VR设备的位置")]
		[Tooltip("(可选)头部的VR头显跟随与旋转位置")]
		public GameObject _head;

		public GameObject _neck;

		[Tooltip("双手跟随VR手柄的位置")]
		public Transform _ZuoShouWeiZhi;

		[Tooltip("双手跟随VR手柄的位置")]
		public Transform _YouShouWeiZhi;

		[Tooltip("(可选)VRIk脚本, 用来替换手部IK跟随位置")]
		public VRIK _VRIKCon;

		[Tooltip("(如果VRIK 为空 此处可以不添加)手部IK跟踪位置: 0 = VR手柄跟踪位, 1 = 武器抓握, 2 = 弹匣抓握, 3 = 护木抓握, 4 = 枪栓抓握,5 = 手枪滑套抓握, 6 = 子弹抓握, 7 = 手雷抓握, 8 = 手枪战术握法, 9 = 机枪机匣盖抓握位置")]
		public Transform[] _leftHandTarget;

		[Tooltip("(如果VRIK 为空 此处可以不添加)手部IK跟踪位置: 0 = VR手柄跟踪位, 1 = 武器抓握, 2 = 弹匣抓握, 3 = 护木抓握, 4 = 枪栓抓握,5 = 手枪滑套抓握, 6 = 子弹抓握, 7 = 手雷抓握, 8 = 手枪战术握法, 9 = 机枪机匣盖抓握位置")]
		public Transform[] _rightHandTarget;

		[Header("(可选)移动动画控制器")]
		public Animator playerAnime;

		[Header("(可选)左右手动画控制器")]
		public Animator leftHandAT;

		public Animator rightHandAT;

		[Header("移动动画float过渡条件名称")]
		public string AnimatorControllerName_X;

		public string AnimatorControllerName_Y;

		[Header("(如果左右手动画控制器为空 此处可以为空)动画bool过渡条件名称")]
		public string _gun;

		public string _mag;

		public string _grab;

		public string _bolt;

		public string _slide;

		public string _ammo;

		public string _trigger;

		public string _grenade;

		public string _HGCB;

		[Header("双手手指动画开关控制")]
		public AngryNoob_FingerTracking _leftFingerTraking;

		public AngryNoob_FingerTracking _ringtFingerTraking;

		public PlayerBody _h3mpbody;

		private GameObject _player;

		private FVRViveHand leftHand;

		private FVRViveHand rightHand;

		private FVRInteractiveObject _gameObejctOnHands;

		private bool _leftContinuousGrip = false;

		private bool _rightContinuousGrip = false;

		private bool _gripCut = false;

		private bool _fier;

		private void Awake()
		{
			_player = ((Component)Object.FindObjectOfType<FVRPlayerBody>()).gameObject;
		}

		private void Start()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			GameManager.OnPlayerBodyInit += new OnPlayerBodyInitDelegate(OnPlayerBodyInit);
			if ((Object)(object)Mod.managerObject == (Object)null)
			{
				leftHand = ((Component)_player.transform.Find("Controller (left)")).GetComponent<FVRViveHand>();
				rightHand = ((Component)_player.transform.Find("Controller (right)")).GetComponent<FVRViveHand>();
			}
			else if ((Object)(object)GameManager.currentPlayerBody == (Object)(object)_h3mpbody)
			{
				leftHand = ((Component)_player.transform.Find("Controller (left)")).GetComponent<FVRViveHand>();
				rightHand = ((Component)_player.transform.Find("Controller (right)")).GetComponent<FVRViveHand>();
			}
			else
			{
				Object.Destroy((Object)(object)this);
			}
		}

		public void OnPlayerBodyInit(FVRPlayerBody playerBody)
		{
			leftHand = ((Component)playerBody.LeftHand).GetComponent<FVRViveHand>();
			rightHand = ((Component)playerBody.RightHand).GetComponent<FVRViveHand>();
		}

		private void Update()
		{
			if ((Object)(object)leftHand != (Object)null)
			{
				HandFollow(leftHand, rightHand, _leftFingerTraking, ref _leftContinuousGrip, leftHandAT, rightHandAT, _leftHandTarget, _ZuoShouWeiZhi);
				HandFollow(rightHand, leftHand, _ringtFingerTraking, ref _rightContinuousGrip, rightHandAT, leftHandAT, _rightHandTarget, _YouShouWeiZhi);
				if ((Object)(object)_head != (Object)null && (Object)(object)_neck != (Object)null)
				{
					HeadFollowPlayerBody();
				}
				if ((Object)(object)playerAnime != (Object)null)
				{
					PlayerAnimC();
				}
			}
		}

		private void HeadFollowPlayerBody()
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			_head.transform.position = GM.CurrentPlayerBody.Head.position;
			_neck.transform.rotation = GM.CurrentPlayerBody.Head.rotation;
			if (leftHand.Input.Secondary2AxisInputAxes.x >= 0.01f || leftHand.Input.Secondary2AxisInputAxes.y >= 0.01f || rightHand.Input.Secondary2AxisInputAxes.x >= 0.01f || rightHand.Input.Secondary2AxisInputAxes.y >= 0.01f)
			{
				Vector3 forward = _head.transform.forward;
				forward.y = 0f;
				((Component)this).transform.rotation = Quaternion.LookRotation(forward, Vector3.up);
			}
		}

		private void HandFollow(FVRViveHand _hands, FVRViveHand _otherHand, AngryNoob_FingerTracking _fingerT, ref bool _Grip, Animator _handAnimator, Animator _otherHandAnim, Transform[] _handTarget, Transform _handPos)
		{
			//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_030f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_hands.CurrentInteractable != (Object)null)
			{
				_gameObejctOnHands = ((Component)_hands.CurrentInteractable).GetComponent<FVRInteractiveObject>();
				_fingerT._handGrap = true;
				if ((Object)(object)_gameObejctOnHands.PoseOverride_Touch == (Object)null && _hands.m_timeGripButtonHasBeenHeld > 0f && !_Grip)
				{
					_Grip = true;
				}
				if ((Object)(object)_handAnimator != (Object)null)
				{
					HandsAnimationControll(_handAnimator, _otherHandAnim, _handTarget, _hands, _otherHand);
				}
				if ((Object)(object)_gameObejctOnHands.PoseOverride_Touch != (Object)null && !_Grip)
				{
					_handPos.position = _gameObejctOnHands.PoseOverride_Touch.position;
					_handPos.rotation = _gameObejctOnHands.PoseOverride_Touch.rotation;
				}
				else if ((Object)(object)_gameObejctOnHands.PoseOverride_Touch != (Object)null && _Grip)
				{
					_handPos.position = ((Component)_hands).transform.position;
					_handPos.rotation = ((Component)_hands).transform.rotation;
				}
				else if (HandAnimControll(_otherHand) == 2 || HandAnimControll(_otherHand) == 9)
				{
					_handPos.position = ((Component)_hands.CurrentInteractable).gameObject.transform.position;
					_handPos.rotation = ((Component)_hands.CurrentInteractable).gameObject.transform.rotation;
				}
				else
				{
					_handPos.position = ((Component)_hands.CurrentInteractable).gameObject.transform.position;
					_handPos.rotation = ((Component)_hands).transform.rotation;
				}
				return;
			}
			if ((Object)(object)_otherHand.CurrentInteractable != (Object)null && (Object)(object)_hands.CurrentInteractable == (Object)null && DoubleHandMasturbating(_otherHand))
			{
				_fingerT._handGrap = true;
				return;
			}
			_gameObejctOnHands = null;
			if ((Object)(object)_handAnimator != (Object)null)
			{
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_HGCB, false);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hands).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handTarget[0];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handTarget[0];
				}
			}
			_fingerT._handGrap = false;
			_Grip = false;
			_handPos.position = ((Component)_hands).transform.position;
			_handPos.rotation = ((Component)_hands).transform.rotation;
		}

		private void HandsAnimationControll(Animator _handAnimator, Animator _otherHandAnim, Transform[] _handFollowPos, FVRViveHand _hand, FVRViveHand _otherHand)
		{
			switch (HandAnimControll(_otherHand))
			{
			case 1:
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_mag, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[2];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[2];
				}
				break;
			case 2:
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_grab, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[3];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[3];
				}
				break;
			case 3:
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_gun, true);
				_handAnimator.SetBool(_trigger, HandGunFier(_hand));
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[1];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[1];
				}
				break;
			case 4:
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_bolt, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[1];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[1];
				}
				break;
			case 5:
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_slide, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[5];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[5];
				}
				break;
			case 6:
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_mag, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[2];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[2];
				}
				break;
			case 7:
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_mag, false);
				_handAnimator.SetBool(_grenade, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[7];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[7];
				}
				break;
			case 8:
				_otherHandAnim.SetBool(_ammo, false);
				_handAnimator.SetBool(_trigger, HandGunFier(_hand));
				_otherHandAnim.SetBool(_trigger, false);
				_otherHandAnim.SetBool(_grab, false);
				_otherHandAnim.SetBool(_gun, false);
				_otherHandAnim.SetBool(_slide, false);
				_otherHandAnim.SetBool(_bolt, false);
				_otherHandAnim.SetBool(_mag, false);
				_otherHandAnim.SetBool(_grenade, false);
				_otherHandAnim.SetBool(_HGCB, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[8];
				}
				else
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[8];
				}
				break;
			case 9:
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_HGCB, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_mag, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[9];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[9];
				}
				break;
			default:
				_handAnimator.SetBool(_gun, false);
				_handAnimator.SetBool(_trigger, false);
				_handAnimator.SetBool(_grenade, false);
				_handAnimator.SetBool(_bolt, false);
				_handAnimator.SetBool(_grab, false);
				_handAnimator.SetBool(_slide, false);
				_handAnimator.SetBool(_ammo, false);
				_handAnimator.SetBool(_gun, true);
				if ((Object)(object)_VRIKCon != (Object)null && ((Object)((Component)_hand).transform).name == ((Object)((Component)leftHand).transform).name)
				{
					_VRIKCon.solver.leftArm.target = _handFollowPos[1];
				}
				else
				{
					_VRIKCon.solver.rightArm.target = _handFollowPos[1];
				}
				break;
			}
		}

		private int HandAnimControll(FVRViveHand _otherHand)
		{
			int result = 1;
			if (typeof(FVRFireArm).IsAssignableFrom(((object)_gameObejctOnHands).GetType()))
			{
				result = 3;
			}
			if (typeof(FVRFireArm).IsAssignableFrom(((object)_gameObejctOnHands).GetType()) && DoubleHandMasturbating(_otherHand) && (Object)(object)_otherHand.CurrentInteractable == (Object)null)
			{
				result = 8;
			}
			if ((object)typeof(FVRFireArmMagazine) == ((object)_gameObejctOnHands).GetType())
			{
				result = 1;
			}
			if ((object)typeof(ClosedBoltHandle) == ((object)_gameObejctOnHands).GetType() || (object)typeof(ClosedBolt) == ((object)_gameObejctOnHands).GetType() || (object)typeof(BoltActionRifle_Handle) == ((object)_gameObejctOnHands).GetType() || (object)typeof(OpenBoltChargingHandle) == ((object)_gameObejctOnHands).GetType() || (object)typeof(OpenBoltReceiverBolt) == ((object)_gameObejctOnHands).GetType())
			{
				result = 4;
			}
			if ((object)typeof(FVRAlternateGrip) == ((object)_gameObejctOnHands).GetType() || (object)typeof(TubeFedShotgunHandle) == ((object)_gameObejctOnHands).GetType())
			{
				result = 2;
			}
			if ((object)typeof(FVRFireArmRound) == ((object)_gameObejctOnHands).GetType())
			{
				result = 6;
			}
			if ((object)typeof(HandgunSlide) == ((object)_gameObejctOnHands).GetType())
			{
				result = 5;
			}
			if ((object)typeof(PinnedGrenade) == ((object)_gameObejctOnHands).GetType() || (object)typeof(FVRCappedGrenade) == ((object)_gameObejctOnHands).GetType())
			{
				result = 7;
			}
			if ((object)typeof(FVRFireArmTopCover) == ((object)_gameObejctOnHands).GetType())
			{
				result = 9;
			}
			return result;
		}

		private bool HandGunFier(FVRViveHand _hand)
		{
			if (_hand.Input.TriggerFloat >= 0.7f)
			{
				_fier = true;
			}
			else
			{
				_fier = false;
			}
			return _fier;
		}

		private bool DoubleHandMasturbating(FVRViveHand _otherHand)
		{
			if (HandsDistance() <= 0.15f && (Object)(object)_otherHand.CurrentInteractable == (Object)null && _otherHand.Input.TriggerDown)
			{
				_gripCut = !_gripCut;
			}
			if (HandsDistance() > 0.22f)
			{
				_gripCut = false;
			}
			return _gripCut;
		}

		private float HandsDistance()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			return Vector3.Distance(GM.CurrentMovementManager.LeftHand.position, GM.CurrentMovementManager.RightHand.position);
		}

		private void PlayerAnimC()
		{
			playerAnime.SetFloat(AnimatorControllerName_X, leftHand.Input.Secondary2AxisInputAxes.x);
			playerAnime.SetFloat(AnimatorControllerName_Y, leftHand.Input.Secondary2AxisInputAxes.y);
		}

		public void OnDestroy()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			GameManager.OnPlayerBodyInit -= new OnPlayerBodyInitDelegate(OnPlayerBodyInit);
		}
	}
}
namespace JerryLegsIK
{
	public class Kick : MonoBehaviour
	{
		public GameObject RotKick;

		public Animator _AnimateK;

		public Transform _KHandL;

		public Transform _KHandR;

		private Vector3 previousposL;

		private Vector3 previousposR;

		private Vector3 nextposL;

		private Vector3 nextposR;

		public float speedL;

		public float speedR;

		private float timer = 0f;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			previousposL = _KHandL.localPosition;
			previousposR = _KHandR.localPosition;
			speedL = Vector3.Magnitude(previousposL - nextposL) / Time.deltaTime;
			speedR = Vector3.Magnitude(previousposR - nextposR) / Time.deltaTime;
			nextposL = previousposL;
			nextposR = previousposR;
			timer += Time.deltaTime;
			if (timer >= 3f && RotKick.transform.localEulerAngles.x >= 45f && speedL >= 4f && speedR >= 4f)
			{
				_AnimateK.SetTrigger("Kick2");
				timer = 0f;
				Debug.Log((object)"is kicking");
			}
		}
	}
}
namespace JerryComponent
{
	public class PassOut : MonoBehaviour
	{
		private GM gm;

		public SkinnedMeshRenderer skin;

		public int mouth2;

		public int eye3;

		public int eye2;

		private void Start()
		{
			gm = GameObject.Find("_GameManager(Clone)").GetComponent<GM>();
		}

		private void Update()
		{
			if (Time.frameCount % 30 == 0)
			{
				PassedOut();
				Wake();
			}
		}

		public void PassedOut()
		{
			float blendShapeWeight = skin.GetBlendShapeWeight(eye3);
			if (gm.m_isDead && blendShapeWeight == 0f)
			{
				skin.SetBlendShapeWeight(eye2, 100f);
				skin.SetBlendShapeWeight(mouth2, 50f);
			}
		}

		public void Wake()
		{
			if (!gm.m_isDead)
			{
				skin.SetBlendShapeWeight(eye2, 0f);
				skin.SetBlendShapeWeight(mouth2, 0f);
			}
		}
	}
	public class TakingDamage : MonoBehaviour
	{
		private ParticleSystem ps;

		private FVRPlayerBody pbh;

		public SkinnedMeshRenderer skin;

		public int num;

		public int eye2;

		public int mouth;

		public int mouth2;

		public int eye3;

		private void Start()
		{
			ps = GameObject.Find("DamagePSystemLight").GetComponent<ParticleSystem>();
			pbh = GameObject.Find("[CameraRig]Fixed").GetComponent<FVRPlayerBody>();
		}

		private void Update()
		{
			if (Time.frameCount % 10 == 0)
			{
				Blinkeyes100();
				Openeyes75();
			}
		}

		private void Blinkeyes100()
		{
			if ((float)ps.particleCount > 0f)
			{
				skin.SetBlendShapeWeight(eye3, 0f);
				skin.SetBlendShapeWeight(num, 100f);
				skin.SetBlendShapeWeight(mouth, 50f);
			}
		}

		public void Openeyes75()
		{
			if ((float)ps.particleCount <= 0f)
			{
				skin.SetBlendShapeWeight(num, 0f);
				skin.SetBlendShapeWeight(mouth, 0f);
			}
		}
	}
}
namespace JerryLegsIK
{
	public class VRMAP : MonoBehaviour
	{
		public Transform vrTarget;

		public Transform rigTarget;

		public Vector3 trackingPositionOffset;

		public Vector3 trackingRotationOffset;

		public void Map()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			rigTarget.position = vrTarget.TransformPoint(trackingPositionOffset);
			rigTarget.rotation = vrTarget.rotation * Quaternion.Euler(trackingRotationOffset);
		}

		private void Start()
		{
		}

		private void Update()
		{
		}
	}
	public class VRRIG : MonoBehaviour
	{
		public VRMAP head;

		public Transform headConstraint;

		public Vector3 headBodyOffset;

		private void Start()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			headBodyOffset = ((Component)this).transform.position - headConstraint.position;
		}

		private void Update()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			((Component)this).transform.position = headConstraint.position + headBodyOffset;
			Transform transform = ((Component)this).transform;
			Vector3 val = Vector3.ProjectOnPlane(headConstraint.up, Vector3.up);
			transform.forward = ((Vector3)(ref val)).normalized;
			head.Map();
		}
	}
	public class VRanimatorcontroller : MonoBehaviour
	{
		public float speedTreshold = 0.1f;

		[Range(0f, 1f)]
		public float smoothing = 1f;

		private Animator animator;

		private Vector3 previouspos;

		private VRRIG vrRig;

		private void Start()
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			animator = ((Component)this).GetComponent<Animator>();
			vrRig = ((Component)this).GetComponent<VRRIG>();
			previouspos = vrRig.head.vrTarget.position;
		}

		private void Update()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = (vrRig.head.vrTarget.position - previouspos) / Time.deltaTime;
			val.y = 0f;
			Vector3 val2 = ((Component)this).transform.InverseTransformDirection(val);
			previouspos = vrRig.head.vrTarget.position;
			float @float = animator.GetFloat("D_X");
			float float2 = animator.GetFloat("D_Y");
			animator.SetBool("IsMoving", ((Vector3)(ref val2)).magnitude > speedTreshold);
			animator.SetFloat("D_X", Mathf.Lerp(@float, Mathf.Clamp(val2.x, -1f, 1f), smoothing));
			animator.SetFloat("D_Y", Mathf.Lerp(float2, Mathf.Clamp(val2.z, -1f, 1f), smoothing));
		}
	}
}
namespace JerryComponent
{
	public class control_component : MonoBehaviour
	{
		public GameObject Comp;

		public GameObject Comp2;

		public GameObject Rot;

		private void Start()
		{
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if (Rot.transform.localEulerAngles.x >= 45f)
			{
				Comp.SetActive(false);
				Comp2.SetActive(true);
			}
			else
			{
				Comp.SetActive(true);
				Comp2.SetActive(false);
			}
		}
	}
}
public class CameraController : MonoBehaviour
{
	public GameObject mTarget;

	public Vector3 mDistance;

	public float mSpeed = 5f;

	private void Update()
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		((Component)((Component)this).GetComponent<Camera>()).transform.LookAt(mTarget.transform.position);
		((Component)((Component)this).GetComponent<Camera>()).transform.position = ((Component)((Component)this).GetComponent<Camera>()).transform.position + mSpeed * Time.deltaTime * (mTarget.transform.position + mDistance - ((Component)((Component)this).GetComponent<Camera>()).transform.position);
	}
}
public class IdleUpdate : StateMachineBehaviour
{
	private float mIdleRayCast = 0.5f;

	public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
	{
		((Component)animator).GetComponent<MecFootPlacer>().DisablePlant((AvatarIKGoal)0, 2f);
		((Component)animator).GetComponent<MecFootPlacer>().DisablePlant((AvatarIKGoal)1, 2f);
	}

	public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
	{
		FootPlacementData footPlacementData = ((Component)animator).GetComponents<FootPlacementData>()[0];
		FootPlacementData footPlacementData2 = ((Component)animator).GetComponents<FootPlacementData>()[1];
		if ((Object)(object)footPlacementData != (Object)null)
		{
			if (((AnimatorStateInfo)(ref stateInfo)).normalizedTime > 0.25f)
			{
				footPlacementData.mExtraRayDistanceCheck = mIdleRayCast;
			}
			else
			{
				footPlacementData.mExtraRayDistanceCheck = 0f;
			}
		}
		if ((Object)(object)footPlacementData2 != (Object)null)
		{
			if (((AnimatorStateInfo)(ref stateInfo)).normalizedTime > 0.25f)
			{
				footPlacementData2.mExtraRayDistanceCheck = mIdleRayCast;
			}
			else
			{
				footPlacementData2.mExtraRayDistanceCheck = 0f;
			}
		}
	}
}
public class InputController : MonoBehaviour
{
	public float Speed = 4f;

	public float TurnSpeed = 1f;

	public Camera mCam;

	protected Vector3 mLeftVec = new Vector3(-1f, 0f, 0f);

	protected Vector3 mFwdVec = new Vector3(0f, 0f, 1f);

	protected Vector3 mGOFwdVec = new Vector3(0f, 0f, 1f);

	protected Animator mAnim;

	protected float mTimePassed = 0f;

	protected int mMove = Animator.StringToHash("move");

	protected int mSpeed = Animator.StringToHash("speed");

	protected bool mMecFPActive = true;

	protected GUIStyle mStyle;

	private void Start()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		mStyle = new GUIStyle();
		mAnim = ((Component)this).GetComponent<Animator>();
		mStyle.normal.textColor = new Color(0.5f, 0f, 0.75f, 1f);
		mStyle.fontSize = 20;
	}

	private void OnGUI()
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		GUI.Label(new Rect(0f, 0f, 100f, 100f), "Use W, A, S, D to move around\nPress R to activate/deactivate Mec Foot Placer\nHold L to run", mStyle);
	}

	private void Update()
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0107: Unknown result type (might be due to invalid IL or missing references)
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Unknown result type (might be due to invalid IL or missing references)
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_015b: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0176: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Unknown result type (might be due to invalid IL or missing references)
		//IL_017f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0191: Unknown result type (might be due to invalid IL or missing references)
		//IL_0193: Unknown result type (might be due to invalid IL or missing references)
		//IL_0195: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_038b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0390: Unknown result type (might be due to invalid IL or missing references)
		//IL_0392: Unknown result type (might be due to invalid IL or missing references)
		//IL_0397: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f3: Unknown result type (might be due to invalid IL or missing references)
		Animator obj = mAnim;
		AnimatorStateInfo currentAnimatorStateInfo = mAnim.GetCurrentAnimatorStateInfo(0);
		float normalizedTime = ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).normalizedTime;
		AnimatorStateInfo currentAnimatorStateInfo2 = mAnim.GetCurrentAnimatorStateInfo(0);
		obj.SetFloat("time", normalizedTime - Mathf.Floor(((AnimatorStateInfo)(ref currentAnimatorStateInfo2)).normalizedTime));
		if (!Input.anyKey)
		{
			float @float = mAnim.GetFloat(mSpeed);
			@float -= 1.5f * Time.deltaTime;
			if (@float < 0f)
			{
				@float = 0f;
				mAnim.SetBool(mMove, false);
			}
			mAnim.SetFloat(mSpeed, @float);
			return;
		}
		bool flag = false;
		Vector3 val = ((Component)mCam).transform.rotation * mFwdVec;
		val.y = 0f;
		Vector3 val2 = ((Component)mCam).transform.rotation * mLeftVec;
		val2.y = 0f;
		mGOFwdVec = ((Component)this).gameObject.transform.rotation * new Vector3(0f, 0f, 1f);
		Vector3 val3 = default(Vector3);
		((Vector3)(ref val3))..ctor(0f, 0f, 0f);
		float num = 1f;
		float num2 = 0f;
		if (Input.GetKey((KeyCode)97))
		{
			val3 += val2;
			flag = true;
		}
		if (Input.GetKey((KeyCode)100))
		{
			val3 -= val2;
			flag = true;
		}
		if (Input.GetKey((KeyCode)119))
		{
			val3 += val;
			flag = true;
		}
		if (Input.GetKey((KeyCode)115))
		{
			val3 -= val;
			flag = true;
		}
		if (Input.GetKey((KeyCode)108))
		{
			float float2 = mAnim.GetFloat(mSpeed);
			if (flag)
			{
				float2 += Time.deltaTime;
				if (float2 > 1f)
				{
					float2 = 1f;
				}
			}
			else
			{
				float2 -= 2f * Time.deltaTime;
				if (float2 < 0f)
				{
					float2 = 0f;
				}
			}
			mAnim.SetFloat(mSpeed, float2);
		}
		else
		{
			float float3 = mAnim.GetFloat(mSpeed);
			float3 -= Time.deltaTime;
			if (float3 < 0f)
			{
				float3 = 0f;
			}
			mAnim.SetFloat(mSpeed, float3);
		}
		if (Input.GetKey((KeyCode)281) && mTimePassed > 0.1f)
		{
			Time.timeScale -= 0.1f;
			if (Time.timeScale < 0f)
			{
				Time.timeScale = 0f;
			}
			mTimePassed = 0f;
			Debug.Log((object)Time.timeScale);
		}
		if (Input.GetKey((KeyCode)280) && mTimePassed > 0.1f)
		{
			Time.timeScale += 0.1f;
			mTimePassed = 0f;
			Debug.Log((object)Time.timeScale);
		}
		if (Input.GetKeyDown((KeyCode)114))
		{
			mMecFPActive = !mMecFPActive;
			((Component)this).GetComponent<MecFootPlacer>().SetActive((AvatarIKGoal)0, mMecFPActive);
			((Component)this).GetComponent<MecFootPlacer>().SetActive((AvatarIKGoal)1, mMecFPActive);
		}
		if (flag)
		{
			num = Vector3.Cross(mGOFwdVec, val3).y;
			if (num != 0f)
			{
				num /= Mathf.Abs(num);
			}
			num2 = Vector3.Angle(mGOFwdVec, val3);
			num2 *= TurnSpeed * Time.deltaTime;
			((Component)this).gameObject.transform.Rotate(new Vector3(0f, num, 0f), num2, (Space)0);
			mAnim.SetBool(mMove, true);
		}
		else if (mAnim.GetFloat("speed") <= 0f)
		{
			mAnim.SetBool(mMove, false);
		}
		mTimePassed += Time.deltaTime;
	}
}
public class LocomotionUpdate : StateMachineBehaviour
{
	public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
	{
		((Component)animator).GetComponent<MecFootPlacer>().EnablePlant((AvatarIKGoal)0, 2f);
		((Component)animator).GetComponent<MecFootPlacer>().EnablePlant((AvatarIKGoal)1, 2f);
	}

	public override void OnStateUpdate(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
	{
		float @float = animator.GetFloat("speed");
		float num = ((AnimatorStateInfo)(ref animatorStateInfo)).normalizedTime - Mathf.Floor(((AnimatorStateInfo)(ref animatorStateInfo)).normalizedTime);
		float num2 = 0.5f - 0.25f * @float;
		FootPlacementData[] components = ((Component)animator).GetComponents<FootPlacementData>();
		FootPlacementData footPlacementData = null;
		for (byte b = 0; b < components.Length; b++)
		{
			switch (components[b].mFootID)
			{
			case FootPlacementData.LimbID.LEFT_FOOT:
				footPlacementData = components[b];
				if ((double)num > 0.5 && num < 0.5f + num2)
				{
					footPlacementData.mExtraRayDistanceCheck = 0.7f;
				}
				else
				{
					footPlacementData.mExtraRayDistanceCheck = -0.2f;
				}
				break;
			case FootPlacementData.LimbID.RIGHT_FOOT:
				footPlacementData = components[b];
				if (num < num2)
				{
					footPlacementData.mExtraRayDistanceCheck = 0.7f;
				}
				else
				{
					footPlacementData.mExtraRayDistanceCheck = -0.2f;
				}
				break;
			case FootPlacementData.LimbID.LEFT_HAND:
				footPlacementData = components[b];
				break;
			case FootPlacementData.LimbID.RIGHT_HAND:
				footPlacementData = components[b];
				break;
			}
			footPlacementData.mTransitionTime = 0.15f - 0.1f * @float;
		}
	}
}
public class PelvisSet : StateMachineBehaviour
{
	public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
	{
		((Component)animator).GetComponent<MecFootPlacer>().mAdjustPelvisVertically = true;
	}
}
public class PelvisUnset : StateMachineBehaviour
{
	public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
	{
		((Component)animator).GetComponent<MecFootPlacer>().mAdjustPelvisVertically = false;
	}
}
public class FootPlacementData : MonoBehaviour
{
	public enum LimbID
	{
		LEFT_FOOT,
		RIGHT_FOOT,
		LEFT_HAND,
		RIGHT_HAND
	}

	public enum Target
	{
		FOOT,
		TOE,
		HEEL
	}

	public LimbID mFootID = LimbID.LEFT_FOOT;

	public bool mPlantFoot = true;

	public Vector3 mForwardVector = new Vector3(0f, 0f, 1f);

	public Vector3 mIKHintOffset = new Vector3(0f, 0f, 0f);

	public Vector3 mUpVector = new Vector3(0f, 1f, 0f);

	public float mFootOffsetDist = 0.5f;

	public float mFootLength = 0.22f;

	public float mFootHalfWidth = 0.05f;

	public float mFootHeight = 0.1f;

	public float mFootRotationLimit = 45f;

	public float mTransitionTime = 0.2f;

	public float mExtraRayDistanceCheck = 0f;

	public bool mSetExtraRaydistanceCheckAutomatically = false;

	public float mErrorThreshold = 0.05f;

	public float mExtraRayDistanceCheckMin = 0f;

	public float mExtraRayDistanceCheckMax = 2f;

	protected bool mFootPlantIsOnTransition = false;

	protected float mFootPlantBlendSpeed;

	protected Vector3 mTargetPos = new Vector3(0f, 0f, 0f);

	protected Vector3 mTargetToePos = new Vector3(0f, 0f, 0f);

	protected Vector3 mTargetHeelPos = new Vector3(0f, 0f, 0f);

	protected Vector3 mRotatedFwdVec;

	protected Vector3 mRotatedIKHintOffset;

	protected float mTargetFootWeight = 0f;

	protected float mCurrentFootWeight = 0f;

	protected float mGoalBlendSpeed = 0f;

	protected float mPlantBlendFactor = 0f;

	private Vector3 mFootPlantedPos;

	private Quaternion mFootPlantedRot;

	private bool mFootPlanted = false;

	private Vector3 mPreviousFootPos = Vector3.zero;

	public void SetTargetPos(Target target, Vector3 target_pos)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		switch (target)
		{
		case Target.FOOT:
			mTargetPos = target_pos;
			break;
		case Target.TOE:
			mTargetToePos = target_pos;
			break;
		case Target.HEEL:
			mTargetHeelPos = target_pos;
			break;
		}
	}

	public Vector3 GetTargetPos(Target target)
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		return (Vector3)(target switch
		{
			Target.FOOT => mTargetPos, 
			Target.TOE => mTargetToePos, 
			Target.HEEL => mTargetHeelPos, 
			_ => Vector3.zero, 
		});
	}

	public void CalculateRotatedFwdVec()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_0108: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		AvatarIKGoal val = (AvatarIKGoal)0;
		switch (mFootID)
		{
		case LimbID.RIGHT_FOOT:
			val = (AvatarIKGoal)1;
			break;
		case LimbID.LEFT_HAND:
			val = (AvatarIKGoal)2;
			break;
		case LimbID.RIGHT_HAND:
			val = (AvatarIKGoal)3;
			break;
		}
		float num = 0f;
		Quaternion iKRotation = ((Component)this).GetComponent<Animator>().GetIKRotation(val);
		num = ((Quaternion)(ref iKRotation)).eulerAngles.y * (float)Math.PI / 180f;
		Quaternion val2 = default(Quaternion);
		((Quaternion)(ref val2))..ctor(0f, Mathf.Sin(num * 0.5f), 0f, Mathf.Cos(num * 0.5f));
		if (mFootPlanted && mPlantFoot)
		{
			num = ((Quaternion)(ref mFootPlantedRot)).eulerAngles.y * (float)Math.PI / 180f;
			val2 = Quaternion.Slerp(val2, new Quaternion(0f, Mathf.Sin(num * 0.5f), 0f, Mathf.Cos(num * 0.5f)), mPlantBlendFactor);
		}
		mRotatedFwdVec = val2 * ((Vector3)(ref mForwardVector)).normalized;
	}

	public Vector3 GetRotatedFwdVec()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		return mRotatedFwdVec;
	}

	public void CalculateRotatedIKHint()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_000f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		Quaternion rotation = ((Component)this).transform.rotation;
		float num = ((Quaternion)(ref rotation)).eulerAngles.y * (float)Math.PI / 180f;
		Quaternion val = default(Quaternion);
		((Quaternion)(ref val))..ctor(0f, Mathf.Sin(num * 0.5f), 0f, Mathf.Cos(num * 0.5f));
		mRotatedIKHintOffset = val * mIKHintOffset;
	}

	public Vector3 GetRotatedIKHint()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		return mRotatedIKHintOffset;
	}

	public void SetTargetFootWeight(float weight)
	{
		mTargetFootWeight = weight;
	}

	public float GetTargetFootWeight()
	{
		return mTargetFootWeight;
	}

	public void SetCurrentFootWeight(float weight)
	{
		mCurrentFootWeight = weight;
	}

	public float GetCurrentFootWeight()
	{
		return mCurrentFootWeight;
	}

	public void SetGoalBlendSpeed(float speed)
	{
		mGoalBlendSpeed = speed;
	}

	public float GetGoalBlendSpeed()
	{
		return mGoalBlendSpeed;
	}

	public float GetPlantBlendFactor()
	{
		return mPlantBlendFactor;
	}

	public void SetPlantBlendFactor(float factor)
	{
		mPlantBlendFactor = factor;
	}

	public void EnablePlantBlend(float blend_speed)
	{
		mFootPlantBlendSpeed = Mathf.Abs(blend_speed);
		mFootPlantIsOnTransition = true;
	}

	public void DisablePlantBlend(float blend_speed)
	{
		mFootPlantBlendSpeed = 0f - Mathf.Abs(blend_speed);
		mFootPlantIsOnTransition = true;
	}

	public float GetFootPlantBlendSpeed()
	{
		return mFootPlantBlendSpeed;
	}

	public void PlantBlendTransitionEnded()
	{
		mFootPlantIsOnTransition = false;
	}

	public bool IsPlantOnTransition()
	{
		return mFootPlantIsOnTransition;
	}

	public void SetFootPlanted(bool planted)
	{
		mFootPlanted = planted;
	}

	public bool GetFootPlanted()
	{
		return mFootPlanted;
	}

	public void SetPlantedPos(Vector3 planted_pos)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		mFootPlantedPos = planted_pos;
	}

	public Vector3 GetPlantedPos()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		return mFootPlantedPos;
	}

	public void SetPlantedRot(Quaternion planted_rot)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		mFootPlantedRot = planted_rot;
	}

	public Quaternion GetPlantedRot()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		return mFootPlantedRot;
	}

	private void Start()
	{
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		Animator component = ((Component)this).GetComponent<Animator>();
		if (!((Object)(object)component == (Object)null))
		{
			HumanBodyBones val = (HumanBodyBones)5;
			switch (mFootID)
			{
			case LimbID.RIGHT_FOOT:
				val = (HumanBodyBones)6;
				break;
			case LimbID.RIGHT_HAND:
				val = (HumanBodyBones)18;
				break;
			case LimbID.LEFT_HAND:
				val = (HumanBodyBones)17;
				break;
			}
			mPreviousFootPos = component.GetBoneTransform(val).position;
		}
	}

	protected bool IsErrorHigh(HumanBodyBones bone, Vector3 current_position, Vector3 previous_pos)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = previous_pos - current_position;
		float magnitude = ((Vector3)(ref val)).magnitude;
		float num = mErrorThreshold;
		if (Time.deltaTime < 0.033f)
		{
			num = mErrorThreshold * 30f * Time.deltaTime;
		}
		if (magnitude > num)
		{
			return true;
		}
		return false;
	}

	private void OnAnimatorIK()
	{
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		if (!mSetExtraRaydistanceCheckAutomatically)
		{
			return;
		}
		Animator component = ((Component)this).GetComponent<Animator>();
		if (!((Object)(object)component == (Object)null))
		{
			HumanBodyBones val = (HumanBodyBones)5;
			switch (mFootID)
			{
			case LimbID.RIGHT_FOOT:
				val = (HumanBodyBones)6;
				break;
			case LimbID.RIGHT_HAND:
				val = (HumanBodyBones)18;
				break;
			case LimbID.LEFT_HAND:
				val = (HumanBodyBones)17;
				break;
			}
			if (IsErrorHigh(val, component.GetBoneTransform(val).position, mPreviousFootPos))
			{
				mExtraRayDistanceCheck = mExtraRayDistanceCheckMin;
			}
			else
			{
				mExtraRayDistanceCheck = mExtraRayDistanceCheckMax;
			}
			mPreviousFootPos = component.GetBoneTransform(val).position;
		}
	}
}
public class MecFootPlacer : MonoBehaviour
{
	public bool mAdjustPelvisVertically = false;

	public bool mDampPelvis = false;

	public float mMaxLegLength = 1f;

	public float mMinLegLength = 0.2f;

	public float mPelvisAdjustmentSpeed = 1f;

	public string[] mLayersToIgnore;

	protected FootPlacementData mLeftFoot = null;

	protected FootPlacementData mRightFoot = null;

	protected FootPlacementData mLeftHand = null;

	protected FootPlacementData mRightHand = null;

	protected Animator mAnim;

	protected LayerMask mLayerMask = LayerMask.op_Implicit(-1);

	private const float mEpsilon = 0.005f;

	private float mCurrentRootVertError = 0f;

	private float mTargetRootVertError = 0f;

	private float mCurrentPelvisSpeed = 0f;

	private Vector3 mLeftFootContact_Ontransition_Disable;

	private Vector3 mLeftToeContact_Ontransition_Disable;

	private Vector3 mLeftHeelContact_Ontransition_Disable;

	private Vector3 mRightFootContact_Ontransition_Disable;

	private Vector3 mRightToeContact_Ontransition_Disable;

	private Vector3 mRightHeelContact_Ontransition_Disable;

	private Vector3 mLeftHandContact_Ontransition_Disable;

	private Vector3 mLeftHandToeContact_Ontransition_Disable;

	private Vector3 mLeftHandHeelContact_Ontransition_Disable;

	private Vector3 mRightHandContact_Ontransition_Disable;

	private Vector3 mRightHandToeContact_Ontransition_Disable;

	private Vector3 mRightHandHeelContact_Ontransition_Disable;

	private bool mRootPosLeftRightFoot = false;

	private bool mLeftFootActive = true;

	private bool mRightFootActive = true;

	private bool mLeftHandActive = true;

	private bool mRightHandActive = true;

	public void SetActive(AvatarIKGoal foot_id, bool active)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Invalid comparison between Unknown and I4
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Invalid comparison between Unknown and I4
		//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Invalid comparison between Unknown and I4
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		if ((int)foot_id == 0)
		{
			if ((Object)(object)mLeftFoot == (Object)null)
			{
				return;
			}
			if (active && !mLeftFootActive)
			{
				ResetIKParams(foot_id);
			}
			mLeftFootActive = active;
		}
		if ((int)foot_id == 1)
		{
			if ((Object)(object)mRightFoot == (Object)null)
			{
				return;
			}
			if (active && !mRightFootActive)
			{
				ResetIKParams(foot_id);
			}
			mRightFootActive = active;
		}
		if ((int)foot_id == 2)
		{
			if ((Object)(object)mRightHand == (Object)null)
			{
				return;
			}
			if (active && !mLeftHandActive)
			{
				ResetIKParams(foot_id);
			}
			mLeftHandActive = active;
		}
		if ((int)foot_id == 3 && !((Object)(object)mRightHand == (Object)null))
		{
			if (active && !mRightHandActive)
			{
				ResetIKParams(foot_id);
			}
			mRightHandActive = active;
		}
	}

	public bool IsActive(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Invalid comparison between Unknown and I4
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Invalid comparison between Unknown and I4
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_003e: Invalid comparison between Unknown and I4
		if ((int)foot_id == 0)
		{
			return mLeftFootActive;
		}
		if ((int)foot_id == 1)
		{
			return mRightFootActive;
		}
		if ((int)foot_id == 2)
		{
			return mLeftHandActive;
		}
		if ((int)foot_id == 3)
		{
			return mRightHandActive;
		}
		return false;
	}

	public void SetLayerMask(LayerMask layer_mask)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		mLayerMask = layer_mask;
	}

	public LayerMask GetLayerMask()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		return mLayerMask;
	}

	public float GetPlantBlendWeight(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		default:
			return -1f;
		}
		return footPlacementData.GetPlantBlendFactor();
	}

	public void SetPlantBlendWeight(AvatarIKGoal foot_id, float weight)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		footPlacementData.SetPlantBlendFactor(weight);
	}

	public void EnablePlant(AvatarIKGoal foot_id, float blend_speed)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		footPlacementData.EnablePlantBlend(blend_speed);
	}

	public void DisablePlant(AvatarIKGoal foot_id, float blend_speed)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		footPlacementData.DisablePlantBlend(blend_speed);
	}

	private void ResetIKParams(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Invalid comparison between Unknown and I4
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_0064: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ca: Invalid comparison between Unknown and I4
		//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
		//IL_02af: Invalid comparison between Unknown and I4
		//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0220: Unknown result type (might be due to invalid IL or missing references)
		//IL_0221: Unknown result type (might be due to invalid IL or missing references)
		//IL_022d: Unknown result type (might be due to invalid IL or missing references)
		//IL_023d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0248: Unknown result type (might be due to invalid IL or missing references)
		//IL_0258: Unknown result type (might be due to invalid IL or missing references)
		//IL_025d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0262: Unknown result type (might be due to invalid IL or missing references)
		//IL_0268: Unknown result type (might be due to invalid IL or missing references)
		//IL_027d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0288: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_029d: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0305: Unknown result type (might be due to invalid IL or missing references)
		//IL_0306: Unknown result type (might be due to invalid IL or missing references)
		//IL_0312: Unknown result type (might be due to invalid IL or missing references)
		//IL_0322: Unknown result type (might be due to invalid IL or missing references)
		//IL_032d: Unknown result type (might be due to invalid IL or missing references)
		//IL_033d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0342: Unknown result type (might be due to invalid IL or missing references)
		//IL_0347: Unknown result type (might be due to invalid IL or missing references)
		//IL_034d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0362: Unknown result type (might be due to invalid IL or missing references)
		//IL_036d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0372: Unknown result type (might be due to invalid IL or missing references)
		//IL_0382: Unknown result type (might be due to invalid IL or missing references)
		//IL_0387: Unknown result type (might be due to invalid IL or missing references)
		//IL_038c: Unknown result type (might be due to invalid IL or missing references)
		if ((int)foot_id == 0)
		{
			Vector3 position = mAnim.GetBoneTransform((HumanBodyBones)5).position;
			mLeftFoot.SetTargetFootWeight(0f);
			mLeftFoot.SetCurrentFootWeight(0f);
			mLeftFoot.SetGoalBlendSpeed(0f);
			mLeftFoot.SetFootPlanted(planted: false);
			mLeftFootContact_Ontransition_Disable = position;
			mLeftToeContact_Ontransition_Disable = mLeftFoot.mUpVector * mLeftFoot.mFootOffsetDist + mLeftFoot.GetRotatedFwdVec() * mLeftFoot.mFootLength;
			mLeftHeelContact_Ontransition_Disable = position + new Quaternion(0f, 0.7071f, 0f, 0.7071f) * mLeftFoot.GetRotatedFwdVec() * mLeftFoot.mFootHalfWidth;
		}
		if ((int)foot_id == 1)
		{
			Vector3 position2 = mAnim.GetBoneTransform((HumanBodyBones)6).position;
			mRightFoot.SetTargetFootWeight(0f);
			mRightFoot.SetCurrentFootWeight(0f);
			mRightFoot.SetGoalBlendSpeed(0f);
			mRightFoot.SetFootPlanted(planted: false);
			mRightFootContact_Ontransition_Disable = position2;
			mRightToeContact_Ontransition_Disable = mRightFoot.mUpVector * mRightFoot.mFootOffsetDist + mRightFoot.GetRotatedFwdVec() * mRightFoot.mFootLength;
			mRightHeelContact_Ontransition_Disable = position2 + new Quaternion(0f, 0.7017f, 0f, 0.7071f) * mRightFoot.GetRotatedFwdVec() * mRightFoot.mFootHalfWidth;
		}
		if ((int)foot_id == 2)
		{
			Vector3 position3 = mAnim.GetBoneTransform((HumanBodyBones)17).position;
			mLeftHand.SetTargetFootWeight(0f);
			mLeftHand.SetCurrentFootWeight(0f);
			mLeftHand.SetGoalBlendSpeed(0f);
			mLeftHand.SetFootPlanted(planted: false);
			mLeftHandContact_Ontransition_Disable = position3;
			mLeftHandToeContact_Ontransition_Disable = mLeftHand.mUpVector * mLeftHand.mFootOffsetDist + mLeftHand.GetRotatedFwdVec() * mLeftHand.mFootLength;
			mLeftHandHeelContact_Ontransition_Disable = position3 + new Quaternion(0f, 0.7017f, 0f, 0.7071f) * mLeftHand.GetRotatedFwdVec() * mLeftHand.mFootHalfWidth;
		}
		if ((int)foot_id == 3)
		{
			Vector3 position4 = mAnim.GetBoneTransform((HumanBodyBones)18).position;
			mRightHand.SetTargetFootWeight(0f);
			mRightHand.SetCurrentFootWeight(0f);
			mRightHand.SetGoalBlendSpeed(0f);
			mRightHand.SetFootPlanted(planted: false);
			mRightHandContact_Ontransition_Disable = position4;
			mRightHandToeContact_Ontransition_Disable = mRightHand.mUpVector * mRightHand.mFootOffsetDist + mRightHand.GetRotatedFwdVec() * mRightHand.mFootLength;
			mRightHandHeelContact_Ontransition_Disable = position4 + new Quaternion(0f, 0.7017f, 0f, 0.7071f) * mRightHand.GetRotatedFwdVec() * mRightHand.mFootHalfWidth;
		}
	}

	protected void SetIKWeight(AvatarIKGoal foot_id, float target_weight, float transition_time)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		switch ((int)foot_id)
		{
		case 0:
			if (Mathf.Abs(target_weight - mLeftFoot.GetTargetFootWeight()) > 0.005f)
			{
				if (transition_time != 0f)
				{
					mLeftFoot.SetGoalBlendSpeed((target_weight - mLeftFoot.GetCurrentFootWeight()) / transition_time);
				}
				else
				{
					mLeftFoot.SetGoalBlendSpeed(0.1f);
					mLeftFoot.SetCurrentFootWeight(target_weight);
				}
			}
			mLeftFoot.SetTargetFootWeight(target_weight);
			break;
		case 1:
			if (Mathf.Abs(target_weight - mRightFoot.GetTargetFootWeight()) > 0.005f)
			{
				if (transition_time != 0f)
				{
					mRightFoot.SetGoalBlendSpeed((target_weight - mRightFoot.GetCurrentFootWeight()) / transition_time);
				}
				else
				{
					mRightFoot.SetGoalBlendSpeed(0.1f);
					mRightFoot.SetCurrentFootWeight(target_weight);
				}
			}
			mRightFoot.SetTargetFootWeight(target_weight);
			break;
		case 2:
			if (Mathf.Abs(target_weight - mLeftHand.GetTargetFootWeight()) > 0.005f)
			{
				if (transition_time != 0f)
				{
					mLeftHand.SetGoalBlendSpeed((target_weight - mLeftHand.GetCurrentFootWeight()) / transition_time);
				}
				else
				{
					mLeftHand.SetGoalBlendSpeed(0.1f);
					mLeftHand.SetCurrentFootWeight(target_weight);
				}
			}
			mLeftHand.SetTargetFootWeight(target_weight);
			break;
		case 3:
			if (Mathf.Abs(target_weight - mRightHand.GetTargetFootWeight()) > 0.005f)
			{
				if (transition_time != 0f)
				{
					mRightHand.SetGoalBlendSpeed((target_weight - mRightHand.GetCurrentFootWeight()) / transition_time);
				}
				else
				{
					mRightHand.SetGoalBlendSpeed(0.1f);
					mRightHand.SetCurrentFootWeight(target_weight);
				}
			}
			mRightHand.SetTargetFootWeight(target_weight);
			break;
		}
	}

	protected void CalculateIKGoalWeights(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		float num = Mathf.Sign(footPlacementData.GetTargetFootWeight() - footPlacementData.GetCurrentFootWeight());
		footPlacementData.SetCurrentFootWeight(footPlacementData.GetCurrentFootWeight() + footPlacementData.GetGoalBlendSpeed() * Time.deltaTime);
		if (num * Mathf.Sign(footPlacementData.GetTargetFootWeight() - footPlacementData.GetCurrentFootWeight()) < 1f || Mathf.Abs(footPlacementData.GetCurrentFootWeight() - footPlacementData.GetTargetFootWeight()) < 0.005f)
		{
			footPlacementData.SetCurrentFootWeight(footPlacementData.GetTargetFootWeight());
		}
		else if (footPlacementData.GetCurrentFootWeight() > 1f || footPlacementData.GetCurrentFootWeight() < 0f)
		{
			footPlacementData.SetCurrentFootWeight(Mathf.Clamp(footPlacementData.GetTargetFootWeight(), 0f, 1f));
		}
	}

	protected void CheckForLimits(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0061: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0119: Unknown result type (might be due to invalid IL or missing references)
		//IL_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0141: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_0168: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_0179: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		Vector3 zero = Vector3.zero;
		Vector3 rotatedFwdVec = footPlacementData.GetRotatedFwdVec();
		if (Vector3.Angle(rotatedFwdVec, footPlacementData.GetTargetPos(FootPlacementData.Target.TOE)) > footPlacementData.mFootRotationLimit)
		{
			zero = footPlacementData.mUpVector * footPlacementData.mFootLength * Mathf.Tan(footPlacementData.mFootRotationLimit * ((float)Math.PI / 180f));
			if (Vector3.Angle(footPlacementData.mUpVector, footPlacementData.GetTargetPos(FootPlacementData.Target.TOE)) > 90f)
			{
				zero = -zero;
			}
			footPlacementData.SetTargetPos(FootPlacementData.Target.TOE, rotatedFwdVec * footPlacementData.mFootLength + zero);
		}
		Quaternion val = default(Quaternion);
		((Quaternion)(ref val))..ctor(0f, 0.7071f, 0f, 0.7071f);
		if (Vector3.Angle(val * rotatedFwdVec, footPlacementData.GetTargetPos(FootPlacementData.Target.HEEL)) > footPlacementData.mFootRotationLimit)
		{
			zero = footPlacementData.mUpVector * footPlacementData.mFootHalfWidth * Mathf.Tan(footPlacementData.mFootRotationLimit * ((float)Math.PI / 180f));
			if (Vector3.Angle(footPlacementData.mUpVector, footPlacementData.GetTargetPos(FootPlacementData.Target.HEEL)) > 90f)
			{
				zero = -zero;
			}
			footPlacementData.SetTargetPos(FootPlacementData.Target.HEEL, val * rotatedFwdVec * footPlacementData.mFootHalfWidth + zero);
		}
	}

	protected void UpdateFootPlantBlendWeights(AvatarIKGoal foot_id)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Expected I4, but got Unknown
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			return;
		case 0:
			footPlacementData = mLeftFoot;
			break;
		case 1:
			footPlacementData = mRightFoot;
			break;
		case 2:
			footPlacementData = mLeftHand;
			break;
		case 3:
			footPlacementData = mRightHand;
			break;
		}
		if (!footPlacementData.IsPlantOnTransition())
		{
			return;
		}
		footPlacementData.SetPlantBlendFactor(footPlacementData.GetPlantBlendFactor() + footPlacementData.GetFootPlantBlendSpeed() * Time.deltaTime);
		if (footPlacementData.GetFootPlantBlendSpeed() > 0f)
		{
			if (footPlacementData.GetPlantBlendFactor() > 1f)
			{
				footPlacementData.SetPlantBlendFactor(1f);
				footPlacementData.PlantBlendTransitionEnded();
			}
		}
		else if (footPlacementData.GetPlantBlendFactor() < 0f)
		{
			footPlacementData.SetPlantBlendFactor(0f);
			footPlacementData.PlantBlendTransitionEnded();
		}
	}

	protected void FindContactPoints(AvatarIKGoal foot_id)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Expected I4, but got Unknown
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ea: Expected I4, but got Unknown
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0201: Unknown result type (might be due to invalid IL or missing references)
		//IL_0208: Unknown result type (might be due to invalid IL or missing references)
		//IL_020d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0214: Unknown result type (might be due to invalid IL or missing references)
		//IL_0219: Unknown result type (might be due to invalid IL or missing references)
		//IL_014e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0156: Unknown result type (might be due to invalid IL or missing references)
		//IL_016c: Expected I4, but got Unknown
		//IL_022c: Unknown result type (might be due to invalid IL or missing references)
		//IL_022d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0234: Unknown result type (might be due to invalid IL or missing references)
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0224: Unknown result type (might be due to invalid IL or missing references)
		//IL_0174: Unknown result type (might be due to invalid IL or missing references)
		//IL_0179: Unknown result type (might be due to invalid IL or missing references)
		//IL_0186: Unknown result type (might be due to invalid IL or missing references)
		//IL_018b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: Unknown result type (might be due to invalid IL or missing references)
		//IL_019d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_01af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_0103: Unknown result type (might be due to invalid IL or missing references)
		//IL_011f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0241: Unknown result type (might be due to invalid IL or missing references)
		//IL_0243: Unknown result type (might be due to invalid IL or missing references)
		//IL_024e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0253: Unknown result type (might be due to invalid IL or missing references)
		//IL_0259: Unknown result type (might be due to invalid IL or missing references)
		//IL_0264: Unknown result type (might be due to invalid IL or missing references)
		//IL_0269: Unknown result type (might be due to invalid IL or missing references)
		//IL_026f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0274: Unknown result type (might be due to invalid IL or missing references)
		//IL_0290: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_0143: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e3: Expected I4, but got Unknown
		//IL_03e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0401: Unknown result type (might be due to invalid IL or missing references)
		//IL_0406: Unknown result type (might be due to invalid IL or missing references)
		//IL_040d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0412: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0426: Unknown result type (might be due to invalid IL or missing references)
		//IL_0431: Unknown result type (might be due to invalid IL or missing references)
		//IL_0436: Unknown result type (might be due to invalid IL or missing references)
		//IL_043d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0418: Unknown result type (might be due to invalid IL or missing references)
		//IL_041d: Unknown result type (might be due to invalid IL or missing references)
		//IL_034f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0353: Unknown result type (might be due to invalid IL or missing references)
		//IL_0358: Unknown result type (might be due to invalid IL or missing references)
		//IL_0363: Unknown result type (might be due to invalid IL or missing references)
		//IL_0379: Expected I4, but got Unknown
		//IL_0463: Unknown result type (might be due to invalid IL or missing references)
		//IL_0465: Unknown result type (might be due to invalid IL or missing references)
		//IL_0470: Unknown result type (might be due to invalid IL or missing references)
		//IL_0475: Unknown result type (might be due to invalid IL or missing references)
		//IL_047a: Unknown result type (might be due to invalid IL or missing references)
		//IL_047d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0482: Unknown result type (might be due to invalid IL or missing references)
		//IL_0487: Unknown result type (might be due to invalid IL or missing references)
		//IL_048b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0496: Unknown result type (might be due to invalid IL or missing references)
		//IL_049b: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_04c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0381: Unknown result type (might be due to invalid IL or missing references)
		//IL_0386: Unknown result type (might be due to invalid IL or missing references)
		//IL_0393: Unknown result type (might be due to invalid IL or missing references)
		//IL_0398: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02de: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0304: Unknown result type (might be due to invalid IL or missing references)
		//IL_0320: Unknown result type (might be due to invalid IL or missing references)
		//IL_061a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0630: Expected I4, but got Unknown
		//IL_0335: Unknown result type (might be due to invalid IL or missing references)
		//IL_0339: Unknown result type (might be due to invalid IL or missing references)
		//IL_0344: Unknown result type (might be due to invalid IL or missing references)
		//IL_0349: Unknown result type (might be due to invalid IL or missing references)
		//IL_0636: Unknown result type (might be due to invalid IL or missing references)
		//IL_063b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0642: Unknown result type (might be due to invalid IL or missing references)
		//IL_0647: Unknown result type (might be due to invalid IL or missing references)
		//IL_064e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0653: Unknown result type (might be due to invalid IL or missing references)
		//IL_065a: Unknown result type (might be due to invalid IL or missing references)
		//IL_065f: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0672: Unknown result type (might be due to invalid IL or missing references)
		//IL_0675: Unknown result type (might be due to invalid IL or missing references)
		//IL_067a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0685: Unknown result type (might be due to invalid IL or missing references)
		//IL_068a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0691: Unknown result type (might be due to invalid IL or missing references)
		//IL_0665: Unknown result type (might be due to invalid IL or missing references)
		//IL_066a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0591: Unknown result type (might be due to invalid IL or missing references)
		//IL_0595: Unknown result type (might be due to invalid IL or missing references)
		//IL_059a: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_05bb: Expected I4, but got Unknown
		//IL_05c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_05c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_05d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_05da: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f9: Unknown result type (might be due to invalid IL or missing references)
		//IL_05fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0505: Unknown result type (might be due to invalid IL or missing references)
		//IL_0510: Unknown result type (might be due to invalid IL or missing references)
		//IL_0515: Unknown result type (might be due to invalid IL or missing references)
		//IL_051a: Unknown result type (might be due to invalid IL or missing references)
		//IL_051d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0522: Unknown result type (might be due to invalid IL or missing references)
		//IL_0527: Unknown result type (might be due to invalid IL or missing references)
		//IL_052b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0536: Unknown result type (might be due to invalid IL or missing references)
		//IL_053b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0541: Unknown result type (might be due to invalid IL or missing references)
		//IL_0546: Unknown result type (might be due to invalid IL or missing references)
		//IL_0562: Unknown result type (might be due to invalid IL or missing references)
		//IL_0608: Unknown result type (might be due to invalid IL or missing references)
		//IL_060d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0577: Unknown result type (might be due to invalid IL or missing references)
		//IL_057b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0586: Unknown result type (might be due to invalid IL or missing references)
		//IL_058b: Unknown result type (might be due to invalid IL or missing references)
		Vector3 iKPosition = mAnim.GetIKPosition(foot_id);
		bool flag = true;
		FootPlacementData footPlacementData;
		switch ((int)foot_id)
		{
		default:
			r