Build 2022r170ex3 code changes

This commit is contained in:
SDraw 2022-12-03 19:12:35 +03:00
parent dcd94ae906
commit 25c4eaad51
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
14 changed files with 202 additions and 167 deletions

View file

@ -51,6 +51,8 @@ namespace ml_amt
float m_locomotionWeight = 1f; // Original weight
float m_avatarScale = 1f; // Instantiated scale
Transform m_avatarHips = null;
float m_viewPointHeight = 1f;
bool m_isInVR = false;
bool m_avatarReady = false;
bool m_compatibleAvatar = false;
@ -91,6 +93,8 @@ namespace ml_amt
void Start()
{
m_isInVR = Utils.IsInVR();
Settings.IKOverrideCrouchChange += this.SetIKOverrideCrouch;
Settings.CrouchLimitChange += this.SetCrouchLimit;
Settings.IKOverrideProneChange += this.SetIKOverrideProne;
@ -126,10 +130,10 @@ namespace ml_amt
m_moving = !Mathf.Approximately(MovementSystem.Instance.movementVector.magnitude, 0f);
// Update upright
Matrix4x4 l_hmdMatrix = PlayerSetup.Instance.transform.GetMatrix().inverse * (PlayerSetup.Instance._inVr ? PlayerSetup.Instance.vrHeadTracker.transform.GetMatrix() : PlayerSetup.Instance.desktopCameraRig.transform.GetMatrix());
Matrix4x4 l_hmdMatrix = PlayerSetup.Instance.transform.GetMatrix().inverse * (m_isInVR ? PlayerSetup.Instance.vrHeadTracker.transform.GetMatrix() : PlayerSetup.Instance.desktopCameraRig.transform.GetMatrix());
float l_currentHeight = Mathf.Clamp((l_hmdMatrix * ms_pointVector).y, 0f, float.MaxValue);
float l_avatarScale = (m_avatarScale > 0f) ? (PlayerSetup.Instance._avatar.transform.localScale.y / m_avatarScale) : 0f;
float l_avatarViewHeight = Mathf.Clamp(PlayerSetup.Instance.GetViewPointHeight() * l_avatarScale, 0f, float.MaxValue);
float l_avatarViewHeight = Mathf.Clamp(m_viewPointHeight * l_avatarScale, 0f, float.MaxValue);
m_upright = Mathf.Clamp(((l_avatarViewHeight > 0f) ? (l_currentHeight / l_avatarViewHeight) : 0f), 0f, 1f);
PoseState l_poseState = (m_upright <= m_proneLimit) ? PoseState.Proning : ((m_upright <= m_crouchLimit) ? PoseState.Crouching : PoseState.Standing);
@ -139,7 +143,7 @@ namespace ml_amt
m_hipsToPlayer.Set(l_hipsToPlayer.x, 0f, l_hipsToPlayer.z);
}
if(PlayerSetup.Instance._inVr && (m_vrIk != null) && m_vrIk.enabled)
if(m_isInVR && (m_vrIk != null) && m_vrIk.enabled)
{
if(m_poseState != l_poseState)
{
@ -164,8 +168,8 @@ namespace ml_amt
if(m_poseTransitions)
{
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Crouching", (l_poseState == PoseState.Crouching) && !m_compatibleAvatar && !PlayerSetup.Instance.fullBodyActive);
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Prone", (l_poseState == PoseState.Proning) && !m_compatibleAvatar && !PlayerSetup.Instance.fullBodyActive);
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Crouching", (l_poseState == PoseState.Crouching) && !m_compatibleAvatar && !Utils.IsInFullbody());
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Prone", (l_poseState == PoseState.Proning) && !m_compatibleAvatar && !Utils.IsInFullbody());
}
}
@ -249,6 +253,7 @@ namespace ml_amt
m_moving = false;
m_hipsToPlayer = Vector3.zero;
m_avatarHips = null;
m_viewPointHeight = 1f;
m_parameters.Clear();
}
@ -257,6 +262,7 @@ namespace ml_amt
m_vrIk = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_locomotionLayer = PlayerSetup.Instance._animator.GetLayerIndex("Locomotion/Emotes");
m_avatarHips = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.Hips);
m_viewPointHeight = PlayerSetup.Instance._avatar.GetComponent<ABI.CCK.Components.CVRAvatar>().viewPosition.y;
// Parse animator parameters
AnimatorControllerParameter[] l_params = PlayerSetup.Instance._animator.parameters;
@ -321,22 +327,18 @@ namespace ml_amt
if(m_detectEmotes && m_emoteActive)
m_vrIk.solver.IKPositionWeight = 0f;
// Game manages VRIK for desktop itself
if(PlayerSetup.Instance._inVr)
// Game doesn't manages VRIK for desktop itself anymore
if((m_ikOverrideCrouch && (m_poseState != PoseState.Standing)) || (m_ikOverrideProne && (m_poseState == PoseState.Proning)))
{
if((m_ikOverrideCrouch && (m_poseState != PoseState.Standing)) || (m_ikOverrideProne && (m_poseState == PoseState.Proning)))
{
m_vrIk.solver.locomotion.weight = 0f;
l_legsOverride = true;
}
if(m_ikOverrideFly && MovementSystem.Instance.flying)
{
m_vrIk.solver.locomotion.weight = 0f;
l_legsOverride = true;
}
m_vrIk.solver.locomotion.weight = 0f;
l_legsOverride = true;
}
if(m_ikOverrideFly && MovementSystem.Instance.flying)
{
m_vrIk.solver.locomotion.weight = 0f;
l_legsOverride = true;
}
// But not this
if(m_ikOverrideJump && !m_grounded && !MovementSystem.Instance.flying)
{
m_vrIk.solver.locomotion.weight = 0f;
@ -345,7 +347,7 @@ namespace ml_amt
bool l_solverActive = !Mathf.Approximately(m_vrIk.solver.IKPositionWeight, 0f);
if(l_legsOverride && l_solverActive && m_followHips && !m_moving && PlayerSetup.Instance._inVr)
if(l_legsOverride && l_solverActive && m_followHips && (!m_moving || m_poseState == PoseState.Proning) && m_isInVR)
PlayerSetup.Instance._avatar.transform.localPosition = m_hipsToPlayer;
}
@ -377,7 +379,7 @@ namespace ml_amt
{
m_poseTransitions = p_state;
if(!m_poseTransitions && m_avatarReady && PlayerSetup.Instance._inVr)
if(!m_poseTransitions && m_avatarReady && m_isInVR)
{
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Crouching", false);
PlayerSetup.Instance.animatorManager.SetAnimatorParameterBool("Prone", false);
@ -387,7 +389,7 @@ namespace ml_amt
{
m_adjustedMovement = p_state;
if(!m_adjustedMovement && m_avatarReady && PlayerSetup.Instance._inVr)
if(!m_adjustedMovement && m_avatarReady && m_isInVR)
{
MovementSystem.Instance.ChangeCrouch(false);
MovementSystem.Instance.ChangeProne(false);