491 lines
16 KiB
C#
491 lines
16 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x020004CB RID: 1227
|
|
[Token(Token = "0x20004CB")]
|
|
public class HitReactionVRIK : OffsetModifierVRIK
|
|
{
|
|
// Token: 0x06002B81 RID: 11137 RVA: 0x00060D70 File Offset: 0x0005EF70
|
|
[Token(Token = "0x6002B81")]
|
|
[Address(RVA = "0x1704B60", Offset = "0x1703B60", VA = "0x181704B60", Slot = "4")]
|
|
protected override void OnModifyOffset()
|
|
{
|
|
HitReactionVRIK.PositionOffset[] array = this.positionOffsets;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
HitReactionVRIK.PositionOffset positionOffset = array[num];
|
|
float weight = this.weight;
|
|
AnimationCurve[] array2 = this.offsetCurves;
|
|
VRIK ik = this.ik;
|
|
positionOffset.Apply(ik, array2, weight);
|
|
num++;
|
|
}
|
|
HitReactionVRIK.RotationOffset[] array3 = this.rotationOffsets;
|
|
int length2 = array3.Length;
|
|
if (num < length2)
|
|
{
|
|
HitReactionVRIK.RotationOffset rotationOffset = array3[num];
|
|
float weight2 = this.weight;
|
|
AnimationCurve[] array4 = this.offsetCurves;
|
|
VRIK ik2 = this.ik;
|
|
rotationOffset.Apply(ik2, array4, weight2);
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002B82 RID: 11138 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002B82")]
|
|
[Address(RVA = "0x17048C0", Offset = "0x17038C0", VA = "0x1817048C0")]
|
|
public void Hit(Collider collider, Vector3 force, Vector3 point)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002B83 RID: 11139 RVA: 0x00060E10 File Offset: 0x0005F010
|
|
[Token(Token = "0x6002B83")]
|
|
[Address(RVA = "0xDA8200", Offset = "0xDA7200", VA = "0x180DA8200")]
|
|
public HitReactionVRIK()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040034E3 RID: 13539
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40034E3")]
|
|
public AnimationCurve[] offsetCurves;
|
|
|
|
// Token: 0x040034E4 RID: 13540
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40034E4")]
|
|
[Tooltip("Hit points for the FBBIK effectors")]
|
|
public HitReactionVRIK.PositionOffset[] positionOffsets;
|
|
|
|
// Token: 0x040034E5 RID: 13541
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40034E5")]
|
|
[Tooltip(" Hit points for bones without an effector, such as the head")]
|
|
public HitReactionVRIK.RotationOffset[] rotationOffsets;
|
|
|
|
// Token: 0x020004CC RID: 1228
|
|
[Token(Token = "0x20004CC")]
|
|
[Serializable]
|
|
public abstract class Offset
|
|
{
|
|
// Token: 0x170002BB RID: 699
|
|
// (get) Token: 0x06002B84 RID: 11140 RVA: 0x00060E24 File Offset: 0x0005F024
|
|
// (set) Token: 0x06002B85 RID: 11141 RVA: 0x00060E38 File Offset: 0x0005F038
|
|
[Token(Token = "0x170002BB")]
|
|
private protected float crossFader
|
|
{
|
|
[Token(Token = "0x6002B84")]
|
|
[Address(RVA = "0x5C2880", Offset = "0x5C1880", VA = "0x1805C2880")]
|
|
protected get;
|
|
[Token(Token = "0x6002B85")]
|
|
[Address(RVA = "0x5C2910", Offset = "0x5C1910", VA = "0x1805C2910")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x170002BC RID: 700
|
|
// (get) Token: 0x06002B86 RID: 11142 RVA: 0x00060E4C File Offset: 0x0005F04C
|
|
// (set) Token: 0x06002B87 RID: 11143 RVA: 0x00060E60 File Offset: 0x0005F060
|
|
[Token(Token = "0x170002BC")]
|
|
private protected float timer
|
|
{
|
|
[Token(Token = "0x6002B86")]
|
|
[Address(RVA = "0xB94720", Offset = "0xB93720", VA = "0x180B94720")]
|
|
protected get;
|
|
[Token(Token = "0x6002B87")]
|
|
[Address(RVA = "0x13B7D20", Offset = "0x13B6D20", VA = "0x1813B7D20")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x170002BD RID: 701
|
|
// (get) Token: 0x06002B88 RID: 11144 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
// (set) Token: 0x06002B89 RID: 11145 RVA: 0x00060E74 File Offset: 0x0005F074
|
|
[Token(Token = "0x170002BD")]
|
|
private protected Vector3 force
|
|
{
|
|
[Token(Token = "0x6002B88")]
|
|
[Address(RVA = "0x1318D00", Offset = "0x1317D00", VA = "0x181318D00")]
|
|
[CompilerGenerated]
|
|
protected get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
[Token(Token = "0x6002B89")]
|
|
[Address(RVA = "0x1318DF0", Offset = "0x1317DF0", VA = "0x181318DF0")]
|
|
[CompilerGenerated]
|
|
private set
|
|
{
|
|
float z = value.z;
|
|
this.<force>k__BackingField.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x170002BE RID: 702
|
|
// (get) Token: 0x06002B8A RID: 11146 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
// (set) Token: 0x06002B8B RID: 11147 RVA: 0x00060E94 File Offset: 0x0005F094
|
|
[Token(Token = "0x170002BE")]
|
|
private protected Vector3 point
|
|
{
|
|
[Token(Token = "0x6002B8A")]
|
|
[Address(RVA = "0x3F66C0", Offset = "0x3F56C0", VA = "0x1803F66C0")]
|
|
[CompilerGenerated]
|
|
protected get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
[Token(Token = "0x6002B8B")]
|
|
[Address(RVA = "0x3F6740", Offset = "0x3F5740", VA = "0x1803F6740")]
|
|
[CompilerGenerated]
|
|
private set
|
|
{
|
|
float z = value.z;
|
|
this.<point>k__BackingField.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002B8C RID: 11148 RVA: 0x00060EB4 File Offset: 0x0005F0B4
|
|
[Token(Token = "0x6002B8C")]
|
|
[Address(RVA = "0x16ACA60", Offset = "0x16ABA60", VA = "0x1816ACA60")]
|
|
public void Hit(Vector3 force, AnimationCurve[] curves, Vector3 point)
|
|
{
|
|
int num = 0;
|
|
float num2 = this.GetLength(curves);
|
|
this.length = num2;
|
|
if (num < (int)num2)
|
|
{
|
|
int num3 = 0;
|
|
this.<crossFader>k__BackingField = (float)num3;
|
|
if (this.crossFadeTime > (float)num)
|
|
{
|
|
}
|
|
int num4 = 0;
|
|
this.crossFadeSpeed = (float)num4;
|
|
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 = (float)num3;
|
|
}
|
|
Debug.LogError("Hit Point WeightCurve length is zero.");
|
|
}
|
|
|
|
// Token: 0x06002B8D RID: 11149 RVA: 0x00060F34 File Offset: 0x0005F134
|
|
[Token(Token = "0x6002B8D")]
|
|
[Address(RVA = "0x16AC970", Offset = "0x16AB970", VA = "0x1816AC970")]
|
|
public void Apply(VRIK ik, AnimationCurve[] curves, 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(ik, curves, weight);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002B8E RID: 11150
|
|
[Token(Token = "0x6002B8E")]
|
|
[Address(Slot = "4")]
|
|
protected abstract float GetLength(AnimationCurve[] curves);
|
|
|
|
// Token: 0x06002B8F RID: 11151
|
|
[Token(Token = "0x6002B8F")]
|
|
[Address(Slot = "5")]
|
|
protected abstract void CrossFadeStart();
|
|
|
|
// Token: 0x06002B90 RID: 11152
|
|
[Token(Token = "0x6002B90")]
|
|
[Address(Slot = "6")]
|
|
protected abstract void OnApply(VRIK ik, AnimationCurve[] curves, float weight);
|
|
|
|
// Token: 0x06002B91 RID: 11153 RVA: 0x00060FBC File Offset: 0x0005F1BC
|
|
[Token(Token = "0x6002B91")]
|
|
[Address(RVA = "0x16A3700", Offset = "0x16A2700", VA = "0x1816A3700")]
|
|
protected Offset()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040034E6 RID: 13542
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40034E6")]
|
|
[Tooltip("Just for visual clarity, not used at all")]
|
|
public string name;
|
|
|
|
// Token: 0x040034E7 RID: 13543
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40034E7")]
|
|
[Tooltip("Linking this hit point to a collider")]
|
|
public Collider collider;
|
|
|
|
// Token: 0x040034E8 RID: 13544
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40034E8")]
|
|
[SerializeField]
|
|
[Tooltip("Only used if this hit point gets hit when already processing another hit")]
|
|
private float crossFadeTime = 0.1f;
|
|
|
|
// Token: 0x040034ED RID: 13549
|
|
[FieldOffset(Offset = "0x44")]
|
|
[Token(Token = "0x40034ED")]
|
|
private float length;
|
|
|
|
// Token: 0x040034EE RID: 13550
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x40034EE")]
|
|
private float crossFadeSpeed;
|
|
|
|
// Token: 0x040034EF RID: 13551
|
|
[FieldOffset(Offset = "0x4C")]
|
|
[Token(Token = "0x40034EF")]
|
|
private float lastTime;
|
|
}
|
|
|
|
// Token: 0x020004CD RID: 1229
|
|
[Token(Token = "0x20004CD")]
|
|
[Serializable]
|
|
public class PositionOffset : HitReactionVRIK.Offset
|
|
{
|
|
// Token: 0x06002B92 RID: 11154 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002B92")]
|
|
[Address(RVA = "0x16AD280", Offset = "0x16AC280", VA = "0x1816AD280", Slot = "4")]
|
|
protected override float GetLength(AnimationCurve[] curves)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002B93 RID: 11155 RVA: 0x00060FDC File Offset: 0x0005F1DC
|
|
[Token(Token = "0x6002B93")]
|
|
[Address(RVA = "0x16AD220", Offset = "0x16AC220", VA = "0x1816AD220", Slot = "5")]
|
|
protected override void CrossFadeStart()
|
|
{
|
|
HitReactionVRIK.PositionOffset.PositionOffsetLink[] array = this.offsetLinks;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
array[num].CrossFadeStart();
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002B94 RID: 11156 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002B94")]
|
|
[Address(RVA = "0x16AD4A0", Offset = "0x16AC4A0", VA = "0x1816AD4A0", Slot = "6")]
|
|
protected override void OnApply(VRIK ik, AnimationCurve[] curves, float weight)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002B95 RID: 11157 RVA: 0x00061014 File Offset: 0x0005F214
|
|
[Token(Token = "0x6002B95")]
|
|
[Address(RVA = "0x16AD720", Offset = "0x16AC720", VA = "0x1816AD720")]
|
|
public PositionOffset()
|
|
{
|
|
this.crossFadeTime = 0.1f;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x040034F0 RID: 13552
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40034F0")]
|
|
[Tooltip("Offset magnitude in the direction of the hit force")]
|
|
public int forceDirCurveIndex;
|
|
|
|
// Token: 0x040034F1 RID: 13553
|
|
[FieldOffset(Offset = "0x54")]
|
|
[Token(Token = "0x40034F1")]
|
|
[Tooltip("Offset magnitude in the direction of character.up")]
|
|
public int upDirCurveIndex = (int)((ulong)1L);
|
|
|
|
// Token: 0x040034F2 RID: 13554
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x40034F2")]
|
|
[Tooltip("Linking this offset to the VRIK position offsets")]
|
|
public HitReactionVRIK.PositionOffset.PositionOffsetLink[] offsetLinks;
|
|
|
|
// Token: 0x020004CE RID: 1230
|
|
[Token(Token = "0x20004CE")]
|
|
[Serializable]
|
|
public class PositionOffsetLink
|
|
{
|
|
// Token: 0x06002B96 RID: 11158 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B96")]
|
|
[Address(RVA = "0x6C89D0", Offset = "0x6C79D0", VA = "0x1806C89D0")]
|
|
public void Apply(VRIK ik, Vector3 offset, float crossFader)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06002B97 RID: 11159 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B97")]
|
|
[Address(RVA = "0x6C68B0", Offset = "0x6C58B0", VA = "0x1806C68B0")]
|
|
public void CrossFadeStart()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06002B98 RID: 11160 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B98")]
|
|
[Address(RVA = "0x36ABD0", Offset = "0x369BD0", VA = "0x18036ABD0")]
|
|
public PositionOffsetLink()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040034F3 RID: 13555
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40034F3")]
|
|
[Tooltip("The FBBIK effector type")]
|
|
public IKSolverVR.PositionOffset positionOffset;
|
|
|
|
// Token: 0x040034F4 RID: 13556
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x40034F4")]
|
|
[Tooltip("The weight of this effector (could also be negative)")]
|
|
public float weight;
|
|
|
|
// Token: 0x040034F5 RID: 13557
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40034F5")]
|
|
private Vector3 lastValue;
|
|
|
|
// Token: 0x040034F6 RID: 13558
|
|
[FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x40034F6")]
|
|
private Vector3 current;
|
|
}
|
|
}
|
|
|
|
// Token: 0x020004CF RID: 1231
|
|
[Token(Token = "0x20004CF")]
|
|
[Serializable]
|
|
public class RotationOffset : HitReactionVRIK.Offset
|
|
{
|
|
// Token: 0x06002B99 RID: 11161 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002B99")]
|
|
[Address(RVA = "0x16AD7A0", Offset = "0x16AC7A0", VA = "0x1816AD7A0", Slot = "4")]
|
|
protected override float GetLength(AnimationCurve[] curves)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002B9A RID: 11162 RVA: 0x0006103C File Offset: 0x0005F23C
|
|
[Token(Token = "0x6002B9A")]
|
|
[Address(RVA = "0x16AD740", Offset = "0x16AC740", VA = "0x1816AD740", Slot = "5")]
|
|
protected override void CrossFadeStart()
|
|
{
|
|
HitReactionVRIK.RotationOffset.RotationOffsetLink[] array = this.offsetLinks;
|
|
int num = 0;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
array[num].CrossFadeStart();
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002B9B RID: 11163 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002B9B")]
|
|
[Address(RVA = "0x16AD8C0", Offset = "0x16AC8C0", VA = "0x1816AD8C0", Slot = "6")]
|
|
protected override void OnApply(VRIK ik, AnimationCurve[] curves, float weight)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002B9C RID: 11164 RVA: 0x00061074 File Offset: 0x0005F274
|
|
[Token(Token = "0x6002B9C")]
|
|
[Address(RVA = "0x16A3700", Offset = "0x16A2700", VA = "0x1816A3700")]
|
|
public RotationOffset()
|
|
{
|
|
this.crossFadeTime = 0.1f;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x040034F7 RID: 13559
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40034F7")]
|
|
[Tooltip("The angle to rotate the bone around it's rigidbody's world center of mass")]
|
|
public int curveIndex;
|
|
|
|
// Token: 0x040034F8 RID: 13560
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x40034F8")]
|
|
[Tooltip("Linking this hit point to bone(s)")]
|
|
public HitReactionVRIK.RotationOffset.RotationOffsetLink[] offsetLinks;
|
|
|
|
// Token: 0x040034F9 RID: 13561
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x40034F9")]
|
|
private Rigidbody rigidbody;
|
|
|
|
// Token: 0x020004D0 RID: 1232
|
|
[Token(Token = "0x20004D0")]
|
|
[Serializable]
|
|
public class RotationOffsetLink
|
|
{
|
|
// Token: 0x06002B9D RID: 11165 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B9D")]
|
|
[Address(RVA = "0x6CA110", Offset = "0x6C9110", VA = "0x1806CA110")]
|
|
public void Apply(VRIK ik, Quaternion offset, float crossFader)
|
|
{
|
|
}
|
|
|
|
// Token: 0x06002B9E RID: 11166 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B9E")]
|
|
[Address(RVA = "0x6CA200", Offset = "0x6C9200", VA = "0x1806CA200")]
|
|
public void CrossFadeStart()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06002B9F RID: 11167 RVA: 0x0003DF9B File Offset: 0x0003C19B
|
|
[Token(Token = "0x6002B9F")]
|
|
[Address(RVA = "0x6CA210", Offset = "0x6C9210", VA = "0x1806CA210")]
|
|
public RotationOffsetLink()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040034FA RID: 13562
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40034FA")]
|
|
[Tooltip("Reference to the bone that this hit point rotates")]
|
|
public IKSolverVR.RotationOffset rotationOffset;
|
|
|
|
// Token: 0x040034FB RID: 13563
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x40034FB")]
|
|
[Tooltip("Weight of rotating the bone")]
|
|
[Range(0f, 1f)]
|
|
public float weight;
|
|
|
|
// Token: 0x040034FC RID: 13564
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40034FC")]
|
|
private Quaternion lastValue;
|
|
|
|
// Token: 0x040034FD RID: 13565
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40034FD")]
|
|
private Quaternion current;
|
|
}
|
|
}
|
|
}
|
|
}
|