418 lines
13 KiB
C#
418 lines
13 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x0200048C RID: 1164
|
|
[Token(Token = "0x200048C")]
|
|
public class Recoil : OffsetModifier
|
|
{
|
|
// Token: 0x1700029A RID: 666
|
|
// (get) Token: 0x06002934 RID: 10548 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x1700029A")]
|
|
public bool isFinished
|
|
{
|
|
[Token(Token = "0x6002934")]
|
|
[Address(RVA = "0xCB6DF0", Offset = "0xCB55F0", VA = "0x180CB6DF0")]
|
|
get
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002935 RID: 10549 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002935")]
|
|
[Address(RVA = "0xCB6D50", Offset = "0xCB5550", VA = "0x180CB6D50")]
|
|
public void SetHandRotations(Quaternion leftHandRotation, Quaternion rightHandRotation)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002936 RID: 10550 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002936")]
|
|
[Address(RVA = "0xCB5AE0", Offset = "0xCB42E0", VA = "0x180CB5AE0")]
|
|
public void Fire(float magnitude)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002937 RID: 10551 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002937")]
|
|
[Address(RVA = "0xCB5E90", Offset = "0xCB4690", VA = "0x180CB5E90", Slot = "4")]
|
|
protected override void OnModifyOffset()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002938 RID: 10552 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002938")]
|
|
[Address(RVA = "0xCB5930", Offset = "0xCB4130", VA = "0x180CB5930")]
|
|
private void AfterFBBIK()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002939 RID: 10553 RVA: 0x0005A5E0 File Offset: 0x000587E0
|
|
[Token(Token = "0x6002939")]
|
|
[Address(RVA = "0xCB58E0", Offset = "0xCB40E0", VA = "0x180CB58E0")]
|
|
private void AfterAimIK()
|
|
{
|
|
if (this.aimIKSolvedLast)
|
|
{
|
|
IKSolverAim solver = this.aimIK.solver;
|
|
float z = this.aimIKAxis.z;
|
|
solver.axis.z = z;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700029B RID: 667
|
|
// (get) Token: 0x0600293A RID: 10554 RVA: 0x0005A620 File Offset: 0x00058820
|
|
[Token(Token = "0x1700029B")]
|
|
private IKEffector primaryHandEffector
|
|
{
|
|
[Token(Token = "0x600293A")]
|
|
[Address(RVA = "0xCB6E10", Offset = "0xCB5610", VA = "0x180CB6E10")]
|
|
get
|
|
{
|
|
FullBodyBipedIK ik = this.ik;
|
|
if (this.handedness != Recoil.Handedness.Right)
|
|
{
|
|
return ik.solver.leftHandEffector;
|
|
}
|
|
return ik.solver.rightHandEffector;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700029C RID: 668
|
|
// (get) Token: 0x0600293B RID: 10555 RVA: 0x0005A65C File Offset: 0x0005885C
|
|
[Token(Token = "0x1700029C")]
|
|
private IKEffector secondaryHandEffector
|
|
{
|
|
[Token(Token = "0x600293B")]
|
|
[Address(RVA = "0xCB6EB0", Offset = "0xCB56B0", VA = "0x180CB6EB0")]
|
|
get
|
|
{
|
|
FullBodyBipedIK ik = this.ik;
|
|
if (this.handedness != Recoil.Handedness.Right)
|
|
{
|
|
return ik.solver.rightHandEffector;
|
|
}
|
|
return ik.solver.leftHandEffector;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700029D RID: 669
|
|
// (get) Token: 0x0600293C RID: 10556 RVA: 0x0005A698 File Offset: 0x00058898
|
|
[Token(Token = "0x1700029D")]
|
|
private Transform primaryHand
|
|
{
|
|
[Token(Token = "0x600293C")]
|
|
[Address(RVA = "0xCB6E60", Offset = "0xCB5660", VA = "0x180CB6E60")]
|
|
get
|
|
{
|
|
FullBodyBipedIK ik = this.ik;
|
|
if (this.handedness != Recoil.Handedness.Right)
|
|
{
|
|
IKEffector leftHandEffector = ik.solver.leftHandEffector;
|
|
}
|
|
return ik.solver.rightHandEffector.bone;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700029E RID: 670
|
|
// (get) Token: 0x0600293D RID: 10557 RVA: 0x0005A6D8 File Offset: 0x000588D8
|
|
[Token(Token = "0x1700029E")]
|
|
private Transform secondaryHand
|
|
{
|
|
[Token(Token = "0x600293D")]
|
|
[Address(RVA = "0xCB6F00", Offset = "0xCB5700", VA = "0x180CB6F00")]
|
|
get
|
|
{
|
|
FullBodyBipedIK ik = this.ik;
|
|
if (this.handedness != Recoil.Handedness.Right)
|
|
{
|
|
IKEffector rightHandEffector = ik.solver.rightHandEffector;
|
|
}
|
|
return ik.solver.leftHandEffector.bone;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600293E RID: 10558 RVA: 0x0005A718 File Offset: 0x00058918
|
|
[Token(Token = "0x600293E")]
|
|
[Address(RVA = "0xCB5C80", Offset = "0xCB4480", VA = "0x180CB5C80", Slot = "6")]
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
FullBodyBipedIK ik = this.ik;
|
|
int num = 0;
|
|
if (ik != num && this.initiated)
|
|
{
|
|
IKSolverFullBodyBiped solver = this.ik.solver;
|
|
IKSolver.UpdateDelegate onPostUpdate = solver.OnPostUpdate;
|
|
IKSolver.UpdateDelegate updateDelegate = new IKSolver.UpdateDelegate(this.AfterFBBIK);
|
|
Delegate @delegate = Delegate.Remove(onPostUpdate, updateDelegate);
|
|
int num2 = 0;
|
|
if (@delegate == 0 || @delegate != 0)
|
|
{
|
|
solver.OnPostUpdate = num2;
|
|
AimIK aimIK = this.aimIK;
|
|
int num3 = 0;
|
|
if (!(aimIK != num3))
|
|
{
|
|
return;
|
|
}
|
|
IKSolverAim solver2 = this.aimIK.solver;
|
|
IKSolver.UpdateDelegate onPostUpdate2 = solver2.OnPostUpdate;
|
|
IKSolver.UpdateDelegate updateDelegate2 = new IKSolver.UpdateDelegate(this.AfterAimIK);
|
|
Delegate delegate2 = Delegate.Remove(onPostUpdate2, updateDelegate2);
|
|
if (delegate2 == 0 || delegate2 != 0)
|
|
{
|
|
solver2.OnPostUpdate = delegate2;
|
|
return;
|
|
}
|
|
}
|
|
throw new InvalidCastException();
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600293F RID: 10559 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600293F")]
|
|
[Address(RVA = "0xCB6D80", Offset = "0xCB5580", VA = "0x180CB6D80")]
|
|
public Recoil()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x04003281 RID: 12929
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4003281")]
|
|
[Tooltip("Reference to the AimIK component. Optional, only used to getting the aiming direction.")]
|
|
public AimIK aimIK;
|
|
|
|
// Token: 0x04003282 RID: 12930
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4003282")]
|
|
[Tooltip("Set this true if you are using IKExecutionOrder.cs or a custom script to force AimIK solve after FBBIK.")]
|
|
public bool aimIKSolvedLast;
|
|
|
|
// Token: 0x04003283 RID: 12931
|
|
[FieldOffset(Offset = "0x3C")]
|
|
[Token(Token = "0x4003283")]
|
|
[Tooltip("Which hand is holding the weapon?")]
|
|
public Recoil.Handedness handedness;
|
|
|
|
// Token: 0x04003284 RID: 12932
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4003284")]
|
|
[Tooltip("Check for 2-handed weapons.")]
|
|
public bool twoHanded;
|
|
|
|
// Token: 0x04003285 RID: 12933
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4003285")]
|
|
[Tooltip("Weight curve for the recoil offsets. Recoil procedure is as long as this curve.")]
|
|
public AnimationCurve recoilWeight;
|
|
|
|
// Token: 0x04003286 RID: 12934
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4003286")]
|
|
[Tooltip("How much is the magnitude randomized each time Recoil is called?")]
|
|
public float magnitudeRandom;
|
|
|
|
// Token: 0x04003287 RID: 12935
|
|
[FieldOffset(Offset = "0x54")]
|
|
[Token(Token = "0x4003287")]
|
|
[Tooltip("How much is the rotation randomized each time Recoil is called?")]
|
|
public Vector3 rotationRandom;
|
|
|
|
// Token: 0x04003288 RID: 12936
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4003288")]
|
|
[Tooltip("Rotating the primary hand bone for the recoil (in local space).")]
|
|
public Vector3 handRotationOffset;
|
|
|
|
// Token: 0x04003289 RID: 12937
|
|
[FieldOffset(Offset = "0x6C")]
|
|
[Token(Token = "0x4003289")]
|
|
[Tooltip("Time of blending in another recoil when doing automatic fire.")]
|
|
public float blendTime;
|
|
|
|
// Token: 0x0400328A RID: 12938
|
|
[FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x400328A")]
|
|
[Space]
|
|
[Space(10f)]
|
|
[Tooltip("FBBIK effector position offsets for the recoil (in aiming direction space).")]
|
|
public Recoil.RecoilOffset[] offsets;
|
|
|
|
// Token: 0x0400328B RID: 12939
|
|
[FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x400328B")]
|
|
[HideInInspector]
|
|
public Quaternion rotationOffset;
|
|
|
|
// Token: 0x0400328C RID: 12940
|
|
[FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x400328C")]
|
|
private float magnitudeMlp;
|
|
|
|
// Token: 0x0400328D RID: 12941
|
|
[FieldOffset(Offset = "0x8C")]
|
|
[Token(Token = "0x400328D")]
|
|
private float endTime;
|
|
|
|
// Token: 0x0400328E RID: 12942
|
|
[FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x400328E")]
|
|
private Quaternion handRotation;
|
|
|
|
// Token: 0x0400328F RID: 12943
|
|
[FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x400328F")]
|
|
private Quaternion secondaryHandRelativeRotation;
|
|
|
|
// Token: 0x04003290 RID: 12944
|
|
[FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x4003290")]
|
|
private Quaternion randomRotation;
|
|
|
|
// Token: 0x04003291 RID: 12945
|
|
[FieldOffset(Offset = "0xC0")]
|
|
[Token(Token = "0x4003291")]
|
|
private float length;
|
|
|
|
// Token: 0x04003292 RID: 12946
|
|
[FieldOffset(Offset = "0xC4")]
|
|
[Token(Token = "0x4003292")]
|
|
private bool initiated;
|
|
|
|
// Token: 0x04003293 RID: 12947
|
|
[FieldOffset(Offset = "0xC8")]
|
|
[Token(Token = "0x4003293")]
|
|
private float blendWeight;
|
|
|
|
// Token: 0x04003294 RID: 12948
|
|
[FieldOffset(Offset = "0xCC")]
|
|
[Token(Token = "0x4003294")]
|
|
private float w;
|
|
|
|
// Token: 0x04003295 RID: 12949
|
|
[FieldOffset(Offset = "0xD0")]
|
|
[Token(Token = "0x4003295")]
|
|
private Quaternion primaryHandRotation;
|
|
|
|
// Token: 0x04003296 RID: 12950
|
|
[FieldOffset(Offset = "0xE0")]
|
|
[Token(Token = "0x4003296")]
|
|
private bool handRotationsSet;
|
|
|
|
// Token: 0x04003297 RID: 12951
|
|
[FieldOffset(Offset = "0xE4")]
|
|
[Token(Token = "0x4003297")]
|
|
private Vector3 aimIKAxis;
|
|
|
|
// Token: 0x0200048D RID: 1165
|
|
[Token(Token = "0x200048D")]
|
|
[Serializable]
|
|
public class RecoilOffset
|
|
{
|
|
// Token: 0x06002940 RID: 10560 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002940")]
|
|
[Address(RVA = "0x6988A0", Offset = "0x6970A0", VA = "0x1806988A0")]
|
|
public void Start()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002941 RID: 10561 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002941")]
|
|
[Address(RVA = "0x6985F0", Offset = "0x696DF0", VA = "0x1806985F0")]
|
|
public void Apply(IKSolverFullBodyBiped solver, Quaternion rotation, float masterWeight, float length, float timeLeft)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002942 RID: 10562 RVA: 0x0005A7F4 File Offset: 0x000589F4
|
|
[Token(Token = "0x6002942")]
|
|
[Address(RVA = "0x698950", Offset = "0x697150", VA = "0x180698950")]
|
|
public RecoilOffset()
|
|
{
|
|
}
|
|
|
|
// Token: 0x04003298 RID: 12952
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4003298")]
|
|
[Tooltip("Offset vector for the associated effector when doing recoil.")]
|
|
public Vector3 offset;
|
|
|
|
// Token: 0x04003299 RID: 12953
|
|
[FieldOffset(Offset = "0x1C")]
|
|
[Token(Token = "0x4003299")]
|
|
[Range(0f, 1f)]
|
|
[Tooltip("When firing before the last recoil has faded, how much of the current recoil offset will be maintained?")]
|
|
public float additivity = 1f;
|
|
|
|
// Token: 0x0400329A RID: 12954
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x400329A")]
|
|
[Tooltip("Max additive recoil for automatic fire.")]
|
|
public float maxAdditiveOffsetMag = 0.2f;
|
|
|
|
// Token: 0x0400329B RID: 12955
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x400329B")]
|
|
[Tooltip("Linking this recoil offset to FBBIK effectors.")]
|
|
public Recoil.RecoilOffset.EffectorLink[] effectorLinks;
|
|
|
|
// Token: 0x0400329C RID: 12956
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x400329C")]
|
|
private Vector3 additiveOffset;
|
|
|
|
// Token: 0x0400329D RID: 12957
|
|
[FieldOffset(Offset = "0x3C")]
|
|
[Token(Token = "0x400329D")]
|
|
private Vector3 lastOffset;
|
|
|
|
// Token: 0x0200048E RID: 1166
|
|
[Token(Token = "0x200048E")]
|
|
[Serializable]
|
|
public class EffectorLink
|
|
{
|
|
// Token: 0x06002943 RID: 10563 RVA: 0x00038FC3 File Offset: 0x000371C3
|
|
[Token(Token = "0x6002943")]
|
|
[Address(RVA = "0x43A830", Offset = "0x439030", VA = "0x18043A830")]
|
|
public EffectorLink()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0400329E RID: 12958
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x400329E")]
|
|
[Tooltip("Type of the FBBIK effector to use")]
|
|
public FullBodyBipedEffector effector;
|
|
|
|
// Token: 0x0400329F RID: 12959
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x400329F")]
|
|
[Tooltip("Weight of using this effector")]
|
|
public float weight;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0200048F RID: 1167
|
|
[Token(Token = "0x200048F")]
|
|
[Serializable]
|
|
public enum Handedness
|
|
{
|
|
// Token: 0x040032A1 RID: 12961
|
|
[Token(Token = "0x40032A1")]
|
|
Right,
|
|
// Token: 0x040032A2 RID: 12962
|
|
[Token(Token = "0x40032A2")]
|
|
Left
|
|
}
|
|
}
|
|
}
|