Fixes for 24/06/2025 nightly build

This commit is contained in:
SDraw 2025-06-24 21:45:18 +03:00
parent 0902edd560
commit 40b683d33c
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
18 changed files with 93 additions and 86 deletions

View file

@ -114,17 +114,17 @@ namespace ml_amt
{
Utils.SetAvatarTPose();
m_vrIk = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_avatarScale = Mathf.Abs(PlayerSetup.Instance._avatar.transform.localScale.y);
m_vrIk = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
m_avatarScale = Mathf.Abs(PlayerSetup.Instance.AvatarTransform.localScale.y);
// Parse animator parameters
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.Moving, PlayerSetup.Instance.animatorManager));
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.MovementSpeed, PlayerSetup.Instance.animatorManager));
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.Velocity, PlayerSetup.Instance.animatorManager));
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.Moving, PlayerSetup.Instance.AnimatorManager));
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.MovementSpeed, PlayerSetup.Instance.AnimatorManager));
m_parameters.Add(new AvatarParameter(AvatarParameter.ParameterType.Velocity, PlayerSetup.Instance.AnimatorManager));
m_parameters.RemoveAll(p => !p.IsValid());
// Avatar custom IK limits
m_ikLimits = PlayerSetup.Instance._avatar.transform.Find("[IKLimits]");
m_ikLimits = PlayerSetup.Instance.AvatarTransform.Find("[IKLimits]");
UpdateIKLimits();
// Apply VRIK tweaks
@ -135,18 +135,18 @@ namespace ml_amt
if(m_vrIk.solver.HasToes())
{
Transform l_foot = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.LeftFoot);
Transform l_foot = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.LeftFoot);
if(l_foot == null)
l_foot = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.RightFoot);
l_foot = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.RightFoot);
Transform l_toe = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.LeftToes);
Transform l_toe = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.LeftToes);
if(l_toe == null)
l_toe = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.RightToes);
l_toe = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.RightToes);
if((l_foot != null) && (l_toe != null))
{
Vector3 l_footPos = (PlayerSetup.Instance._avatar.transform.GetMatrix().inverse * l_foot.GetMatrix()).GetPosition();
Vector3 l_toePos = (PlayerSetup.Instance._avatar.transform.GetMatrix().inverse * l_toe.GetMatrix()).GetPosition();
Vector3 l_footPos = (PlayerSetup.Instance.AvatarTransform.GetMatrix().inverse * l_foot.GetMatrix()).GetPosition();
Vector3 l_toePos = (PlayerSetup.Instance.AvatarTransform.GetMatrix().inverse * l_toe.GetMatrix()).GetPosition();
m_massCenter = new Vector3(0f, 0f, l_toePos.z - l_footPos.z);
}
}
@ -171,7 +171,7 @@ namespace ml_amt
// Old VRIK is destroyed by game
Utils.SetAvatarTPose();
m_vrIk = PlayerSetup.Instance._animator.GetComponent<VRIK>();
m_vrIk = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
if(m_vrIk != null)
{
m_vrIk.solver.locomotion.offset = (Settings.MassCenter ? m_massCenter : m_locomotionOffset);
@ -241,7 +241,7 @@ namespace ml_amt
// Arbitrary
float GetRelativeScale()
{
return ((m_avatarScale > 0f) ? (PlayerSetup.Instance._avatar.transform.localScale.y / m_avatarScale) : 0f);
return ((m_avatarScale > 0f) ? (PlayerSetup.Instance.AvatarTransform.localScale.y / m_avatarScale) : 0f);
}
void UpdateIKLimits()
@ -258,7 +258,7 @@ namespace ml_amt
public bool IsMoving() => BetterBetterCharacterController.Instance.IsMoving();
public float GetMovementSpeed()
{
AvatarAnimatorManager l_animatorManager = PlayerSetup.Instance.animatorManager;
AvatarAnimatorManager l_animatorManager = PlayerSetup.Instance.AnimatorManager;
return Mathf.Sqrt(l_animatorManager.MovementX * l_animatorManager.MovementX + l_animatorManager.MovementY * l_animatorManager.MovementY);
}
public float GetVelocity() => BetterBetterCharacterController.Instance.velocity.magnitude;

View file

@ -22,11 +22,11 @@ namespace ml_amt
public static void SetAvatarTPose()
{
if(PlayerSetup.Instance._animator.isHuman)
if(PlayerSetup.Instance.Animator.isHuman)
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
}
}

