Files
NobetaSource/Cpp2IL/Assembly-CSharp/RootMotion/FinalIK/IKSolverFullBody.cs
2023-09-06 22:19:13 +02:00

479 lines
13 KiB
C#

using System;
using Cpp2IlInjected;
using UnityEngine;
namespace RootMotion.FinalIK
{
// Token: 0x02000484 RID: 1156
[Token(Token = "0x2000484")]
[Serializable]
public class IKSolverFullBody : IKSolver
{
// Token: 0x06002906 RID: 10502 RVA: 0x0005CAAC File Offset: 0x0005ACAC
[Token(Token = "0x6002906")]
[Address(RVA = "0x1518E90", Offset = "0x1517E90", VA = "0x181518E90")]
public IKEffector GetEffector(Transform t)
{
IKEffector[] array = this.effectors;
int num = 0;
if (num < array.Length)
{
bool flag = array[num].bone == t;
IKEffector[] array2 = this.effectors;
if (!flag)
{
num++;
}
return array2[num];
}
throw new NullReferenceException();
}
// Token: 0x06002907 RID: 10503 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x6002907")]
[Address(RVA = "0x1518E40", Offset = "0x1517E40", VA = "0x181518E40")]
public FBIKChain GetChain(Transform transform)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06002908 RID: 10504 RVA: 0x0005CAFC File Offset: 0x0005ACFC
[Token(Token = "0x6002908")]
[Address(RVA = "0x1518D10", Offset = "0x1517D10", VA = "0x181518D10")]
public int GetChainIndex(Transform transform)
{
FBIKChain[] array = this.chain;
int num = 0;
int num2 = 0;
if (num2 < array.Length)
{
int num3 = 0;
IKSolver.Node[] nodes = this.chain[num].nodes;
if (num3 < nodes.Length)
{
if (nodes[num3].transform == transform)
{
return num;
}
num3++;
}
num++;
return num;
}
throw new NullReferenceException();
}
// Token: 0x06002909 RID: 10505 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x6002909")]
[Address(RVA = "0x1518FB0", Offset = "0x1517FB0", VA = "0x181518FB0")]
public IKSolver.Node GetNode(int chainIndex, int nodeIndex)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600290A RID: 10506 RVA: 0x0005CB64 File Offset: 0x0005AD64
[Token(Token = "0x600290A")]
[Address(RVA = "0x1518C80", Offset = "0x1517C80", VA = "0x181518C80")]
public void GetChainAndNodeIndexes(Transform transform, out int chainIndex, out int nodeIndex)
{
int chainIndex2 = this.GetChainIndex(transform);
chainIndex.m_value = chainIndex2;
if (chainIndex2 != -1)
{
int nodeIndex2 = this.chain[chainIndex2].GetNodeIndex(transform);
nodeIndex.m_value = nodeIndex2;
}
}
// Token: 0x0600290B RID: 10507 RVA: 0x0005CBA4 File Offset: 0x0005ADA4
[Token(Token = "0x600290B")]
[Address(RVA = "0x15191B0", Offset = "0x15181B0", VA = "0x1815191B0", Slot = "6")]
public override IKSolver.Point[] GetPoints()
{
IKSolver.Point[] array2;
int num5;
int num6;
IKSolver.Node[] nodes2;
do
{
FBIKChain[] array = this.chain;
int num = 0;
int num2 = 0;
int num3 = 0;
int length = array.Length;
if (num3 < length)
{
IKSolver.Node[] nodes = array[num2].nodes;
num2++;
}
array2 = new IKSolver.Point[num];
FBIKChain[] array3 = this.chain;
int num4 = 0;
num5 = 0;
if (num4 >= array3.Length)
{
return array2;
}
num6 = 0;
nodes2 = this.chain[num5].nodes;
if (num6 >= nodes2.Length)
{
goto IL_97;
}
}
while (nodes2[num6] != 0 && num6 == 0);
throw new IndexOutOfRangeException();
IL_97:
num5++;
return array2;
}
// Token: 0x0600290C RID: 10508 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x600290C")]
[Address(RVA = "0x1519020", Offset = "0x1518020", VA = "0x181519020", Slot = "7")]
public override IKSolver.Point GetPoint(Transform transform)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600290D RID: 10509 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x600290D")]
[Address(RVA = "0x1519340", Offset = "0x1518340", VA = "0x181519340", Slot = "4")]
public override bool IsValid(ref string message)
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x0600290E RID: 10510 RVA: 0x0005CC5C File Offset: 0x0005AE5C
[Token(Token = "0x600290E")]
[Address(RVA = "0x151A090", Offset = "0x1519090", VA = "0x18151A090", Slot = "9")]
public override void StoreDefaultLocalState()
{
this.spineMapping.StoreDefaultLocalState();
IKMappingLimb[] array = this.limbMappings;
int num = 0;
if (num < array.Length)
{
array[num].StoreDefaultLocalState();
IKMappingLimb[] array2 = this.limbMappings;
num++;
}
IKMappingBone[] array3 = this.boneMappings;
if (num < array3.Length)
{
array3[num].StoreDefaultLocalState();
IKMappingBone[] array4 = this.boneMappings;
num++;
while (array4 != 0)
{
}
}
IKSolver.UpdateDelegate onStoreDefaultLocalState = this.OnStoreDefaultLocalState;
if (onStoreDefaultLocalState != 0)
{
onStoreDefaultLocalState();
}
}
// Token: 0x0600290F RID: 10511 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x600290F")]
[Address(RVA = "0x1518B60", Offset = "0x1517B60", VA = "0x181518B60", Slot = "8")]
public override void FixTransforms()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06002910 RID: 10512 RVA: 0x0005CCE4 File Offset: 0x0005AEE4
[Token(Token = "0x6002910")]
[Address(RVA = "0x15195E0", Offset = "0x15185E0", VA = "0x1815195E0", Slot = "10")]
protected override void OnInitiate()
{
int num = 0;
FBIKChain[] array = this.chain;
if (num < array.Length)
{
array[num].Initiate(this);
FBIKChain[] array2 = this.chain;
num++;
}
IKEffector[] array3 = this.effectors;
int length = array3.Length;
if (num < length)
{
array3[num].Initiate(this);
num++;
}
this.spineMapping.Initiate(this);
IKMappingBone[] array4 = this.boneMappings;
int length2 = array4.Length;
if (num < length2)
{
array4[num].Initiate(this);
num++;
}
IKMappingLimb[] array5 = this.limbMappings;
int length3 = array5.Length;
if (num < length3)
{
array5[num].Initiate(this);
num++;
}
}
// Token: 0x06002911 RID: 10513 RVA: 0x0005CDA4 File Offset: 0x0005AFA4
[Token(Token = "0x6002911")]
[Address(RVA = "0x15197B0", Offset = "0x15187B0", VA = "0x1815197B0", Slot = "11")]
protected override void OnUpdate()
{
do
{
float ikpositionWeight = this.IKPositionWeight;
int num = 0;
IKEffector[] array2;
if (num < (int)ikpositionWeight)
{
if (this.chain.Length == 0)
{
break;
}
float num2 = Mathf.Clamp(ikpositionWeight, (float)num, 1f);
IKSolver.UpdateDelegate onPreRead = this.OnPreRead;
this.IKPositionWeight = num2;
if (onPreRead != 0)
{
onPreRead();
}
this.ReadPose();
IKSolver.UpdateDelegate onPreSolve = this.OnPreSolve;
if (onPreSolve != 0)
{
onPreSolve();
}
this.Solve();
IKSolver.UpdateDelegate onPostSolve = this.OnPostSolve;
if (onPostSolve != 0)
{
onPostSolve();
}
this.WritePose();
IKEffector[] array = this.effectors;
int num3 = 0;
if (num3 >= array.Length)
{
break;
}
array[num3].OnPostWrite();
array2 = this.effectors;
num3++;
}
IKEffector ikeffector = array2[9];
int num4 = 0;
if (num4 >= ikeffector.target)
{
break;
}
Vector3 zero = Vector3.zero;
num4++;
}
while (this.effectors != 0);
}
// Token: 0x06002912 RID: 10514 RVA: 0x0005CE9C File Offset: 0x0005B09C
[Token(Token = "0x6002912")]
[Address(RVA = "0x1519960", Offset = "0x1518960", VA = "0x181519960", Slot = "12")]
protected virtual void ReadPose()
{
FBIKChain[] array = this.chain;
int num = 0;
if (num < array.Length)
{
FBIKChain fbikchain = array[num];
IKConstraintBend bendConstraint = fbikchain.bendConstraint;
if ((bendConstraint.<initiated>k__BackingField ? 1 : 0) != num)
{
IKSolver.Node[] nodes = fbikchain.nodes;
float ikpositionWeight = this.IKPositionWeight;
Transform transform = nodes[2].transform;
float positionWeight = this.GetEffector(transform).positionWeight;
bendConstraint.LimitBend(ikpositionWeight, positionWeight);
}
num++;
}
IKEffector[] array2 = this.effectors;
if (num < array2.Length)
{
array2[num].ResetOffset(this);
IKEffector[] array3 = this.effectors;
num++;
while (array3 != 0)
{
}
}
if (num < array2.Length)
{
array2[num].OnPreSolve(this);
IKEffector[] array4 = this.effectors;
num++;
while (array4 != 0)
{
}
}
FBIKChain[] array5 = this.chain;
if (num < array5.Length)
{
FBIKChain fbikchain2 = array5[num];
bool flag = this.iterations > num;
fbikchain2.ReadPose(this, flag);
FBIKChain[] array6 = this.chain;
num++;
while (array6 != 0)
{
}
}
if (this.iterations > num)
{
this.spineMapping.ReadPose();
IKMappingBone[] array7 = this.boneMappings;
if (num < array7.Length)
{
array7[num].ReadPose();
IKMappingBone[] array8 = this.boneMappings;
num++;
while (array8 != 0)
{
}
}
}
IKMappingLimb[] array9 = this.limbMappings;
if (num < array9.Length)
{
array9[num].ReadPose();
IKMappingLimb[] array10 = this.limbMappings;
num++;
while (array10 != 0)
{
}
}
}
// Token: 0x06002913 RID: 10515 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x6002913")]
[Address(RVA = "0x1519CB0", Offset = "0x1518CB0", VA = "0x181519CB0", Slot = "13")]
protected virtual void Solve()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06002914 RID: 10516 RVA: 0x0005D028 File Offset: 0x0005B228
[Token(Token = "0x6002914")]
[Address(RVA = "0x1518B10", Offset = "0x1517B10", VA = "0x181518B10", Slot = "14")]
protected virtual void ApplyBendConstraints()
{
this.chain[0].SolveTrigonometric(this, true);
}
// Token: 0x06002915 RID: 10517 RVA: 0x000020D3 File Offset: 0x000002D3
[Token(Token = "0x6002915")]
[Address(RVA = "0x151A1A0", Offset = "0x15191A0", VA = "0x18151A1A0", Slot = "15")]
protected virtual void WritePose()
{
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
}
// Token: 0x06002916 RID: 10518 RVA: 0x0005D050 File Offset: 0x0005B250
[Token(Token = "0x6002916")]
[Address(RVA = "0x151A2D0", Offset = "0x15192D0", VA = "0x18151A2D0")]
public IKSolverFullBody()
{
FBIKChain[] array = new FBIKChain[0];
this.chain = array;
IKEffector[] array2 = new IKEffector[0];
this.effectors = array2;
IKMappingSpine ikmappingSpine = new IKMappingSpine();
this.spineMapping = ikmappingSpine;
IKMappingBone[] array3 = new IKMappingBone[0];
this.boneMappings = array3;
IKMappingLimb[] array4 = new IKMappingLimb[0];
this.limbMappings = array4;
this.FABRIKPass = true;
base..ctor();
}
// Token: 0x040032A0 RID: 12960
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x40032A0")]
[Range(0f, 10f)]
public int iterations = (int)((ulong)4L);
// Token: 0x040032A1 RID: 12961
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x40032A1")]
public FBIKChain[] chain;
// Token: 0x040032A2 RID: 12962
[FieldOffset(Offset = "0x68")]
[Token(Token = "0x40032A2")]
public IKEffector[] effectors;
// Token: 0x040032A3 RID: 12963
[FieldOffset(Offset = "0x70")]
[Token(Token = "0x40032A3")]
public IKMappingSpine spineMapping;
// Token: 0x040032A4 RID: 12964
[FieldOffset(Offset = "0x78")]
[Token(Token = "0x40032A4")]
public IKMappingBone[] boneMappings;
// Token: 0x040032A5 RID: 12965
[FieldOffset(Offset = "0x80")]
[Token(Token = "0x40032A5")]
public IKMappingLimb[] limbMappings;
// Token: 0x040032A6 RID: 12966
[FieldOffset(Offset = "0x88")]
[Token(Token = "0x40032A6")]
public bool FABRIKPass;
// Token: 0x040032A7 RID: 12967
[FieldOffset(Offset = "0x90")]
[Token(Token = "0x40032A7")]
public IKSolver.UpdateDelegate OnPreRead;
// Token: 0x040032A8 RID: 12968
[FieldOffset(Offset = "0x98")]
[Token(Token = "0x40032A8")]
public IKSolver.UpdateDelegate OnPreSolve;
// Token: 0x040032A9 RID: 12969
[FieldOffset(Offset = "0xA0")]
[Token(Token = "0x40032A9")]
public IKSolver.IterationDelegate OnPreIteration;
// Token: 0x040032AA RID: 12970
[FieldOffset(Offset = "0xA8")]
[Token(Token = "0x40032AA")]
public IKSolver.IterationDelegate OnPostIteration;
// Token: 0x040032AB RID: 12971
[FieldOffset(Offset = "0xB0")]
[Token(Token = "0x40032AB")]
public IKSolver.UpdateDelegate OnPreBend;
// Token: 0x040032AC RID: 12972
[FieldOffset(Offset = "0xB8")]
[Token(Token = "0x40032AC")]
public IKSolver.UpdateDelegate OnPostSolve;
// Token: 0x040032AD RID: 12973
[FieldOffset(Offset = "0xC0")]
[Token(Token = "0x40032AD")]
public IKSolver.UpdateDelegate OnStoreDefaultLocalState;
// Token: 0x040032AE RID: 12974
[FieldOffset(Offset = "0xC8")]
[Token(Token = "0x40032AE")]
public IKSolver.UpdateDelegate OnFixTransforms;
}
}