317 lines
15 KiB
C#
317 lines
15 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
using UnityEngine;
|
|
|
|
namespace RootMotion.FinalIK
|
|
{
|
|
// Token: 0x02000428 RID: 1064
|
|
[Token(Token = "0x2000428")]
|
|
[Serializable]
|
|
public class IKMappingLimb : IKMapping
|
|
{
|
|
// Token: 0x060025F2 RID: 9714 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60025F2")]
|
|
[Address(RVA = "0x11E6460", Offset = "0x11E4C60", VA = "0x1811E6460", Slot = "4")]
|
|
public override bool IsValid(IKSolver solver, ref string message)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060025F3 RID: 9715 RVA: 0x000553D0 File Offset: 0x000535D0
|
|
[Token(Token = "0x60025F3")]
|
|
[Address(RVA = "0x11E60E0", Offset = "0x11E48E0", VA = "0x1811E60E0")]
|
|
public IKMapping.BoneMap GetBoneMap(IKMappingLimb.BoneMapType boneMap)
|
|
{
|
|
if (boneMap == IKMappingLimb.BoneMapType.Parent)
|
|
{
|
|
Transform transform = this.parentBone;
|
|
int num = 0;
|
|
if (transform == num)
|
|
{
|
|
Transform transform2 = this.bone1;
|
|
int num2 = 0;
|
|
Warning.Log("This limb does not have a parent (shoulder) bone", transform2, num2 != 0);
|
|
}
|
|
return this.boneMapParent;
|
|
}
|
|
if (boneMap == IKMappingLimb.BoneMapType.Parent)
|
|
{
|
|
return this.boneMap1;
|
|
}
|
|
if (boneMap != IKMappingLimb.BoneMapType.Bone1)
|
|
{
|
|
return this.boneMap3;
|
|
}
|
|
return this.boneMap2;
|
|
}
|
|
|
|
// Token: 0x060025F4 RID: 9716 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60025F4")]
|
|
[Address(RVA = "0x11E67A0", Offset = "0x11E4FA0", VA = "0x1811E67A0")]
|
|
public void SetLimbOrientation(Vector3 upper, Vector3 lower)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060025F5 RID: 9717 RVA: 0x00055430 File Offset: 0x00053630
|
|
[Token(Token = "0x60025F5")]
|
|
[Address(RVA = "0x11E6DE0", Offset = "0x11E55E0", VA = "0x1811E6DE0")]
|
|
public IKMappingLimb()
|
|
{
|
|
this.weight = 1f;
|
|
IKMapping.BoneMap boneMap = new IKMapping.BoneMap();
|
|
this.boneMapParent = boneMap;
|
|
IKMapping.BoneMap boneMap2 = new IKMapping.BoneMap();
|
|
this.boneMap1 = boneMap2;
|
|
IKMapping.BoneMap boneMap3 = new IKMapping.BoneMap();
|
|
this.boneMap2 = boneMap3;
|
|
IKMapping.BoneMap boneMap4 = new IKMapping.BoneMap();
|
|
this.boneMap3 = boneMap4;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x060025F6 RID: 9718 RVA: 0x00055484 File Offset: 0x00053684
|
|
[Token(Token = "0x60025F6")]
|
|
[Address(RVA = "0x11E6ED0", Offset = "0x11E56D0", VA = "0x1811E6ED0")]
|
|
public IKMappingLimb(Transform bone1, Transform bone2, Transform bone3, [Optional] Transform parentBone)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060025F6)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.IKMappingLimb::.ctor(UnityEngine.Transform,UnityEngine.Transform,UnityEngine.Transform,UnityEngine.Transform)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{; Block_0:; stfld:float32(IKMappingLimb::weight, ldloc:IKMappingLimb(this), ldc.r4:float32(1)); stloc:BoneMap(var_0_10, newobj:BoneMap(BoneMap::.ctor)); stfld:BoneMap(IKMappingLimb::boneMapParent, ldloc:IKMappingLimb(this), ldloc:BoneMap(var_0_10)); stloc:BoneMap(var_1_1D, newobj:BoneMap(BoneMap::.ctor)); stfld:BoneMap(IKMappingLimb::boneMap1, ldloc:IKMappingLimb(this), ldloc:BoneMap(var_1_1D)); stloc:BoneMap(var_2_2A, newobj:BoneMap(BoneMap::.ctor)); stfld:BoneMap(IKMappingLimb::boneMap2, ldloc:IKMappingLimb(this), ldloc:BoneMap(var_2_2A)); stloc:BoneMap(var_3_37, newobj:BoneMap(BoneMap::.ctor)); stfld:BoneMap(IKMappingLimb::boneMap3, ldloc:IKMappingLimb(this), ldloc:BoneMap(var_3_37)); call:void(object::.ctor, ldloc:IKMappingLimb[exp:object](this)); stfld:Transform(IKMappingLimb::bone1, ldloc:IKMappingLimb(this), ldloc:Transform(bone1)); stfld:Transform(IKMappingLimb::bone2, ldloc:IKMappingLimb(this), ldloc:Transform(bone2)); stfld:Transform(IKMappingLimb::bone3, ldloc:IKMappingLimb(this), ldloc:Transform(bone3)); stfld:Transform(IKMappingLimb::parentBone, ldloc:IKMappingLimb(this), ldc.i4:int32[exp:Transform](0)); };
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x060025F7 RID: 9719 RVA: 0x000554F4 File Offset: 0x000536F4
|
|
[Token(Token = "0x60025F7")]
|
|
[Address(RVA = "0x11E6730", Offset = "0x11E4F30", VA = "0x1811E6730")]
|
|
public void SetBones(Transform bone1, Transform bone2, Transform bone3, [Optional] Transform parentBone)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060025F7)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void RootMotion.FinalIK.IKMappingLimb::SetBones(UnityEngine.Transform,UnityEngine.Transform,UnityEngine.Transform,UnityEngine.Transform)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{; Block_0:; stfld:Transform(IKMappingLimb::bone1, ldloc:IKMappingLimb(this), ldloc:Transform(bone1)); stfld:Transform(IKMappingLimb::bone2, ldloc:IKMappingLimb(this), ldloc:Transform(bone2)); stfld:Transform(IKMappingLimb::bone3, ldloc:IKMappingLimb(this), ldloc:Transform(bone3)); stfld:Transform(IKMappingLimb::parentBone, ldloc:IKMappingLimb(this), ldc.i4:int32[exp:Transform](0)); };
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1810
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 344
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1618
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x060025F8 RID: 9720 RVA: 0x0005551C File Offset: 0x0005371C
|
|
[Token(Token = "0x60025F8")]
|
|
[Address(RVA = "0x11E6BA0", Offset = "0x11E53A0", VA = "0x1811E6BA0")]
|
|
public void StoreDefaultLocalState()
|
|
{
|
|
Transform transform = this.parentBone;
|
|
int num = 0;
|
|
if (transform != num)
|
|
{
|
|
this.boneMapParent.StoreDefaultLocalState();
|
|
}
|
|
this.boneMap1.StoreDefaultLocalState();
|
|
this.boneMap2.StoreDefaultLocalState();
|
|
this.boneMap3.StoreDefaultLocalState();
|
|
}
|
|
|
|
// Token: 0x060025F9 RID: 9721 RVA: 0x00055570 File Offset: 0x00053770
|
|
[Token(Token = "0x60025F9")]
|
|
[Address(RVA = "0x11E6020", Offset = "0x11E4820", VA = "0x1811E6020")]
|
|
public void FixTransforms()
|
|
{
|
|
Transform transform = this.parentBone;
|
|
int num = 0;
|
|
if (transform != num)
|
|
{
|
|
IKMapping.BoneMap boneMap = this.boneMapParent;
|
|
int num2 = 0;
|
|
boneMap.FixTransform(num2 != 0);
|
|
}
|
|
this.boneMap1.FixTransform(true);
|
|
IKMapping.BoneMap boneMap2 = this.boneMap2;
|
|
int num3 = 0;
|
|
boneMap2.FixTransform(num3 != 0);
|
|
IKMapping.BoneMap boneMap3 = this.boneMap3;
|
|
int num4 = 0;
|
|
boneMap3.FixTransform(num4 != 0);
|
|
}
|
|
|
|
// Token: 0x060025FA RID: 9722 RVA: 0x000555DC File Offset: 0x000537DC
|
|
[Token(Token = "0x60025FA")]
|
|
[Address(RVA = "0x11E61B0", Offset = "0x11E49B0", VA = "0x1811E61B0", Slot = "5")]
|
|
public override void Initiate(IKSolverFullBody solver)
|
|
{
|
|
if (this.boneMapParent == (ulong)0L)
|
|
{
|
|
IKMapping.BoneMap boneMap = new IKMapping.BoneMap();
|
|
this.boneMapParent = boneMap;
|
|
}
|
|
if (this.boneMap1 == (ulong)0L)
|
|
{
|
|
IKMapping.BoneMap boneMap2 = new IKMapping.BoneMap();
|
|
this.boneMap1 = boneMap2;
|
|
}
|
|
if (this.boneMap2 == (ulong)0L)
|
|
{
|
|
IKMapping.BoneMap boneMap3 = new IKMapping.BoneMap();
|
|
this.boneMap2 = boneMap3;
|
|
}
|
|
if (this.boneMap3 == (ulong)0L)
|
|
{
|
|
IKMapping.BoneMap boneMap4 = new IKMapping.BoneMap();
|
|
this.boneMap3 = boneMap4;
|
|
}
|
|
Transform transform = this.parentBone;
|
|
int num = 0;
|
|
if (transform != num)
|
|
{
|
|
IKMapping.BoneMap boneMap5 = this.boneMapParent;
|
|
Transform transform2 = this.parentBone;
|
|
boneMap5.Initiate(transform2, solver);
|
|
}
|
|
IKMapping.BoneMap boneMap6 = this.boneMap1;
|
|
Transform transform3 = this.bone1;
|
|
boneMap6.Initiate(transform3, solver);
|
|
IKMapping.BoneMap boneMap7 = this.boneMap2;
|
|
Transform transform4 = this.bone2;
|
|
boneMap7.Initiate(transform4, solver);
|
|
IKMapping.BoneMap boneMap8 = this.boneMap3;
|
|
Transform transform5 = this.bone3;
|
|
boneMap8.Initiate(transform5, solver);
|
|
IKMapping.BoneMap boneMap9 = this.boneMap1;
|
|
IKMapping.BoneMap boneMap10 = this.boneMap2;
|
|
Transform transform6 = this.boneMap3.transform;
|
|
Transform transform7 = boneMap10.transform;
|
|
Transform transform8 = boneMap9.transform;
|
|
boneMap9.SetPlane(solver, transform8, transform7, transform6);
|
|
IKMapping.BoneMap boneMap11 = this.boneMap2;
|
|
IKMapping.BoneMap boneMap12 = this.boneMap3;
|
|
Transform transform9 = this.boneMap1.transform;
|
|
Transform transform10 = boneMap12.transform;
|
|
Transform transform11 = boneMap11.transform;
|
|
boneMap11.SetPlane(solver, transform11, transform10, transform9);
|
|
Transform transform12 = this.parentBone;
|
|
int num2 = 0;
|
|
if (transform12 != num2)
|
|
{
|
|
IKMapping.BoneMap boneMap13 = this.boneMapParent;
|
|
IKMapping.BoneMap boneMap14 = this.boneMap1;
|
|
boneMap13.SetLocalSwingAxis(boneMap14);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060025FB RID: 9723 RVA: 0x0005577C File Offset: 0x0005397C
|
|
[Token(Token = "0x60025FB")]
|
|
[Address(RVA = "0x11E66C0", Offset = "0x11E4EC0", VA = "0x1811E66C0")]
|
|
public void ReadPose()
|
|
{
|
|
this.boneMap1.UpdatePlane(true, true);
|
|
IKMapping.BoneMap boneMap = this.boneMap2;
|
|
int num = 0;
|
|
boneMap.UpdatePlane(true, num != 0);
|
|
float num2 = this.weight;
|
|
int num3 = 0;
|
|
float num4 = Mathf.Clamp(num2, (float)num3, 1f);
|
|
IKMapping.BoneMap boneMap2 = this.boneMap3;
|
|
this.weight = num4;
|
|
boneMap2.MaintainRotation();
|
|
}
|
|
|
|
// Token: 0x060025FC RID: 9724 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60025FC")]
|
|
[Address(RVA = "0x11E6C50", Offset = "0x11E5450", VA = "0x1811E6C50")]
|
|
public void WritePose(IKSolverFullBody solver, bool fullBody)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x04002FAC RID: 12204
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4002FAC")]
|
|
public Transform parentBone;
|
|
|
|
// Token: 0x04002FAD RID: 12205
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4002FAD")]
|
|
public Transform bone1;
|
|
|
|
// Token: 0x04002FAE RID: 12206
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4002FAE")]
|
|
public Transform bone2;
|
|
|
|
// Token: 0x04002FAF RID: 12207
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4002FAF")]
|
|
public Transform bone3;
|
|
|
|
// Token: 0x04002FB0 RID: 12208
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4002FB0")]
|
|
[Range(0f, 1f)]
|
|
public float maintainRotationWeight;
|
|
|
|
// Token: 0x04002FB1 RID: 12209
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x34")]
|
|
[Token(Token = "0x4002FB1")]
|
|
[Range(0f, 1f)]
|
|
public float weight;
|
|
|
|
// Token: 0x04002FB2 RID: 12210
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4002FB2")]
|
|
private IKMapping.BoneMap boneMapParent;
|
|
|
|
// Token: 0x04002FB3 RID: 12211
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4002FB3")]
|
|
private IKMapping.BoneMap boneMap1;
|
|
|
|
// Token: 0x04002FB4 RID: 12212
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4002FB4")]
|
|
private IKMapping.BoneMap boneMap2;
|
|
|
|
// Token: 0x04002FB5 RID: 12213
|
|
[Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4002FB5")]
|
|
private IKMapping.BoneMap boneMap3;
|
|
|
|
// Token: 0x02000429 RID: 1065
|
|
[Token(Token = "0x2000429")]
|
|
[Serializable]
|
|
public enum BoneMapType
|
|
{
|
|
// Token: 0x04002FB7 RID: 12215
|
|
[Token(Token = "0x4002FB7")]
|
|
Parent,
|
|
// Token: 0x04002FB8 RID: 12216
|
|
[Token(Token = "0x4002FB8")]
|
|
Bone1,
|
|
// Token: 0x04002FB9 RID: 12217
|
|
[Token(Token = "0x4002FB9")]
|
|
Bone2,
|
|
// Token: 0x04002FBA RID: 12218
|
|
[Token(Token = "0x4002FBA")]
|
|
Bone3
|
|
}
|
|
}
|
|
}
|