View file

@ -114,7 +114,7 @@ namespace ml_bft
internal void OnAvatarSetup()
{
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
if(l_animator.isHuman)
{
Utils.SetAvatarTPose();

View file

@ -21,8 +21,8 @@ namespace ml_bft
public static void SetAvatarTPose()
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
}
}
}

View file

@ -131,7 +131,7 @@ namespace ml_dht
{
m_lastHeadRotation = Quaternion.Slerp(m_lastHeadRotation, m_avatarDescriptor.transform.rotation * (m_headRotation * m_bindRotation), m_smoothing);
if(!PlayerSetup.Instance.IsEmotePlaying())
if(!PlayerSetup.Instance.IsEmotePlaying)
m_headBone.rotation = m_lastHeadRotation;
}
}
@ -139,20 +139,20 @@ namespace ml_dht
// Game events
internal void OnAvatarSetup()
{
m_camera = PlayerSetup.Instance.GetActiveCamera().transform;
m_avatarDescriptor = PlayerSetup.Instance._avatar.GetComponent<CVRAvatar>();
m_camera = PlayerSetup.Instance.activeCam.transform;
m_avatarDescriptor = PlayerSetup.Instance.AvatarObject.GetComponent<CVRAvatar>();
if(PlayerSetup.Instance._animator.isHuman)
if(PlayerSetup.Instance.Animator.isHuman)
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
m_headBone = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.Head);
m_headBone = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.Head);
if(m_headBone != null)
m_bindRotation = Quaternion.Inverse(m_avatarDescriptor.transform.rotation) * m_headBone.rotation;
m_lookIK = PlayerSetup.Instance._avatar.GetComponent<LookAtIK>();
m_lookIK = PlayerSetup.Instance.AvatarObject.GetComponent<LookAtIK>();
if(m_lookIK != null)
m_lookIK.onPostSolverUpdate.AddListener(this.OnLookIKPostUpdate);
}
@ -167,9 +167,9 @@ namespace ml_dht
}
void OnAvatarReuse()
{
m_camera = PlayerSetup.Instance.GetActiveCamera().transform;
m_camera = PlayerSetup.Instance.activeCam.transform;
m_lookIK = PlayerSetup.Instance._avatar.GetComponent<LookAtIK>();
m_lookIK = PlayerSetup.Instance.AvatarObject.GetComponent<LookAtIK>();
if(m_lookIK != null)
m_lookIK.onPostSolverUpdate.AddListener(this.OnLookIKPostUpdate);
}

View file

@ -53,7 +53,7 @@ namespace ml_lme
);
p_instance.Patch(
typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.SetControllerRayScale), BindingFlags.Instance | BindingFlags.Public),
typeof(PlayerSetup).GetMethod("SetControllerRayScale", BindingFlags.Instance | BindingFlags.NonPublic),
null,
new HarmonyLib.HarmonyMethod(typeof(GameEvents).GetMethod(nameof(OnRayScale_Postfix), BindingFlags.Static | BindingFlags.NonPublic))
);

View file

