mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 06:19:22 +00:00
switch to reflection
idk traverse seems kinda heavy for this usecase
This commit is contained in:
parent
f8d4e34634
commit
51ff6e8333
1 changed files with 6 additions and 7 deletions
|
@ -1,11 +1,13 @@
|
||||||
using HarmonyLib;
|
using RootMotion.FinalIK;
|
||||||
using RootMotion.FinalIK;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace NAK.Melons.DesktopVRIK;
|
namespace NAK.Melons.DesktopVRIK;
|
||||||
|
|
||||||
public static class VRIKUtils
|
public static class VRIKUtils
|
||||||
{
|
{
|
||||||
|
static readonly FieldInfo vrik_bendNormalRelToPelvis = typeof(IKSolverVR.Leg).GetField("bendNormalRelToPelvis", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
|
||||||
public static void ConfigureVRIKReferences(VRIK vrik, bool useVRIKToes, bool findUnmappedToes, out bool foundUnmappedToes)
|
public static void ConfigureVRIKReferences(VRIK vrik, bool useVRIKToes, bool findUnmappedToes, out bool foundUnmappedToes)
|
||||||
{
|
{
|
||||||
foundUnmappedToes = false;
|
foundUnmappedToes = false;
|
||||||
|
@ -121,15 +123,12 @@ public static class VRIKUtils
|
||||||
vrik.solver.leftLeg.bendToTargetWeight = 0f;
|
vrik.solver.leftLeg.bendToTargetWeight = 0f;
|
||||||
vrik.solver.rightLeg.bendToTargetWeight = 0f;
|
vrik.solver.rightLeg.bendToTargetWeight = 0f;
|
||||||
|
|
||||||
var leftLeg_bendNormalRelToPelvisTraverse = Traverse.Create(vrik.solver.leftLeg).Field("bendNormalRelToPelvis");
|
|
||||||
var rightLeg_bendNormalRelToPelvisTraverse = Traverse.Create(vrik.solver.rightLeg).Field("bendNormalRelToPelvis");
|
|
||||||
|
|
||||||
var pelvis_localRotationInverse = Quaternion.Inverse(vrik.references.pelvis.localRotation);
|
var pelvis_localRotationInverse = Quaternion.Inverse(vrik.references.pelvis.localRotation);
|
||||||
var leftLeg_bendNormalRelToPelvis = pelvis_localRotationInverse * leftKneeNormal;
|
var leftLeg_bendNormalRelToPelvis = pelvis_localRotationInverse * leftKneeNormal;
|
||||||
var rightLeg_bendNormalRelToPelvis = pelvis_localRotationInverse * rightKneeNormal;
|
var rightLeg_bendNormalRelToPelvis = pelvis_localRotationInverse * rightKneeNormal;
|
||||||
|
|
||||||
leftLeg_bendNormalRelToPelvisTraverse.SetValue(leftLeg_bendNormalRelToPelvis);
|
vrik_bendNormalRelToPelvis.SetValue(vrik.solver.leftLeg, leftLeg_bendNormalRelToPelvis);
|
||||||
rightLeg_bendNormalRelToPelvisTraverse.SetValue(rightLeg_bendNormalRelToPelvis);
|
vrik_bendNormalRelToPelvis.SetValue(vrik.solver.rightLeg, rightLeg_bendNormalRelToPelvis);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Vector3 GetNormalFromArray(Vector3[] positions)
|
private static Vector3 GetNormalFromArray(Vector3[] positions)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue