421 lines
14 KiB
C#
421 lines
14 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x020003F9 RID: 1017
|
|
[Token(Token = "0x20003F9")]
|
|
[HelpURL("http://www.root-motion.com/finalikdox/html/page2.html")]
|
|
[AddComponentMenu("Scripts/RootMotion.FinalIK/IK/Biped IK")]
|
|
public class BipedIK : SolverManager
|
|
{
|
|
// Token: 0x06002451 RID: 9297 RVA: 0x00052968 File Offset: 0x00050B68
|
|
[Token(Token = "0x6002451")]
|
|
[Address(RVA = "0xE3DE10", Offset = "0xE3C610", VA = "0x180E3DE10")]
|
|
[ContextMenu("User Manual")]
|
|
private void OpenUserManual()
|
|
{
|
|
Application.OpenURL("http://www.root-motion.com/finalikdox/html/page2.html");
|
|
}
|
|
|
|
// Token: 0x06002452 RID: 9298 RVA: 0x00052980 File Offset: 0x00050B80
|
|
[Token(Token = "0x6002452")]
|
|
[Address(RVA = "0xE3DDD0", Offset = "0xE3C5D0", VA = "0x180E3DDD0")]
|
|
[ContextMenu("Scrpt Reference")]
|
|
private void OpenScriptReference()
|
|
{
|
|
Application.OpenURL("http://www.root-motion.com/finalikdox/html/class_root_motion_1_1_final_i_k_1_1_biped_i_k.html");
|
|
}
|
|
|
|
// Token: 0x06002453 RID: 9299 RVA: 0x00052998 File Offset: 0x00050B98
|
|
[Token(Token = "0x6002453")]
|
|
[Address(RVA = "0xE3E330", Offset = "0xE3CB30", VA = "0x180E3E330")]
|
|
[ContextMenu("Support Group")]
|
|
private void SupportGroup()
|
|
{
|
|
Application.OpenURL("https://groups.google.com/forum/#!forum/final-ik");
|
|
}
|
|
|
|
// Token: 0x06002454 RID: 9300 RVA: 0x000529B0 File Offset: 0x00050BB0
|
|
[Token(Token = "0x6002454")]
|
|
[Address(RVA = "0xE3D6F0", Offset = "0xE3BEF0", VA = "0x180E3D6F0")]
|
|
[ContextMenu("Asset Store Thread")]
|
|
private void ASThread()
|
|
{
|
|
Application.OpenURL("http://forum.unity3d.com/threads/final-ik-full-body-ik-aim-look-at-fabrik-ccd-ik-1-0-released.222685/");
|
|
}
|
|
|
|
// Token: 0x06002455 RID: 9301 RVA: 0x000529C8 File Offset: 0x00050BC8
|
|
[Token(Token = "0x6002455")]
|
|
[Address(RVA = "0xE3D870", Offset = "0xE3C070", VA = "0x180E3D870")]
|
|
public float GetIKPositionWeight(AvatarIKGoal goal)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
return this.solvers.leftFoot.IKPositionWeight;
|
|
}
|
|
|
|
// Token: 0x06002456 RID: 9302 RVA: 0x00052A0C File Offset: 0x00050C0C
|
|
[Token(Token = "0x6002456")]
|
|
[Address(RVA = "0xE3D980", Offset = "0xE3C180", VA = "0x180E3D980")]
|
|
public float GetIKRotationWeight(AvatarIKGoal goal)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
return this.solvers.leftFoot.IKRotationWeight;
|
|
}
|
|
|
|
// Token: 0x06002457 RID: 9303 RVA: 0x00052A50 File Offset: 0x00050C50
|
|
[Token(Token = "0x6002457")]
|
|
[Address(RVA = "0xE3DE50", Offset = "0xE3C650", VA = "0x180E3DE50")]
|
|
public void SetIKPositionWeight(AvatarIKGoal goal, float weight)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
this.solvers.leftFoot.SetIKPositionWeight(weight);
|
|
}
|
|
|
|
// Token: 0x06002458 RID: 9304 RVA: 0x00052A98 File Offset: 0x00050C98
|
|
[Token(Token = "0x6002458")]
|
|
[Address(RVA = "0xE3DF40", Offset = "0xE3C740", VA = "0x180E3DF40")]
|
|
public void SetIKRotationWeight(AvatarIKGoal goal, float weight)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
this.solvers.leftFoot.SetIKRotationWeight(weight);
|
|
}
|
|
|
|
// Token: 0x06002459 RID: 9305 RVA: 0x00052AE0 File Offset: 0x00050CE0
|
|
[Token(Token = "0x6002459")]
|
|
[Address(RVA = "0xE3DEC0", Offset = "0xE3C6C0", VA = "0x180E3DEC0")]
|
|
public void SetIKPosition(AvatarIKGoal goal, Vector3 IKPosition)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
if (goal != AvatarIKGoal.LeftFoot)
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
IKSolverLimb leftFoot = this.solvers.leftFoot;
|
|
float z = IKPosition.z;
|
|
leftFoot.IKPosition.z = z;
|
|
}
|
|
|
|
// Token: 0x0600245A RID: 9306 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600245A")]
|
|
[Address(RVA = "0xE3DFB0", Offset = "0xE3C7B0", VA = "0x180E3DFB0")]
|
|
public void SetIKRotation(AvatarIKGoal goal, Quaternion IKRotation)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600245B RID: 9307 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600245B")]
|
|
[Address(RVA = "0xE3D8E0", Offset = "0xE3C0E0", VA = "0x180E3D8E0")]
|
|
public Vector3 GetIKPosition(AvatarIKGoal goal)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600245C RID: 9308 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600245C")]
|
|
[Address(RVA = "0xE3D9F0", Offset = "0xE3C1F0", VA = "0x180E3D9F0")]
|
|
public Quaternion GetIKRotation(AvatarIKGoal goal)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600245D RID: 9309 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x600245D")]
|
|
[Address(RVA = "0xE3E050", Offset = "0xE3C850", VA = "0x180E3E050")]
|
|
public void SetLookAtWeight(float weight, float bodyWeight, float headWeight, float eyesWeight, float clampWeight, float clampWeightHead, float clampWeightEyes)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600245E RID: 9310 RVA: 0x00052B38 File Offset: 0x00050D38
|
|
[Token(Token = "0x600245E")]
|
|
[Address(RVA = "0xE3E020", Offset = "0xE3C820", VA = "0x180E3E020")]
|
|
public void SetLookAtPosition(Vector3 lookAtPosition)
|
|
{
|
|
IKSolverLookAt lookAt = this.solvers.lookAt;
|
|
float z = lookAtPosition.z;
|
|
lookAt.IKPosition.z = z;
|
|
}
|
|
|
|
// Token: 0x0600245F RID: 9311 RVA: 0x00052B6C File Offset: 0x00050D6C
|
|
[Token(Token = "0x600245F")]
|
|
[Address(RVA = "0xE3E090", Offset = "0xE3C890", VA = "0x180E3E090")]
|
|
public void SetSpinePosition(Vector3 spinePosition)
|
|
{
|
|
IKSolverFABRIK spine = this.solvers.spine;
|
|
float z = spinePosition.z;
|
|
spine.IKPosition.z = z;
|
|
}
|
|
|
|
// Token: 0x06002460 RID: 9312 RVA: 0x00052BA0 File Offset: 0x00050DA0
|
|
[Token(Token = "0x6002460")]
|
|
[Address(RVA = "0xE3E0C0", Offset = "0xE3C8C0", VA = "0x180E3E0C0")]
|
|
public void SetSpineWeight(float weight)
|
|
{
|
|
this.solvers.spine.SetIKPositionWeight(weight);
|
|
}
|
|
|
|
// Token: 0x06002461 RID: 9313 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002461")]
|
|
[Address(RVA = "0xE3D800", Offset = "0xE3C000", VA = "0x180E3D800")]
|
|
public IKSolverLimb GetGoalIK(AvatarIKGoal goal)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002462 RID: 9314 RVA: 0x00052BC4 File Offset: 0x00050DC4
|
|
[Token(Token = "0x6002462")]
|
|
[Address(RVA = "0x61E400", Offset = "0x61CC00", VA = "0x18061E400")]
|
|
public void InitiateBipedIK()
|
|
{
|
|
int valueAsInt = base.ValueAsInt;
|
|
}
|
|
|
|
// Token: 0x06002463 RID: 9315 RVA: 0x00052BD8 File Offset: 0x00050DD8
|
|
[Token(Token = "0x6002463")]
|
|
[Address(RVA = "0x343E40", Offset = "0x342640", VA = "0x180343E40")]
|
|
public void UpdateBipedIK()
|
|
{
|
|
int valueAsInt = base.ValueAsInt;
|
|
}
|
|
|
|
// Token: 0x06002464 RID: 9316 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x6002464")]
|
|
[Address(RVA = "0xE3E0F0", Offset = "0xE3C8F0", VA = "0x180E3E0F0")]
|
|
public void SetToDefaults()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06002465 RID: 9317 RVA: 0x00052BEC File Offset: 0x00050DEC
|
|
[Token(Token = "0x6002465")]
|
|
[Address(RVA = "0xE3D730", Offset = "0xE3BF30", VA = "0x180E3D730", Slot = "6")]
|
|
protected override void FixTransforms()
|
|
{
|
|
this.solvers.lookAt.FixTransforms();
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
int num = 0;
|
|
IKSolverLimb[] limbs = bipedIKSolvers.limbs;
|
|
if (num < limbs.Length)
|
|
{
|
|
this.solvers.limbs[num].FixTransforms();
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002466 RID: 9318 RVA: 0x00052C4C File Offset: 0x00050E4C
|
|
[Token(Token = "0x6002466")]
|
|
[Address(RVA = "0xE3DA60", Offset = "0xE3C260", VA = "0x180E3DA60", Slot = "4")]
|
|
protected override void InitiateSolver()
|
|
{
|
|
string text;
|
|
if (!BipedReferences.SetupError(this.references, text))
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
BipedReferences bipedReferences = this.references;
|
|
IKSolverLimb leftHand = bipedIKSolvers.leftHand;
|
|
Transform root = bipedReferences.root;
|
|
int num = 0;
|
|
Transform leftHand2 = bipedReferences.leftHand;
|
|
Transform leftForearm = bipedReferences.leftForearm;
|
|
Transform leftUpperArm = bipedReferences.leftUpperArm;
|
|
bool flag = leftHand.SetChain(leftUpperArm, leftForearm, leftHand2, root);
|
|
IKSolverLimb rightHand = bipedIKSolvers.rightHand;
|
|
Transform root2 = bipedReferences.root;
|
|
Transform rightHand2 = bipedReferences.rightHand;
|
|
Transform rightForearm = bipedReferences.rightForearm;
|
|
Transform rightUpperArm = bipedReferences.rightUpperArm;
|
|
bool flag2 = rightHand.SetChain(rightUpperArm, rightForearm, rightHand2, root2);
|
|
IKSolverLimb leftFoot = bipedIKSolvers.leftFoot;
|
|
Transform root3 = bipedReferences.root;
|
|
Transform leftFoot2 = bipedReferences.leftFoot;
|
|
Transform leftCalf = bipedReferences.leftCalf;
|
|
Transform leftThigh = bipedReferences.leftThigh;
|
|
bool flag3 = leftFoot.SetChain(leftThigh, leftCalf, leftFoot2, root3);
|
|
IKSolverLimb rightFoot = bipedIKSolvers.rightFoot;
|
|
Transform root4 = bipedReferences.root;
|
|
Transform rightFoot2 = bipedReferences.rightFoot;
|
|
Transform rightCalf = bipedReferences.rightCalf;
|
|
Transform rightThigh = bipedReferences.rightThigh;
|
|
bool flag4 = rightFoot.SetChain(rightThigh, rightCalf, rightFoot2, root4);
|
|
IKSolverFABRIK spine = bipedIKSolvers.spine;
|
|
Transform root5 = bipedReferences.root;
|
|
Transform[] spine2 = bipedReferences.spine;
|
|
bool flag5 = spine.SetChain(spine2, root5);
|
|
IKSolverLookAt lookAt = bipedIKSolvers.lookAt;
|
|
Transform root6 = bipedReferences.root;
|
|
Transform[] eyes = bipedReferences.eyes;
|
|
Transform head = bipedReferences.head;
|
|
Transform[] spine3 = bipedReferences.spine;
|
|
bool flag6 = lookAt.SetChain(spine3, head, eyes, root6);
|
|
IKSolverAim aim = bipedIKSolvers.aim;
|
|
Transform root7 = bipedReferences.root;
|
|
Transform[] spine4 = bipedReferences.spine;
|
|
bool flag7 = aim.SetChain(spine4, root7);
|
|
bipedIKSolvers.leftFoot.goal = (AvatarIKGoal)num;
|
|
bipedIKSolvers.rightFoot.goal = (AvatarIKGoal)((ulong)1L);
|
|
bipedIKSolvers.leftHand.goal = (AvatarIKGoal)((ulong)2L);
|
|
bipedIKSolvers.rightHand.goal = (AvatarIKGoal)((ulong)3L);
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
IKSolverFABRIK spine5 = bipedIKSolvers2.spine;
|
|
if (spine5.bones.Length > 1)
|
|
{
|
|
Transform transform = base.transform;
|
|
spine5.Initiate(transform);
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
}
|
|
IKSolverLookAt lookAt2 = bipedIKSolvers2.lookAt;
|
|
Transform transform2 = base.transform;
|
|
lookAt2.Initiate(transform2);
|
|
IKSolverAim aim2 = this.solvers.aim;
|
|
Transform transform3 = base.transform;
|
|
aim2.Initiate(transform3);
|
|
IKSolverLimb[] limbs = this.solvers.limbs;
|
|
int length = limbs.Length;
|
|
if (num < length)
|
|
{
|
|
IKSolverLimb iksolverLimb = limbs[num];
|
|
Transform transform4 = base.transform;
|
|
iksolverLimb.Initiate(transform4);
|
|
num++;
|
|
}
|
|
BipedIKSolvers bipedIKSolvers4 = this.solvers;
|
|
BipedReferences bipedReferences2 = this.references;
|
|
Constraints pelvis = bipedIKSolvers4.pelvis;
|
|
Transform pelvis2 = bipedReferences2.pelvis;
|
|
pelvis.Initiate(pelvis2);
|
|
return;
|
|
}
|
|
Transform root8 = this.references.root;
|
|
int num2 = 0;
|
|
Warning.Log(text, root8, num2 != 0);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x06002467 RID: 9319 RVA: 0x00052F14 File Offset: 0x00051114
|
|
[Token(Token = "0x6002467")]
|
|
[Address(RVA = "0xE3E370", Offset = "0xE3CB70", VA = "0x180E3E370", Slot = "5")]
|
|
protected override void UpdateSolver()
|
|
{
|
|
int num;
|
|
IKSolverFABRIK spine;
|
|
do
|
|
{
|
|
BipedIKSolvers bipedIKSolvers = this.solvers;
|
|
num = 0;
|
|
IKSolverLimb[] limbs = bipedIKSolvers.limbs;
|
|
BipedIKSolvers bipedIKSolvers2 = this.solvers;
|
|
if (num < limbs.Length)
|
|
{
|
|
bipedIKSolvers2.limbs[num].MaintainBend();
|
|
this.solvers.limbs[num].MaintainRotation();
|
|
BipedIKSolvers bipedIKSolvers3 = this.solvers;
|
|
num++;
|
|
}
|
|
bipedIKSolvers2.pelvis.Update();
|
|
spine = this.solvers.spine;
|
|
}
|
|
while (spine.bones.Length <= 1);
|
|
spine.Update();
|
|
this.solvers.aim.Update();
|
|
this.solvers.lookAt.Update();
|
|
IKSolverLimb[] limbs2 = this.solvers.limbs;
|
|
if (num < limbs2.Length)
|
|
{
|
|
this.solvers.limbs[num].Update();
|
|
BipedIKSolvers bipedIKSolvers4 = this.solvers;
|
|
num++;
|
|
while (bipedIKSolvers4 != 0)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002468 RID: 9320 RVA: 0x00053008 File Offset: 0x00051208
|
|
[Token(Token = "0x6002468")]
|
|
[Address(RVA = "0xCBAFE0", Offset = "0xCB97E0", VA = "0x180CBAFE0")]
|
|
public void LogWarning(string message)
|
|
{
|
|
Transform transform = base.transform;
|
|
int num = 0;
|
|
Warning.Log(message, transform, num != 0);
|
|
}
|
|
|
|
// Token: 0x06002469 RID: 9321 RVA: 0x00053028 File Offset: 0x00051228
|
|
[Token(Token = "0x6002469")]
|
|
[Address(RVA = "0xE3E590", Offset = "0xE3CD90", VA = "0x180E3E590")]
|
|
public BipedIK()
|
|
{
|
|
BipedReferences bipedReferences = new BipedReferences();
|
|
this.references = bipedReferences;
|
|
BipedIKSolvers bipedIKSolvers = new BipedIKSolvers();
|
|
this.solvers = bipedIKSolvers;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x04002E33 RID: 11827
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4002E33")]
|
|
public BipedReferences references;
|
|
|
|
// Token: 0x04002E34 RID: 11828
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4002E34")]
|
|
public BipedIKSolvers solvers;
|
|
}
|
|
}
|