@ -281,7 +281,7 @@ namespace ml_lme
void OnAvatarSetup()
{
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
if(l_animator.isHuman)
{
Utils.SetAvatarTPose();
@ -313,7 +313,7 @@ namespace ml_lme
void OnAvatarReuse()
{
// Old VRIK is destroyed by game
m_vrIK = PlayerSetup.Instance._animator.GetComponent<VRIK>();
m_vrIK = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
if(Utils.IsInVR())
RemoveArmIK();
@ -409,7 +409,7 @@ namespace ml_lme
void SetupArmIK()
{
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
Transform l_chest = l_animator.GetBoneTransform(HumanBodyBones.UpperChest);
if(l_chest == null)
l_chest = l_animator.GetBoneTransform(HumanBodyBones.Chest);
@ -472,7 +472,7 @@ namespace ml_lme
LeapTracking.Instance.Rebind(PlayerSetup.Instance.transform.rotation);
// Align rotations of leap fingers to avatar fingers
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
LeapHand l_leapLeft = LeapTracking.Instance.GetLeftHand();
LeapHand l_leapRight = LeapTracking.Instance.GetRightHand();
// Try to "fix" rotations, slightly inaccurate after 0YX plane rotation

View file

@ -136,7 +136,7 @@ namespace ml_lme
{
if(Settings.Enabled)
{
Transform l_camera = PlayerSetup.Instance.GetActiveCamera().transform;
Transform l_camera = PlayerSetup.Instance.activeCam.transform;
m_root.position = l_camera.position;
m_root.rotation = (Settings.HeadAttach ? l_camera.rotation : PlayerSetup.Instance.GetPlayerRotation());

View file

@ -59,8 +59,8 @@ namespace ml_lme
public static void SetAvatarTPose()
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
}
public static void Swap<T>(ref T lhs, ref T rhs)

View file

@ -68,7 +68,7 @@ namespace ml_pam
void Start()
{
m_camera = PlayerSetup.Instance.GetActiveCamera().transform;
m_camera = PlayerSetup.Instance.activeCam.transform;
m_root = new GameObject("Root").transform;
m_root.parent = this.transform;
@ -353,14 +353,14 @@ namespace ml_pam
void OnAvatarSetup()
{
m_camera = PlayerSetup.Instance.GetActiveCamera().transform;
m_camera = PlayerSetup.Instance.activeCam.transform;
if(PlayerSetup.Instance._animator.isHuman)
if(PlayerSetup.Instance.Animator.isHuman)
{
m_vrIK = PlayerSetup.Instance._animator.GetComponent<VRIK>();
m_vrIK = PlayerSetup.Instance.Animator.GetComponent<VRIK>();
Utils.SetAvatarTPose();
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
Matrix4x4 l_avatarMatrixInv = l_animator.transform.GetMatrix().inverse; // Animator and avatar are on same game object
Transform l_leftHand = l_animator.GetBoneTransform(HumanBodyBones.LeftHand);
@ -395,8 +395,8 @@ namespace ml_pam
}
}
m_leftHandParameter = new AvatarBoolParameter("LeftHandExtended", PlayerSetup.Instance.animatorManager);
m_rightHandParameter = new AvatarBoolParameter("RightHandExtended", PlayerSetup.Instance.animatorManager);
m_leftHandParameter = new AvatarBoolParameter("LeftHandExtended", PlayerSetup.Instance.AnimatorManager);
m_rightHandParameter = new AvatarBoolParameter("RightHandExtended", PlayerSetup.Instance.AnimatorManager);
OnEnabledChanged(Settings.Enabled);
OnGrabOffsetChanged(Settings.GrabOffset);
@ -406,7 +406,7 @@ namespace ml_pam
void OnAvatarReuse()
{
// Old VRIK is destroyed by game
m_vrIK = PlayerSetup.Instance._animator.GetComponent<VRIK>();
m_vrIK = PlayerSetup.Instance.Animator.GetComponent<VRIK>();
if(Utils.IsInVR())
RemoveArmIK();
@ -470,7 +470,7 @@ namespace ml_pam
{
try
{
m_camera = PlayerSetup.Instance.GetActiveCamera().transform;
m_camera = PlayerSetup.Instance.activeCam.transform;
this.enabled = !Utils.IsInVR();
}
catch(System.Exception e)
@ -482,7 +482,7 @@ namespace ml_pam
// Arbitrary
void SetupArmIK()
{
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
Transform l_chest = l_animator.GetBoneTransform(HumanBodyBones.UpperChest);
if(l_chest == null)
@ -490,7 +490,7 @@ namespace ml_pam
if(l_chest == null)
l_chest = l_animator.GetBoneTransform(HumanBodyBones.Spine);
m_armIKLeft = PlayerSetup.Instance._avatar.AddComponent<ArmIK>();
m_armIKLeft = PlayerSetup.Instance.AvatarObject.AddComponent<ArmIK>();
m_armIKLeft.solver.isLeft = true;
m_armIKLeft.solver.SetChain(
l_chest,
@ -507,7 +507,7 @@ namespace ml_pam
m_armIKLeft.solver.IKRotationWeight = 0f;
m_armIKLeft.enabled = false;
m_armIKRight = PlayerSetup.Instance._avatar.AddComponent<ArmIK>();
m_armIKRight = PlayerSetup.Instance.AvatarObject.AddComponent<ArmIK>();
m_armIKRight.solver.isLeft = false;
m_armIKRight.solver.SetChain(
l_chest,

View file

@ -18,8 +18,8 @@ namespace ml_pam
public static void SetAvatarTPose()
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
}
// Extensions

View file

@ -196,9 +196,9 @@ namespace ml_pmc
{
if(m_inVr)
{
Vector3 l_avatarPos = PlayerSetup.Instance._avatar.transform.position;
Vector3 l_avatarPos = PlayerSetup.Instance.AvatarTransform.position;
PlayerSetup.Instance.transform.rotation = l_result.rotation;
Vector3 l_dif = l_avatarPos - PlayerSetup.Instance._avatar.transform.position;
Vector3 l_dif = l_avatarPos - PlayerSetup.Instance.AvatarTransform.position;
PlayerSetup.Instance.transform.position += l_dif;
}
else
@ -258,9 +258,9 @@ namespace ml_pmc
void OnAvatarSetup()
{
m_inVr = Utils.IsInVR();
m_animator = PlayerSetup.Instance._animator;
m_vrIk = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_lookAtIk = PlayerSetup.Instance._avatar.GetComponent<LookAtIK>();
m_animator = PlayerSetup.Instance.Animator;
m_vrIk = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
m_lookAtIk = PlayerSetup.Instance.AvatarObject.GetComponent<LookAtIK>();
if((m_animator != null) && m_animator.isHuman)
{
@ -293,8 +293,8 @@ namespace ml_pmc
m_inVr = Utils.IsInVR();
// Old VRIK and LookAtIK are destroyed by game
m_vrIk = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_lookAtIk = PlayerSetup.Instance._avatar.GetComponent<LookAtIK>();
m_vrIk = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
m_lookAtIk = PlayerSetup.Instance.AvatarObject.GetComponent<LookAtIK>();
if(m_vrIk != null)
{
@ -320,10 +320,10 @@ namespace ml_pmc
{
if(Friends.FriendsWith(p_id))
{
if(CVRPlayerManager.Instance.GetPlayerPuppetMaster(p_id, out PuppetMaster l_puppetMaster))
if(CVRPlayerManager.Instance.UserIdToPlayerEntity.TryGetValue(p_id, out CVRPlayerEntity l_playerEntity))
{
if(Utils.IsInSight(BetterBetterCharacterController.Instance.KinematicTriggerProxy.Collider, l_puppetMaster.GetComponent<CapsuleCollider>(), Utils.GetWorldMovementLimit()))
SetTarget(l_puppetMaster);
if(Utils.IsInSight(BetterBetterCharacterController.Instance.KinematicTriggerProxy.Collider, l_playerEntity.PuppetMaster.GetComponent<CapsuleCollider>(), Utils.GetWorldMovementLimit()))
SetTarget(l_playerEntity.PuppetMaster);
else
ModUi.ShowAlert("Selected player is too far away or obstructed");
}
@ -374,9 +374,9 @@ namespace ml_pmc
{
if(!m_active)
{
if((p_target != null) && (p_target.animatorManager != null) && (p_target.animatorManager.Animator != null) && p_target.animatorManager.Animator.isHuman)
if((p_target != null) && (p_target.AnimatorManager != null) && (p_target.Animator != null) && p_target.Animator.isHuman)
{
m_puppetParser = p_target.animatorManager.Animator.gameObject.AddComponent<PuppetParser>();
m_puppetParser = p_target.Animator.gameObject.AddComponent<PuppetParser>();
m_puppetParser.m_puppetMaster = p_target;
m_distanceLimit = Utils.GetWorldMovementLimit();

View file

@ -1,4 +1,5 @@
using ABI.CCK.Components;
using ABI_RC.Core;
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.Player;
using ABI_RC.Systems.IK;
@ -81,7 +82,7 @@ namespace ml_ppu
}
Vector3 l_armsMidPoint = (m_armLeft.position + m_armRight.position) * 0.5f;
Quaternion l_avatarRot = PlayerSetup.Instance._avatar.transform.rotation;
Quaternion l_avatarRot = PlayerSetup.Instance.AvatarTransform.rotation;
m_collider.transform.position = Vector3.zero;
m_collider.transform.rotation = Quaternion.identity;
@ -127,12 +128,12 @@ namespace ml_ppu
void OnAvatarSetup()
{
Animator l_animator = PlayerSetup.Instance._animator;
Animator l_animator = PlayerSetup.Instance.Animator;
if((l_animator != null) && l_animator.isHuman)
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
m_hips = l_animator.GetBoneTransform(HumanBodyBones.Hips);
m_armLeft = l_animator.GetBoneTransform(HumanBodyBones.LeftUpperArm);
@ -140,11 +141,12 @@ namespace ml_ppu
if((m_hips != null) && (m_armLeft != null) && (m_armRight != null))
{
Matrix4x4 l_avatarMatInv = PlayerSetup.Instance._avatar.transform.GetMatrix().inverse;
Matrix4x4 l_avatarMatInv = PlayerSetup.Instance.AvatarTransform.GetMatrix().inverse;
Vector3 l_hipsPos = (l_avatarMatInv * m_hips.GetMatrix()).GetPosition();
Vector3 l_armPos = (l_avatarMatInv * m_armLeft.GetMatrix()).GetPosition();
m_collider = new GameObject("[Collider]").AddComponent<CapsuleCollider>();
m_collider.gameObject.layer = CVRLayers.PlayerClone;
m_collider.transform.parent = this.transform;
m_collider.isTrigger = true;
m_collider.height = Vector3.Distance(l_hipsPos, new Vector3(0f, l_armPos.y, l_armPos.z));

View file

@ -1,5 +1,6 @@
using ABI_RC.Core;
using ABI_RC.Core.Player;
using ABI_RC.Core.Savior;
using ABI_RC.Systems.Movement;
using ABI_RC.Systems.Safety.AdvancedSafety;
using UnityEngine;
@ -8,6 +9,8 @@ namespace ml_ppu
{
static class Utils
{
public static bool IsInVR() => ((MetaPort.Instance != null) && MetaPort.Instance.isUsingVr);
public static Matrix4x4 GetMatrix(this Transform p_transform, bool p_pos = true, bool p_rot = true, bool p_scl = false)
{
return Matrix4x4.TRS(p_pos ? p_transform.position : Vector3.zero, p_rot ? p_transform.rotation : Quaternion.identity, p_scl ? p_transform.lossyScale : Vector3.one);

View file

@ -5,6 +5,7 @@
<Platforms>x64</Platforms>
<AssemblyName>PlayerPickUp</AssemblyName>
<Authors>SDraw</Authors>
<Version>1.0.0</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

View file

@ -195,7 +195,7 @@ namespace ml_prm
BodySystem.TrackingPositionWeight = 0f;
BetterBetterCharacterController.Instance.PauseGroundConstraint();
BetterBetterCharacterController.Instance.ResetAllForces();
PlayerSetup.Instance.animatorManager.CancelEmote = true;
PlayerSetup.Instance.AnimatorManager.CancelEmote = true;
}
if(!m_ragdolled && !m_reachedGround && (BetterBetterCharacterController.Instance.IsOnGround() || BetterBetterCharacterController.Instance.IsInWater() || BetterBetterCharacterController.Instance.IsSitting()))
@ -291,13 +291,13 @@ namespace ml_prm
void OnAvatarSetup()
{
if(PlayerSetup.Instance._animator.isHuman)
if(PlayerSetup.Instance.Animator.isHuman)
{
m_avatarTransform = PlayerSetup.Instance._avatar.transform;
m_hips = PlayerSetup.Instance._animator.GetBoneTransform(HumanBodyBones.Hips);
m_avatarTransform = PlayerSetup.Instance.AvatarTransform;
m_hips = PlayerSetup.Instance.Animator.GetBoneTransform(HumanBodyBones.Hips);
Utils.SetAvatarTPose();
BipedRagdollReferences l_avatarReferences = BipedRagdollReferences.FromAvatar(PlayerSetup.Instance._animator);
BipedRagdollReferences l_avatarReferences = BipedRagdollReferences.FromAvatar(PlayerSetup.Instance.Animator);
m_puppetRoot = new GameObject("Root").transform;
m_puppetRoot.gameObject.layer = CVRLayers.PlayerClone;
@ -367,12 +367,12 @@ namespace ml_prm
}
}
m_vrIK = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_vrIK = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
if(m_vrIK != null)
m_vrIK.onPostSolverUpdate.AddListener(this.OnIKPostSolverUpdate);
m_avatarRagdollToggle = PlayerSetup.Instance._avatar.GetComponentInChildren<RagdollToggle>(true);
m_ragdolledParameter = new AvatarParameter("Ragdolled", PlayerSetup.Instance.animatorManager);
m_avatarRagdollToggle = PlayerSetup.Instance.AvatarObject.GetComponentInChildren<RagdollToggle>(true);
m_ragdolledParameter = new AvatarParameter("Ragdolled", PlayerSetup.Instance.AnimatorManager);
m_initTask = StartCoroutine(WaitForBodyHandlers());
}
@ -410,7 +410,7 @@ namespace ml_prm
}
void OnAvatarPostReuse()
{
m_vrIK = PlayerSetup.Instance._avatar.GetComponent<VRIK>();
m_vrIK = PlayerSetup.Instance.AvatarObject.GetComponent<VRIK>();
if(m_vrIK != null)
m_vrIK.onPostSolverUpdate.AddListener(this.OnIKPostSolverUpdate);
@ -506,10 +506,10 @@ namespace ml_prm
// Custom game events
void OnRemoteGestureStateChanged(ABI_RC.Core.Player.PuppetMaster p_master, RemoteGesturesManager.GestureHand p_hand, bool p_state)
{
if(m_avatarReady && m_ragdolled && Settings.GestureGrab && (p_master.animatorManager.Animator != null))
if(m_avatarReady && m_ragdolled && Settings.GestureGrab && (p_master.Animator != null))
{
Transform l_hand = p_master.animatorManager.Animator.GetBoneTransform((p_hand == RemoteGesturesManager.GestureHand.Left) ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand);
Transform l_finger = p_master.animatorManager.Animator.GetBoneTransform((p_hand == RemoteGesturesManager.GestureHand.Left) ? HumanBodyBones.LeftMiddleProximal : HumanBodyBones.RightMiddleProximal);
Transform l_hand = p_master.Animator.GetBoneTransform((p_hand == RemoteGesturesManager.GestureHand.Left) ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand);
Transform l_finger = p_master.Animator.GetBoneTransform((p_hand == RemoteGesturesManager.GestureHand.Left) ? HumanBodyBones.LeftMiddleProximal : HumanBodyBones.RightMiddleProximal);
if(l_hand != null)
{
@ -642,7 +642,7 @@ namespace ml_prm
if(Settings.ViewVelocity && WorldManager.IsSafeWorld())
{
float l_mag = l_velocity.magnitude;
l_velocity = PlayerSetup.Instance.GetActiveCamera().transform.forward * l_mag;
l_velocity = PlayerSetup.Instance.activeCam.transform.forward * l_mag;
}
Vector3 l_playerPos = PlayerSetup.Instance.transform.position;
@ -666,7 +666,7 @@ namespace ml_prm
m_applyHipsRotation = IKSystem.Instance.applyOriginalHipRotation;
IKSystem.Instance.applyOriginalHipRotation = true;
PlayerSetup.Instance.animatorManager.CancelEmote = true;
PlayerSetup.Instance.AnimatorManager.CancelEmote = true;
m_ragdolledParameter.SetValue(true);
if(!WorldManager.IsSafeWorld())

View file

@ -41,8 +41,8 @@ namespace ml_prm
public static void SetAvatarTPose()
{
IKSystem.Instance.SetAvatarPose(IKSystem.AvatarPose.TPose);
PlayerSetup.Instance._avatar.transform.localPosition = Vector3.zero;
PlayerSetup.Instance._avatar.transform.localRotation = Quaternion.identity;
PlayerSetup.Instance.AvatarTransform.localPosition = Vector3.zero;
PlayerSetup.Instance.AvatarTransform.localRotation = Quaternion.identity;
}
public static bool IsInEnumeration(object p_obj, object[] p_enumeration) => p_enumeration.Contains(p_obj);

View file

@ -14,6 +14,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<DebugType>embedded</DebugType>
<DebugSymbols>true</DebugSymbols>
<DefineConstants>TRACE;NIGHTLY_BUILD</DefineConstants>
</PropertyGroup>
<ItemGroup>