398 lines
13 KiB
C#
398 lines
13 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x02000458 RID: 1112
|
|
[Token(Token = "0x2000458")]
|
|
[HelpURL("http://www.root-motion.com/finalikdox/html/page11.html")]
|
|
[AddComponentMenu("Scripts/RootMotion.FinalIK/Grounder/Grounder Quadruped")]
|
|
public class GrounderQuadruped : Grounder
|
|
{
|
|
// Token: 0x06002765 RID: 10085 RVA: 0x0005A8D4 File Offset: 0x00058AD4
|
|
[Token(Token = "0x6002765")]
|
|
[Address(RVA = "0x16FFA80", Offset = "0x16FEA80", VA = "0x1816FFA80", Slot = "5")]
|
|
[ContextMenu("User Manual")]
|
|
protected override void OpenUserManual()
|
|
{
|
|
Application.OpenURL("http://www.root-motion.com/finalikdox/html/page11.html");
|
|
}
|
|
|
|
// Token: 0x06002766 RID: 10086 RVA: 0x0005A8EC File Offset: 0x00058AEC
|
|
[Token(Token = "0x6002766")]
|
|
[Address(RVA = "0x16FFA40", Offset = "0x16FEA40", VA = "0x1816FFA40", Slot = "6")]
|
|
[ContextMenu("Scrpt Reference")]
|
|
protected override void OpenScriptReference()
|
|
{
|
|
Application.OpenURL("http://www.root-motion.com/finalikdox/html/class_root_motion_1_1_final_i_k_1_1_grounder_quadruped.html");
|
|
}
|
|
|
|
// Token: 0x06002767 RID: 10087 RVA: 0x0005A904 File Offset: 0x00058B04
|
|
[Token(Token = "0x6002767")]
|
|
[Address(RVA = "0x16FFAC0", Offset = "0x16FEAC0", VA = "0x1816FFAC0", Slot = "4")]
|
|
public override void ResetPosition()
|
|
{
|
|
this.solver.Reset();
|
|
this.forelegSolver.Reset();
|
|
}
|
|
|
|
// Token: 0x06002768 RID: 10088 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002768")]
|
|
[Address(RVA = "0x16FEAA0", Offset = "0x16FDAA0", VA = "0x1816FEAA0")]
|
|
private bool IsReadyToInitiate()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002769 RID: 10089 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002769")]
|
|
[Address(RVA = "0x16FE8D0", Offset = "0x16FD8D0", VA = "0x1816FE8D0")]
|
|
private bool IsReadyToInitiateLegs(IK[] ikComponents)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276A RID: 10090 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276A")]
|
|
[Address(RVA = "0x16FED20", Offset = "0x16FDD20", VA = "0x1816FED20")]
|
|
private void OnDisable()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276B RID: 10091 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276B")]
|
|
[Address(RVA = "0x1700400", Offset = "0x16FF400", VA = "0x181700400")]
|
|
private void Update()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276C RID: 10092 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276C")]
|
|
[Address(RVA = "0x16FE500", Offset = "0x16FD500", VA = "0x1816FE500")]
|
|
private void Initiate()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276D RID: 10093 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276D")]
|
|
[Address(RVA = "0x16FE0C0", Offset = "0x16FD0C0", VA = "0x1816FE0C0")]
|
|
private Transform[] InitiateFeet(IK[] ikComponents, ref GrounderQuadruped.Foot[] f, int indexOffset)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276E RID: 10094 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276E")]
|
|
[Address(RVA = "0x16FEBF0", Offset = "0x16FDBF0", VA = "0x1816FEBF0")]
|
|
private void LateUpdate()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600276F RID: 10095 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600276F")]
|
|
[Address(RVA = "0x16FFB00", Offset = "0x16FEB00", VA = "0x1816FFB00")]
|
|
private void RootRotation()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002770 RID: 10096 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002770")]
|
|
[Address(RVA = "0x16FF110", Offset = "0x16FE110", VA = "0x1816FF110")]
|
|
private void OnSolverUpdate()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002771 RID: 10097 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002771")]
|
|
[Address(RVA = "0x17000E0", Offset = "0x16FF0E0", VA = "0x1817000E0")]
|
|
private void UpdateForefeetRoot()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002772 RID: 10098 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002772")]
|
|
[Address(RVA = "0x16FFF30", Offset = "0x16FEF30", VA = "0x1816FFF30")]
|
|
private void SetFootIK(GrounderQuadruped.Foot foot, float maxOffset)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002773 RID: 10099 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002773")]
|
|
[Address(RVA = "0x16FEDA0", Offset = "0x16FDDA0", VA = "0x1816FEDA0")]
|
|
private void OnPostSolverUpdate()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002774 RID: 10100 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002774")]
|
|
[Address(RVA = "0x16FECE0", Offset = "0x16FDCE0", VA = "0x1816FECE0")]
|
|
private void OnDestroy()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002775 RID: 10101 RVA: 0x0005A930 File Offset: 0x00058B30
|
|
[Token(Token = "0x6002775")]
|
|
[Address(RVA = "0x16FDEA0", Offset = "0x16FCEA0", VA = "0x1816FDEA0")]
|
|
private void DestroyLegs(IK[] ikComponents)
|
|
{
|
|
int num = 0;
|
|
int num2 = 0;
|
|
int length = ikComponents.Length;
|
|
if (num2 < length)
|
|
{
|
|
IK ik = ikComponents[num];
|
|
int num3 = 0;
|
|
if (ik != num3)
|
|
{
|
|
IKSolver iksolver = ik.GetIKSolver();
|
|
IKSolver.UpdateDelegate updateDelegate = new IKSolver.UpdateDelegate(this.OnSolverUpdate);
|
|
Delegate @delegate = Delegate.Remove(updateDelegate, updateDelegate);
|
|
int num4 = 0;
|
|
if (@delegate != 0 && @delegate == 0)
|
|
{
|
|
throw new InvalidCastException();
|
|
}
|
|
iksolver.OnPreUpdate = num4;
|
|
IKSolver iksolver2 = ik.GetIKSolver();
|
|
IKSolver.UpdateDelegate updateDelegate2 = new IKSolver.UpdateDelegate(this.OnPostSolverUpdate);
|
|
Delegate delegate2 = Delegate.Remove(updateDelegate2, updateDelegate2);
|
|
if (delegate2 != 0 && delegate2 == 0)
|
|
{
|
|
throw new InvalidCastException();
|
|
}
|
|
iksolver2.OnPostUpdate = delegate2;
|
|
}
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002776 RID: 10102 RVA: 0x0005A9E0 File Offset: 0x00058BE0
|
|
[Token(Token = "0x6002776")]
|
|
[Address(RVA = "0x1700580", Offset = "0x16FF580", VA = "0x181700580")]
|
|
public GrounderQuadruped()
|
|
{
|
|
Vector3 down = Vector3.down;
|
|
int num = 0;
|
|
float z = down.z;
|
|
this.gravity.z = z;
|
|
GrounderQuadruped.Foot[] array = new GrounderQuadruped.Foot[num];
|
|
this.feet = array;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x04003130 RID: 12592
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4003130")]
|
|
[Tooltip("The Grounding solver for the forelegs.")]
|
|
public Grounding forelegSolver = new Grounding
|
|
{
|
|
maxStep = 0.5f,
|
|
footSpeed = 2.5f,
|
|
footRadius = 0.15f,
|
|
prediction = 0.05f,
|
|
footRotationWeight = 1f,
|
|
footRotationSpeed = 7f,
|
|
maxFootRotationAngle = 45f,
|
|
pelvisSpeed = 5f,
|
|
lowerPelvisWeight = 1f,
|
|
rootSphereCastRadius = 0.1f,
|
|
quality = (Grounding.Quality)((ulong)2L)
|
|
};
|
|
|
|
// Token: 0x04003131 RID: 12593
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4003131")]
|
|
[Range(0f, 1f)]
|
|
[Tooltip("The weight of rotating the character root to the ground angle (range: 0 - 1).")]
|
|
public float rootRotationWeight = 0.5f;
|
|
|
|
// Token: 0x04003132 RID: 12594
|
|
[FieldOffset(Offset = "0x4C")]
|
|
[Token(Token = "0x4003132")]
|
|
[Tooltip("The maximum angle of rotating the quadruped downwards (going downhill, range: -90 - 0).")]
|
|
[Range(-90f, 0f)]
|
|
public float minRootRotation = -25f;
|
|
|
|
// Token: 0x04003133 RID: 12595
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4003133")]
|
|
[Tooltip("The maximum angle of rotating the quadruped upwards (going uphill, range: 0 - 90).")]
|
|
[Range(0f, 90f)]
|
|
public float maxRootRotation = 45f;
|
|
|
|
// Token: 0x04003134 RID: 12596
|
|
[FieldOffset(Offset = "0x54")]
|
|
[Token(Token = "0x4003134")]
|
|
[Tooltip("The speed of interpolating the character root rotation (range: 0 - inf).")]
|
|
public float rootRotationSpeed = 5f;
|
|
|
|
// Token: 0x04003135 RID: 12597
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x4003135")]
|
|
[Tooltip("The maximum IK offset for the legs (range: 0 - inf).")]
|
|
public float maxLegOffset = 0.5f;
|
|
|
|
// Token: 0x04003136 RID: 12598
|
|
[FieldOffset(Offset = "0x5C")]
|
|
[Token(Token = "0x4003136")]
|
|
[Tooltip("The maximum IK offset for the forelegs (range: 0 - inf).")]
|
|
public float maxForeLegOffset = 0.5f;
|
|
|
|
// Token: 0x04003137 RID: 12599
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4003137")]
|
|
[Tooltip("The weight of maintaining the head's rotation as it was before solving the Grounding (range: 0 - 1).")]
|
|
[Range(0f, 1f)]
|
|
public float maintainHeadRotationWeight = 0.5f;
|
|
|
|
// Token: 0x04003138 RID: 12600
|
|
[FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x4003138")]
|
|
[Tooltip("The root Transform of the character, with the rigidbody and the collider.")]
|
|
public Transform characterRoot;
|
|
|
|
// Token: 0x04003139 RID: 12601
|
|
[FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x4003139")]
|
|
[Tooltip("The pelvis transform. Common ancestor of both legs and the spine.")]
|
|
public Transform pelvis;
|
|
|
|
// Token: 0x0400313A RID: 12602
|
|
[FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x400313A")]
|
|
[Tooltip("The last bone in the spine that is the common parent for both forelegs.")]
|
|
public Transform lastSpineBone;
|
|
|
|
// Token: 0x0400313B RID: 12603
|
|
[FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x400313B")]
|
|
[Tooltip("The head (optional, if you intend to maintain it's rotation).")]
|
|
public Transform head;
|
|
|
|
// Token: 0x0400313C RID: 12604
|
|
[FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x400313C")]
|
|
public IK[] legs;
|
|
|
|
// Token: 0x0400313D RID: 12605
|
|
[FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x400313D")]
|
|
public IK[] forelegs;
|
|
|
|
// Token: 0x0400313E RID: 12606
|
|
[FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x400313E")]
|
|
[HideInInspector]
|
|
public Vector3 gravity;
|
|
|
|
// Token: 0x0400313F RID: 12607
|
|
[FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x400313F")]
|
|
private GrounderQuadruped.Foot[] feet;
|
|
|
|
// Token: 0x04003140 RID: 12608
|
|
[FieldOffset(Offset = "0xB0")]
|
|
[Token(Token = "0x4003140")]
|
|
private Vector3 animatedPelvisLocalPosition;
|
|
|
|
// Token: 0x04003141 RID: 12609
|
|
[FieldOffset(Offset = "0xBC")]
|
|
[Token(Token = "0x4003141")]
|
|
private Quaternion animatedPelvisLocalRotation;
|
|
|
|
// Token: 0x04003142 RID: 12610
|
|
[FieldOffset(Offset = "0xCC")]
|
|
[Token(Token = "0x4003142")]
|
|
private Quaternion animatedHeadLocalRotation;
|
|
|
|
// Token: 0x04003143 RID: 12611
|
|
[FieldOffset(Offset = "0xDC")]
|
|
[Token(Token = "0x4003143")]
|
|
private Vector3 solvedPelvisLocalPosition;
|
|
|
|
// Token: 0x04003144 RID: 12612
|
|
[FieldOffset(Offset = "0xE8")]
|
|
[Token(Token = "0x4003144")]
|
|
private Quaternion solvedPelvisLocalRotation;
|
|
|
|
// Token: 0x04003145 RID: 12613
|
|
[FieldOffset(Offset = "0xF8")]
|
|
[Token(Token = "0x4003145")]
|
|
private Quaternion solvedHeadLocalRotation;
|
|
|
|
// Token: 0x04003146 RID: 12614
|
|
[FieldOffset(Offset = "0x108")]
|
|
[Token(Token = "0x4003146")]
|
|
private int solvedFeet;
|
|
|
|
// Token: 0x04003147 RID: 12615
|
|
[FieldOffset(Offset = "0x10C")]
|
|
[Token(Token = "0x4003147")]
|
|
private bool solved;
|
|
|
|
// Token: 0x04003148 RID: 12616
|
|
[FieldOffset(Offset = "0x110")]
|
|
[Token(Token = "0x4003148")]
|
|
private float angle;
|
|
|
|
// Token: 0x04003149 RID: 12617
|
|
[FieldOffset(Offset = "0x118")]
|
|
[Token(Token = "0x4003149")]
|
|
private Transform forefeetRoot;
|
|
|
|
// Token: 0x0400314A RID: 12618
|
|
[FieldOffset(Offset = "0x120")]
|
|
[Token(Token = "0x400314A")]
|
|
private Quaternion headRotation;
|
|
|
|
// Token: 0x0400314B RID: 12619
|
|
[FieldOffset(Offset = "0x130")]
|
|
[Token(Token = "0x400314B")]
|
|
private float lastWeight;
|
|
|
|
// Token: 0x02000459 RID: 1113
|
|
[Token(Token = "0x2000459")]
|
|
public struct Foot
|
|
{
|
|
// Token: 0x06002777 RID: 10103 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002777")]
|
|
[Address(RVA = "0x16A2BF0", Offset = "0x16A1BF0", VA = "0x1816A2BF0")]
|
|
public Foot(IKSolver solver, Transform transform)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0400314C RID: 12620
|
|
[FieldOffset(Offset = "0x0")]
|
|
[Token(Token = "0x400314C")]
|
|
public IKSolver solver;
|
|
|
|
// Token: 0x0400314D RID: 12621
|
|
[FieldOffset(Offset = "0x8")]
|
|
[Token(Token = "0x400314D")]
|
|
public Transform transform;
|
|
|
|
// Token: 0x0400314E RID: 12622
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x400314E")]
|
|
public Quaternion rotation;
|
|
|
|
// Token: 0x0400314F RID: 12623
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x400314F")]
|
|
public Grounding.Leg leg;
|
|
}
|
|
}
|
|
}
|