using System; using System.Collections; using Cpp2IlInjected; using UnityEngine; namespace RootMotion.FinalIK { // Token: 0x02000465 RID: 1125 [Token(Token = "0x2000465")] [RequireComponent(typeof(Animator))] public class RagdollUtility : MonoBehaviour { // Token: 0x06002860 RID: 10336 RVA: 0x00059208 File Offset: 0x00057408 [Token(Token = "0x6002860")] [Address(RVA = "0xCB40D0", Offset = "0xCB28D0", VA = "0x180CB40D0")] public void EnableRagdoll() { if (this.rigidbones[0].r.isKinematic || this.animator.enabled) { base.StopAllCoroutines(); this.enableRagdollFlag = true; } } // Token: 0x06002861 RID: 10337 RVA: 0x00059250 File Offset: 0x00057450 [Token(Token = "0x6002861")] [Address(RVA = "0xCB3F80", Offset = "0xCB2780", VA = "0x180CB3F80")] public void DisableRagdoll() { if (!this.rigidbones[0].r.isKinematic && !this.animator.enabled) { RagdollUtility.Child[] array = this.children; int num = 0; int length = array.Length; if (num < length) { array[num].StoreLocalState(); num++; } base.StopAllCoroutines(); int num2; RagdollUtility.d__21 d__ = new RagdollUtility.d__21(num2); num2 = 0; d__.<>4__this = this; Coroutine coroutine = base.StartCoroutine(d__); } } // Token: 0x06002862 RID: 10338 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002862")] [Address(RVA = "0xCB4940", Offset = "0xCB3140", VA = "0x180CB4940")] public void Start() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002863 RID: 10339 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002863")] [Address(RVA = "0xCB3F10", Offset = "0xCB2710", VA = "0x180CB3F10")] private IEnumerator DisableRagdollSmooth() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002864 RID: 10340 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002864")] [Address(RVA = "0xCB4EB0", Offset = "0xCB36B0", VA = "0x180CB4EB0")] private void Update() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002865 RID: 10341 RVA: 0x000592D0 File Offset: 0x000574D0 [Token(Token = "0x6002865")] [Address(RVA = "0xCB41C0", Offset = "0xCB29C0", VA = "0x180CB41C0")] private void FixedUpdate() { if (!this.rigidbones[0].r.isKinematic) { bool enabled = this.animator.enabled; if (!enabled && this.applyIkOnRagdoll != enabled) { this.FixTransforms(1f); } } this.fixedFrame = true; } // Token: 0x06002866 RID: 10342 RVA: 0x00059328 File Offset: 0x00057528 [Token(Token = "0x6002866")] [Address(RVA = "0xCB4250", Offset = "0xCB2A50", VA = "0x180CB4250")] private void LateUpdate() { if (this.animator.updateMode != AnimatorUpdateMode.AnimatePhysics || (this.animator.updateMode == AnimatorUpdateMode.AnimatePhysics && this.fixedFrame)) { if (!this.rigidbones[0].r.isKinematic && !this.animator.enabled) { RagdollUtility.Child[] array = this.children; int num = 0; int length = array.Length; if (num >= length) { goto IL_7E; } array[num].StoreLocalState(); num++; } float num2 = this.ragdollWeight; this.FixTransforms(num2); } IL_7E: this.fixedFrame = false; if (!this.ikUsed) { this.OnFinalPose(); } } // Token: 0x06002867 RID: 10343 RVA: 0x000593D0 File Offset: 0x000575D0 [Token(Token = "0x6002867")] [Address(RVA = "0xCB3EE0", Offset = "0xCB26E0", VA = "0x180CB3EE0")] private void AfterLastIK() { if (this.ikUsed) { this.OnFinalPose(); return; } } // Token: 0x06002868 RID: 10344 RVA: 0x000593F0 File Offset: 0x000575F0 [Token(Token = "0x6002868")] [Address(RVA = "0xCB3E10", Offset = "0xCB2610", VA = "0x180CB3E10")] private void AfterAnimation() { if (!this.rigidbones[0].r.isKinematic && !this.animator.enabled) { RagdollUtility.Child[] array = this.children; int num = 0; int length = array.Length; if (num >= length) { return; } array[num].StoreLocalState(); num++; } float num2 = this.ragdollWeight; this.FixTransforms(num2); } // Token: 0x06002869 RID: 10345 RVA: 0x0005945C File Offset: 0x0005765C [Token(Token = "0x6002869")] [Address(RVA = "0xCB44C0", Offset = "0xCB2CC0", VA = "0x180CB44C0")] private void OnFinalPose() { if (this.rigidbones[0].r.isKinematic || this.animator.enabled) { RagdollUtility.Rigidbone[] array = this.rigidbones; int num = 0; int length = array.Length; if (num < length) { array[num].RecordVelocity(); num++; } } if (this.enableRagdollFlag) { this.RagdollEnabler(); } } // Token: 0x0600286A RID: 10346 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x600286A")] [Address(RVA = "0xCB45A0", Offset = "0xCB2DA0", VA = "0x180CB45A0")] private void RagdollEnabler() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x1700027F RID: 639 // (get) Token: 0x0600286B RID: 10347 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x1700027F")] private bool isRagdoll { [Token(Token = "0x600286B")] [Address(RVA = "0xCB5490", Offset = "0xCB3C90", VA = "0x180CB5490")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x0600286C RID: 10348 RVA: 0x000594CC File Offset: 0x000576CC [Token(Token = "0x600286C")] [Address(RVA = "0xCB48E0", Offset = "0xCB30E0", VA = "0x180CB48E0")] private void RecordVelocities() { RagdollUtility.Rigidbone[] array = this.rigidbones; int num = 0; int length = array.Length; if (num < length) { array[num].RecordVelocity(); num++; } } // Token: 0x17000280 RID: 640 // (get) Token: 0x0600286D RID: 10349 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x17000280")] private bool ikUsed { [Token(Token = "0x600286D")] [Address(RVA = "0xCB5340", Offset = "0xCB3B40", VA = "0x180CB5340")] get { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } // Token: 0x0600286E RID: 10350 RVA: 0x00059504 File Offset: 0x00057704 [Token(Token = "0x600286E")] [Address(RVA = "0xCB4E50", Offset = "0xCB3650", VA = "0x180CB4E50")] private void StoreLocalState() { RagdollUtility.Child[] array = this.children; int num = 0; int length = array.Length; if (num < length) { array[num].StoreLocalState(); num++; } } // Token: 0x0600286F RID: 10351 RVA: 0x0005953C File Offset: 0x0005773C [Token(Token = "0x600286F")] [Address(RVA = "0xCB4150", Offset = "0xCB2950", VA = "0x180CB4150")] private void FixTransforms(float weight) { RagdollUtility.Child[] array = this.children; int num = 0; int length = array.Length; if (num < length) { array[num].FixTransform(weight); num++; } } // Token: 0x06002870 RID: 10352 RVA: 0x00059574 File Offset: 0x00057774 [Token(Token = "0x6002870")] [Address(RVA = "0xCB4390", Offset = "0xCB2B90", VA = "0x180CB4390")] private void OnDestroy() { IK ik = this.ik; int num = 0; if (ik != num) { IKSolver iksolver = this.ik.GetIKSolver(); IKSolver.UpdateDelegate onPostUpdate = iksolver.OnPostUpdate; IKSolver.UpdateDelegate updateDelegate = new IKSolver.UpdateDelegate(this.AfterLastIK); Delegate @delegate = Delegate.Remove(onPostUpdate, updateDelegate); int num2 = 0; if (@delegate != 0 && @delegate == 0) { throw new InvalidCastException(); } iksolver.OnPostUpdate = num2; } } // Token: 0x06002871 RID: 10353 RVA: 0x000595E0 File Offset: 0x000577E0 [Token(Token = "0x6002871")] [Address(RVA = "0xCB5240", Offset = "0xCB3A40", VA = "0x180CB5240")] public RagdollUtility() { int num = 0; this.applyVelocity = 1f; this.applyAngularVelocity = 1f; RagdollUtility.Rigidbone[] array = new RagdollUtility.Rigidbone[num]; this.rigidbones = array; RagdollUtility.Child[] array2 = new RagdollUtility.Child[0]; this.children = array2; IK[] array3 = new IK[0]; this.allIKComponents = array3; bool[] array4 = new bool[0]; this.fixTransforms = array4; bool[] array5 = new bool[0]; this.disabledIKComponents = array5; base..ctor(); } // Token: 0x040031CC RID: 12748 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40031CC")] [Tooltip("If you have multiple IK components, then this should be the one that solves last each frame.")] public IK ik; // Token: 0x040031CD RID: 12749 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40031CD")] [Tooltip("How long does it take to blend from ragdoll to animation?")] public float ragdollToAnimationTime = 0.2f; // Token: 0x040031CE RID: 12750 [FieldOffset(Offset = "0x24")] [Token(Token = "0x40031CE")] [Tooltip("If true, IK can be used on top of physical ragdoll simulation.")] public bool applyIkOnRagdoll; // Token: 0x040031CF RID: 12751 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40031CF")] [Tooltip("How much velocity transfer from animation to ragdoll?")] public float applyVelocity; // Token: 0x040031D0 RID: 12752 [FieldOffset(Offset = "0x2C")] [Token(Token = "0x40031D0")] [Tooltip("How much angular velocity to transfer from animation to ragdoll?")] public float applyAngularVelocity; // Token: 0x040031D1 RID: 12753 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40031D1")] private Animator animator; // Token: 0x040031D2 RID: 12754 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40031D2")] private RagdollUtility.Rigidbone[] rigidbones; // Token: 0x040031D3 RID: 12755 [FieldOffset(Offset = "0x40")] [Token(Token = "0x40031D3")] private RagdollUtility.Child[] children; // Token: 0x040031D4 RID: 12756 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40031D4")] private bool enableRagdollFlag; // Token: 0x040031D5 RID: 12757 [FieldOffset(Offset = "0x4C")] [Token(Token = "0x40031D5")] private AnimatorUpdateMode animatorUpdateMode; // Token: 0x040031D6 RID: 12758 [FieldOffset(Offset = "0x50")] [Token(Token = "0x40031D6")] private IK[] allIKComponents; // Token: 0x040031D7 RID: 12759 [FieldOffset(Offset = "0x58")] [Token(Token = "0x40031D7")] private bool[] fixTransforms; // Token: 0x040031D8 RID: 12760 [FieldOffset(Offset = "0x60")] [Token(Token = "0x40031D8")] private float ragdollWeight; // Token: 0x040031D9 RID: 12761 [FieldOffset(Offset = "0x64")] [Token(Token = "0x40031D9")] private float ragdollWeightV; // Token: 0x040031DA RID: 12762 [FieldOffset(Offset = "0x68")] [Token(Token = "0x40031DA")] private bool fixedFrame; // Token: 0x040031DB RID: 12763 [FieldOffset(Offset = "0x70")] [Token(Token = "0x40031DB")] private bool[] disabledIKComponents; // Token: 0x02000466 RID: 1126 [Token(Token = "0x2000466")] public class Rigidbone { // Token: 0x06002872 RID: 10354 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002872")] [Address(RVA = "0x699DA0", Offset = "0x6985A0", VA = "0x180699DA0")] public Rigidbone(Rigidbody r) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002873 RID: 10355 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002873")] [Address(RVA = "0x6999D0", Offset = "0x6981D0", VA = "0x1806999D0")] public void RecordVelocity() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002874 RID: 10356 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002874")] [Address(RVA = "0x699B10", Offset = "0x698310", VA = "0x180699B10")] public void WakeUp(float velocityWeight, float angularVelocityWeight) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x040031DC RID: 12764 [FieldOffset(Offset = "0x10")] [Token(Token = "0x40031DC")] public Rigidbody r; // Token: 0x040031DD RID: 12765 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40031DD")] public Transform t; // Token: 0x040031DE RID: 12766 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40031DE")] public Collider collider; // Token: 0x040031DF RID: 12767 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40031DF")] public Joint joint; // Token: 0x040031E0 RID: 12768 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40031E0")] public Rigidbody c; // Token: 0x040031E1 RID: 12769 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40031E1")] public bool updateAnchor; // Token: 0x040031E2 RID: 12770 [FieldOffset(Offset = "0x3C")] [Token(Token = "0x40031E2")] public Vector3 deltaPosition; // Token: 0x040031E3 RID: 12771 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40031E3")] public Quaternion deltaRotation; // Token: 0x040031E4 RID: 12772 [FieldOffset(Offset = "0x58")] [Token(Token = "0x40031E4")] public float deltaTime; // Token: 0x040031E5 RID: 12773 [FieldOffset(Offset = "0x5C")] [Token(Token = "0x40031E5")] public Vector3 lastPosition; // Token: 0x040031E6 RID: 12774 [FieldOffset(Offset = "0x68")] [Token(Token = "0x40031E6")] public Quaternion lastRotation; } // Token: 0x02000467 RID: 1127 [Token(Token = "0x2000467")] public class Child { // Token: 0x06002875 RID: 10357 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002875")] [Address(RVA = "0x694030", Offset = "0x692830", VA = "0x180694030")] public Child(Transform transform) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002876 RID: 10358 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002876")] [Address(RVA = "0x693E10", Offset = "0x692610", VA = "0x180693E10")] public void FixTransform(float weight) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06002877 RID: 10359 RVA: 0x000020D3 File Offset: 0x000002D3 [Token(Token = "0x6002877")] [Address(RVA = "0x693FD0", Offset = "0x6927D0", VA = "0x180693FD0")] public void StoreLocalState() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x040031E7 RID: 12775 [FieldOffset(Offset = "0x10")] [Token(Token = "0x40031E7")] public Transform t; // Token: 0x040031E8 RID: 12776 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40031E8")] public Vector3 localPosition; // Token: 0x040031E9 RID: 12777 [FieldOffset(Offset = "0x24")] [Token(Token = "0x40031E9")] public Quaternion localRotation; } } }