Files
NobetaSource/Cpp2IL/Assembly-CSharp/RootMotion/FinalIK/RagdollUtility.cs
2023-09-06 22:09:22 +02:00

510 lines
15 KiB
C#

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.<DisableRagdollSmooth>d__21 <DisableRagdollSmooth>d__ = new RagdollUtility.<DisableRagdollSmooth>d__21(num2);
num2 = 0;
<DisableRagdollSmooth>d__.<>4__this = this;
Coroutine coroutine = base.StartCoroutine(<DisableRagdollSmooth>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;
}
}
}