From aaad4e525410ba5c76bac4400b2babdb3d36be23 Mon Sep 17 00:00:00 2001 From: Angeldark Raymaker Date: Sat, 30 Nov 2024 15:26:58 +0000 Subject: [PATCH] FIRE-34884: Update Scale/Positions for new modes --- indra/newview/fsposeranimator.cpp | 54 +++++++++++++------ .../xui/en/menu_fs_poser_poses_btn.xml | 18 +++---- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/indra/newview/fsposeranimator.cpp b/indra/newview/fsposeranimator.cpp index 3a585311e6..e856e9a0b8 100644 --- a/indra/newview/fsposeranimator.cpp +++ b/indra/newview/fsposeranimator.cpp @@ -377,27 +377,42 @@ void FSPoserAnimator::setJointPosition(LLVOAvatar* avatar, const FSPoserJoint* j if (!jointPose) return; - FSJointPose* oppositeJointPose = posingMotion->getJointPoseByJointName(joint->mirrorJointName()); - if (style == NONE || !oppositeJointPose) - { - jointPose->setPositionDelta(position); - return; - } - LLVector3 positionDelta = jointPose->getPositionDelta() - position; - LLVector3 oppositeJointPosition = oppositeJointPose->getPositionDelta(); + switch (style) { + case MIRROR: + case MIRROR_DELTA: + case SYMPATHETIC_DELTA: case SYMPATHETIC: jointPose->setPositionDelta(position); - oppositeJointPose->setPositionDelta(oppositeJointPosition - positionDelta); break; - case MIRROR: + case DELTAMODE: + case NONE: + default: jointPose->setPositionDelta(position); + return; + } + + FSJointPose* oppositeJointPose = posingMotion->getJointPoseByJointName(joint->mirrorJointName()); + if (!oppositeJointPose) + return; + + LLVector3 oppositeJointPosition = oppositeJointPose->getPositionDelta(); + + switch (style) + { + case MIRROR: + case MIRROR_DELTA: oppositeJointPose->setPositionDelta(oppositeJointPosition + positionDelta); break; + case SYMPATHETIC_DELTA: + case SYMPATHETIC: + oppositeJointPose->setPositionDelta(oppositeJointPosition - positionDelta); + break; + default: break; } @@ -751,15 +766,24 @@ void FSPoserAnimator::setJointScale(LLVOAvatar* avatar, const FSPoserJoint* join return; jointPose->setScaleDelta(scale); - - if (style == NONE) - return; - FSJointPose* oppositeJointPose = posingMotion->getJointPoseByJointName(joint->mirrorJointName()); if (!oppositeJointPose) return; - oppositeJointPose->setScaleDelta(scale); + switch (style) + { + case SYMPATHETIC: + case MIRROR: + case SYMPATHETIC_DELTA: + case MIRROR_DELTA: + oppositeJointPose->setScaleDelta(scale); + break; + + case DELTAMODE: + case NONE: + default: + return; + } } bool FSPoserAnimator::tryGetJointSaveVectors(LLVOAvatar* avatar, const FSPoserJoint& joint, LLVector3* rot, LLVector3* pos, diff --git a/indra/newview/skins/default/xui/en/menu_fs_poser_poses_btn.xml b/indra/newview/skins/default/xui/en/menu_fs_poser_poses_btn.xml index a44b02e9eb..04b45c9fdd 100644 --- a/indra/newview/skins/default/xui/en/menu_fs_poser_poses_btn.xml +++ b/indra/newview/skins/default/xui/en/menu_fs_poser_poses_btn.xml @@ -2,15 +2,6 @@ - - - - + + +