532 lines
16 KiB
C#
532 lines
16 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x02000476 RID: 1142
|
|
[Token(Token = "0x2000476")]
|
|
public class HitReaction : OffsetModifier
|
|
{
|
|
// Token: 0x1700028A RID: 650
|
|
// (get) Token: 0x060028C9 RID: 10441 RVA: 0x00059AAC File Offset: 0x00057CAC
|
|
[Token(Token = "0x1700028A")]
|
|
public bool inProgress
|
|
{
|
|
[Token(Token = "0x60028C9")]
|
|
[Address(RVA = "0x11E1950", Offset = "0x11E0150", VA = "0x1811E1950")]
|
|
get
|
|
{
|
|
HitReaction.HitPointEffector[] array = this.effectorHitPoints;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
if (array[num].inProgress)
|
|
{
|
|
return true;
|
|
}
|
|
num++;
|
|
}
|
|
HitReaction.HitPointBone[] array2 = this.boneHitPoints;
|
|
int length2 = array2.Length;
|
|
if (num >= length2)
|
|
{
|
|
throw new NullReferenceException();
|
|
}
|
|
if (!array2[num].inProgress)
|
|
{
|
|
num++;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028CA RID: 10442 RVA: 0x00059B10 File Offset: 0x00057D10
|
|
[Token(Token = "0x60028CA")]
|
|
[Address(RVA = "0x11E1850", Offset = "0x11E0050", VA = "0x1811E1850", Slot = "4")]
|
|
protected override void OnModifyOffset()
|
|
{
|
|
HitReaction.HitPointEffector[] array = this.effectorHitPoints;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
FullBodyBipedIK ik = this.ik;
|
|
HitReaction.HitPointEffector hitPointEffector = array[num];
|
|
float weight = this.weight;
|
|
IKSolverFullBodyBiped solver = ik.solver;
|
|
hitPointEffector.Apply(solver, weight);
|
|
num++;
|
|
}
|
|
HitReaction.HitPointBone[] array2 = this.boneHitPoints;
|
|
int length2 = array2.Length;
|
|
if (num < length2)
|
|
{
|
|
FullBodyBipedIK ik2 = this.ik;
|
|
HitReaction.HitPointBone hitPointBone = array2[num];
|
|
float weight2 = this.weight;
|
|
IKSolverFullBodyBiped solver2 = ik2.solver;
|
|
hitPointBone.Apply(solver2, weight2);
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028CB RID: 10443 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60028CB")]
|
|
[Address(RVA = "0x11E15C0", Offset = "0x11DFDC0", VA = "0x1811E15C0")]
|
|
public void Hit(Collider collider, Vector3 force, Vector3 point)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060028CC RID: 10444 RVA: 0x00059BB0 File Offset: 0x00057DB0
|
|
[Token(Token = "0x60028CC")]
|
|
[Address(RVA = "0xA91CB0", Offset = "0xA904B0", VA = "0x180A91CB0")]
|
|
public HitReaction()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003221 RID: 12833
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4003221")]
|
|
[Tooltip("Hit points for the FBBIK effectors")]
|
|
public HitReaction.HitPointEffector[] effectorHitPoints;
|
|
|
|
// Token: 0x04003222 RID: 12834
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4003222")]
|
|
[Tooltip(" Hit points for bones without an effector, such as the head")]
|
|
public HitReaction.HitPointBone[] boneHitPoints;
|
|
|
|
// Token: 0x02000477 RID: 1143
|
|
[Token(Token = "0x2000477")]
|
|
[Serializable]
|
|
public abstract class HitPoint
|
|
{
|
|
// Token: 0x1700028B RID: 651
|
|
// (get) Token: 0x060028CD RID: 10445 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x1700028B")]
|
|
public bool inProgress
|
|
{
|
|
[Token(Token = "0x60028CD")]
|
|
[Address(RVA = "0x1584E60", Offset = "0x1583660", VA = "0x181584E60")]
|
|
get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700028C RID: 652
|
|
// (get) Token: 0x060028CE RID: 10446 RVA: 0x00059BC4 File Offset: 0x00057DC4
|
|
// (set) Token: 0x060028CF RID: 10447 RVA: 0x00059BD8 File Offset: 0x00057DD8
|
|
[Token(Token = "0x1700028C")]
|
|
private protected float crossFader
|
|
{
|
|
[Token(Token = "0x60028CE")]
|
|
[Address(RVA = "0x5ACB40", Offset = "0x5AB340", VA = "0x1805ACB40")]
|
|
protected get;
|
|
[Token(Token = "0x60028CF")]
|
|
[Address(RVA = "0x5ACBD0", Offset = "0x5AB3D0", VA = "0x1805ACBD0")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700028D RID: 653
|
|
// (get) Token: 0x060028D0 RID: 10448 RVA: 0x00059BEC File Offset: 0x00057DEC
|
|
// (set) Token: 0x060028D1 RID: 10449 RVA: 0x00059C00 File Offset: 0x00057E00
|
|
[Token(Token = "0x1700028D")]
|
|
private protected float timer
|
|
{
|
|
[Token(Token = "0x60028D0")]
|
|
[Address(RVA = "0x66CA40", Offset = "0x66B240", VA = "0x18066CA40")]
|
|
protected get;
|
|
[Token(Token = "0x60028D1")]
|
|
[Address(RVA = "0x66CA50", Offset = "0x66B250", VA = "0x18066CA50")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700028E RID: 654
|
|
// (get) Token: 0x060028D2 RID: 10450 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
// (set) Token: 0x060028D3 RID: 10451 RVA: 0x00059C14 File Offset: 0x00057E14
|
|
[Token(Token = "0x1700028E")]
|
|
private protected Vector3 force
|
|
{
|
|
[Token(Token = "0x60028D2")]
|
|
[Address(RVA = "0x13017D0", Offset = "0x12FFFD0", VA = "0x1813017D0")]
|
|
[CompilerGenerated]
|
|
protected get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
[Token(Token = "0x60028D3")]
|
|
[Address(RVA = "0x13018C0", Offset = "0x13000C0", VA = "0x1813018C0")]
|
|
[CompilerGenerated]
|
|
private set
|
|
{
|
|
float z = value.z;
|
|
this.<force>k__BackingField.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700028F RID: 655
|
|
// (get) Token: 0x060028D4 RID: 10452 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
// (set) Token: 0x060028D5 RID: 10453 RVA: 0x00059C34 File Offset: 0x00057E34
|
|
[Token(Token = "0x1700028F")]
|
|
private protected Vector3 point
|
|
{
|
|
[Token(Token = "0x60028D4")]
|
|
[Address(RVA = "0x3D4860", Offset = "0x3D3060", VA = "0x1803D4860")]
|
|
[CompilerGenerated]
|
|
protected get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
[Token(Token = "0x60028D5")]
|
|
[Address(RVA = "0x3D48E0", Offset = "0x3D30E0", VA = "0x1803D48E0")]
|
|
[CompilerGenerated]
|
|
private set
|
|
{
|
|
float z = value.z;
|
|
this.<point>k__BackingField.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028D6 RID: 10454 RVA: 0x00059C54 File Offset: 0x00057E54
|
|
[Token(Token = "0x60028D6")]
|
|
[Address(RVA = "0x1584D40", Offset = "0x1583540", VA = "0x181584D40")]
|
|
public void Hit(Vector3 force, Vector3 point)
|
|
{
|
|
int num = 0;
|
|
float num2 = this.GetLength();
|
|
this.length = num2;
|
|
if (num < (int)num2)
|
|
{
|
|
this.<crossFader>k__BackingField = 0f;
|
|
if (this.crossFadeTime > (float)num)
|
|
{
|
|
}
|
|
int num3 = 0;
|
|
this.crossFadeSpeed = (float)num3;
|
|
this.CrossFadeStart();
|
|
float z = force.z;
|
|
this.<force>k__BackingField.z = z;
|
|
float z2 = point.z;
|
|
this.<point>k__BackingField.z = z2;
|
|
this.<timer>k__BackingField = 0f;
|
|
}
|
|
Debug.LogError("Hit Point WeightCurve length is zero.");
|
|
}
|
|
|
|
// Token: 0x060028D7 RID: 10455 RVA: 0x00059CD8 File Offset: 0x00057ED8
|
|
[Token(Token = "0x60028D7")]
|
|
[Address(RVA = "0x1584C70", Offset = "0x1583470", VA = "0x181584C70")]
|
|
public void Apply(IKSolverFullBodyBiped solver, float weight)
|
|
{
|
|
float time = Time.time;
|
|
float time2 = Time.time;
|
|
float num = this.length;
|
|
this.lastTime = time2;
|
|
float num2 = this.<timer>k__BackingField;
|
|
if (num2 < num)
|
|
{
|
|
int num3 = 0;
|
|
int num4 = 0;
|
|
float num5 = Mathf.Clamp(num2, (float)num3, num);
|
|
this.<timer>k__BackingField = num5;
|
|
float num6 = this.crossFadeSpeed;
|
|
if (num6 <= (float)num4)
|
|
{
|
|
}
|
|
int num7 = 0;
|
|
float num8 = Mathf.Clamp(num6, (float)num7, 1f);
|
|
this.<crossFader>k__BackingField = num8;
|
|
this.OnApply(solver, weight);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028D8 RID: 10456
|
|
[Token(Token = "0x60028D8")]
|
|
[Address(Slot = "4")]
|
|
protected abstract float GetLength();
|
|
|
|
// Token: 0x060028D9 RID: 10457
|
|
[Token(Token = "0x60028D9")]
|
|
[Address(Slot = "5")]
|
|
protected abstract void CrossFadeStart();
|
|
|
|
// Token: 0x060028DA RID: 10458
|
|
[Token(Token = "0x60028DA")]
|
|
[Address(Slot = "6")]
|
|
protected abstract void OnApply(IKSolverFullBodyBiped solver, float weight);
|
|
|
|
// Token: 0x060028DB RID: 10459 RVA: 0x00059D60 File Offset: 0x00057F60
|
|
[Token(Token = "0x60028DB")]
|
|
[Address(RVA = "0x1584890", Offset = "0x1583090", VA = "0x181584890")]
|
|
protected HitPoint()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003223 RID: 12835
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4003223")]
|
|
[Tooltip("Just for visual clarity, not used at all")]
|
|
public string name;
|
|
|
|
// Token: 0x04003224 RID: 12836
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4003224")]
|
|
[Tooltip("Linking this hit point to a collider")]
|
|
public Collider collider;
|
|
|
|
// Token: 0x04003225 RID: 12837
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4003225")]
|
|
[SerializeField]
|
|
[Tooltip("Only used if this hit point gets hit when already processing another hit")]
|
|
private float crossFadeTime = 0.1f;
|
|
|
|
// Token: 0x0400322A RID: 12842
|
|
[FieldOffset(Offset = "0x44")]
|
|
[Token(Token = "0x400322A")]
|
|
private float length;
|
|
|
|
// Token: 0x0400322B RID: 12843
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x400322B")]
|
|
private float crossFadeSpeed;
|
|
|
|
// Token: 0x0400322C RID: 12844
|
|
[FieldOffset(Offset = "0x4C")]
|
|
[Token(Token = "0x400322C")]
|
|
private float lastTime;
|
|
}
|
|
|
|
// Token: 0x02000478 RID: 1144
|
|
[Token(Token = "0x2000478")]
|
|
[Serializable]
|
|
public class HitPointEffector : HitReaction.HitPoint
|
|
{
|
|
// Token: 0x060028DC RID: 10460 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60028DC")]
|
|
[Address(RVA = "0x1584900", Offset = "0x1583100", VA = "0x181584900", Slot = "4")]
|
|
protected override float GetLength()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060028DD RID: 10461 RVA: 0x00059D80 File Offset: 0x00057F80
|
|
[Token(Token = "0x60028DD")]
|
|
[Address(RVA = "0x15848A0", Offset = "0x15830A0", VA = "0x1815848A0", Slot = "5")]
|
|
protected override void CrossFadeStart()
|
|
{
|
|
HitReaction.HitPointEffector.EffectorLink[] array = this.effectorLinks;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
array[num].CrossFadeStart();
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028DE RID: 10462 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60028DE")]
|
|
[Address(RVA = "0x1584A50", Offset = "0x1583250", VA = "0x181584A50", Slot = "6")]
|
|
protected override void OnApply(IKSolverFullBodyBiped solver, float weight)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060028DF RID: 10463 RVA: 0x00059DB8 File Offset: 0x00057FB8
|
|
[Token(Token = "0x60028DF")]
|
|
[Address(RVA = "0x1584890", Offset = "0x1583090", VA = "0x181584890")]
|
|
public HitPointEffector()
|
|
{
|
|
this.crossFadeTime = 0.1f;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x0400322D RID: 12845
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x400322D")]
|
|
[Tooltip("Offset magnitude in the direction of the hit force")]
|
|
public AnimationCurve offsetInForceDirection;
|
|
|
|
// Token: 0x0400322E RID: 12846
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x400322E")]
|
|
[Tooltip("Offset magnitude in the direction of character.up")]
|
|
public AnimationCurve offsetInUpDirection;
|
|
|
|
// Token: 0x0400322F RID: 12847
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x400322F")]
|
|
[Tooltip("Linking this offset to the FBBIK effectors")]
|
|
public HitReaction.HitPointEffector.EffectorLink[] effectorLinks;
|
|
|
|
// Token: 0x02000479 RID: 1145
|
|
[Token(Token = "0x2000479")]
|
|
[Serializable]
|
|
public class EffectorLink
|
|
{
|
|
// Token: 0x060028E0 RID: 10464 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E0")]
|
|
[Address(RVA = "0x12DC280", Offset = "0x12DAA80", VA = "0x1812DC280")]
|
|
public void Apply(IKSolverFullBodyBiped solver, Vector3 offset, float crossFader)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060028E1 RID: 10465 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E1")]
|
|
[Address(RVA = "0x12DC3F0", Offset = "0x12DABF0", VA = "0x1812DC3F0")]
|
|
public void CrossFadeStart()
|
|
{
|
|
}
|
|
|
|
// Token: 0x060028E2 RID: 10466 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E2")]
|
|
[Address(RVA = "0x43A830", Offset = "0x439030", VA = "0x18043A830")]
|
|
public EffectorLink()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003230 RID: 12848
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4003230")]
|
|
[Tooltip("The FBBIK effector type")]
|
|
public FullBodyBipedEffector effector;
|
|
|
|
// Token: 0x04003231 RID: 12849
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x4003231")]
|
|
[Tooltip("The weight of this effector (could also be negative)")]
|
|
public float weight;
|
|
|
|
// Token: 0x04003232 RID: 12850
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4003232")]
|
|
private Vector3 lastValue;
|
|
|
|
// Token: 0x04003233 RID: 12851
|
|
[FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x4003233")]
|
|
private Vector3 current;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0200047A RID: 1146
|
|
[Token(Token = "0x200047A")]
|
|
[Serializable]
|
|
public class HitPointBone : HitReaction.HitPoint
|
|
{
|
|
// Token: 0x060028E3 RID: 10467 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60028E3")]
|
|
[Address(RVA = "0x1584590", Offset = "0x1582D90", VA = "0x181584590", Slot = "4")]
|
|
protected override float GetLength()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060028E4 RID: 10468 RVA: 0x00059DD8 File Offset: 0x00057FD8
|
|
[Token(Token = "0x60028E4")]
|
|
[Address(RVA = "0x1584530", Offset = "0x1582D30", VA = "0x181584530", Slot = "5")]
|
|
protected override void CrossFadeStart()
|
|
{
|
|
HitReaction.HitPointBone.BoneLink[] array = this.boneLinks;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
array[num].CrossFadeStart();
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060028E5 RID: 10469 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60028E5")]
|
|
[Address(RVA = "0x1584630", Offset = "0x1582E30", VA = "0x181584630", Slot = "6")]
|
|
protected override void OnApply(IKSolverFullBodyBiped solver, float weight)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060028E6 RID: 10470 RVA: 0x00059E10 File Offset: 0x00058010
|
|
[Token(Token = "0x60028E6")]
|
|
[Address(RVA = "0x1584890", Offset = "0x1583090", VA = "0x181584890")]
|
|
public HitPointBone()
|
|
{
|
|
this.crossFadeTime = 0.1f;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x04003234 RID: 12852
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4003234")]
|
|
[Tooltip("The angle to rotate the bone around it's rigidbody's world center of mass")]
|
|
public AnimationCurve aroundCenterOfMass;
|
|
|
|
// Token: 0x04003235 RID: 12853
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x4003235")]
|
|
[Tooltip("Linking this hit point to bone(s)")]
|
|
public HitReaction.HitPointBone.BoneLink[] boneLinks;
|
|
|
|
// Token: 0x04003236 RID: 12854
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4003236")]
|
|
private Rigidbody rigidbody;
|
|
|
|
// Token: 0x0200047B RID: 1147
|
|
[Token(Token = "0x200047B")]
|
|
[Serializable]
|
|
public class BoneLink
|
|
{
|
|
// Token: 0x060028E7 RID: 10471 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E7")]
|
|
[Address(RVA = "0x12DC110", Offset = "0x12DA910", VA = "0x1812DC110")]
|
|
public void Apply(IKSolverFullBodyBiped solver, Quaternion offset, float crossFader)
|
|
{
|
|
}
|
|
|
|
// Token: 0x060028E8 RID: 10472 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E8")]
|
|
[Address(RVA = "0x12DC230", Offset = "0x12DAA30", VA = "0x1812DC230")]
|
|
public void CrossFadeStart()
|
|
{
|
|
}
|
|
|
|
// Token: 0x060028E9 RID: 10473 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x60028E9")]
|
|
[Address(RVA = "0x12DC240", Offset = "0x12DAA40", VA = "0x1812DC240")]
|
|
public BoneLink()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003237 RID: 12855
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4003237")]
|
|
[Tooltip("Reference to the bone that this hit point rotates")]
|
|
public Transform bone;
|
|
|
|
// Token: 0x04003238 RID: 12856
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4003238")]
|
|
[Tooltip("Weight of rotating the bone")]
|
|
[Range(0f, 1f)]
|
|
public float weight;
|
|
|
|
// Token: 0x04003239 RID: 12857
|
|
[FieldOffset(Offset = "0x1C")]
|
|
[Token(Token = "0x4003239")]
|
|
private Quaternion lastValue;
|
|
|
|
// Token: 0x0400323A RID: 12858
|
|
[FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x400323A")]
|
|
private Quaternion current;
|
|
}
|
|
}
|
|
}
|
|
}
|