diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 76a3f737aa..c3243b7dae 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -26335,6 +26335,17 @@ Change of this parameter will affect the layout of buttons in notification toast Value 1 + FSManipShowJointMarkers + + Comment + Show small markers where the selectable joints are. + Persist + 1 + Type + Boolean + Value + 1 + FSLocalMeshApplyJointOffsets Comment diff --git a/indra/newview/fsmaniprotatejoint.cpp b/indra/newview/fsmaniprotatejoint.cpp index ed5dc4155b..dbd0d5c663 100644 --- a/indra/newview/fsmaniprotatejoint.cpp +++ b/indra/newview/fsmaniprotatejoint.cpp @@ -70,8 +70,8 @@ */ static void renderPulsingSphere(const LLVector3& joint_world_position, const LLColor4& color = LLColor4(0.f, 0.f, 1.f, 0.3f)) { - constexpr float MAX_SPHERE_RADIUS = 0.03f; // Base radius in agent-space units. - constexpr float PULSE_AMPLITUDE = 0.01f; // Additional radius variation. + constexpr float MAX_SPHERE_RADIUS = 0.02f; // Base radius in agent-space units. + constexpr float PULSE_AMPLITUDE = 0.005f; // Additional radius variation. constexpr float PULSE_FREQUENCY = 1.f; // Pulses per second. constexpr float PULSE_TIME_DOMAIN = 5.f; // Keep the time input small. @@ -128,10 +128,8 @@ static void renderPulsingSphere(const LLVector3& joint_world_position, const LLC } } -static void renderStaticSphere(const LLVector3& joint_world_position, const LLColor4& color = LLColor4(1.f, 1.f, 0.f, .6f), float radius=0.02f) +static void renderStaticSphere(const LLVector3& joint_world_position, const LLColor4& color = LLColor4(1.f, 1.f, 0.f, .6f), float radius=0.01f) { - constexpr float MAX_SPHERE_RADIUS = 0.05f; // Base radius in agent-space units. - LLGLSUIDefault gls_ui; gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep); LLGLDepthTest gls_depth(GL_TRUE); @@ -431,6 +429,7 @@ bool FSManipRotateJoint::updateVisiblity() if (!hasMouseCapture()) { mRotationCenter = gAgent.getPosGlobalFromAgent( mJoint->getWorldPosition() ); + mCamEdgeOn = false; } bool visible = false; @@ -469,13 +468,6 @@ bool FSManipRotateJoint::updateVisiblity() } } - mCamEdgeOn = false; - F32 axis_onto_cam = mManipPart >= LL_ROT_X ? llabs( getConstraintAxis() * mCenterToCamNorm ) : 0.f; - if (axis_onto_cam < AXIS_ONTO_CAM_TOLERANCE) - { - mCamEdgeOn = true; - } - return visible; } @@ -717,8 +709,9 @@ void FSManipRotateJoint::render() LLGLDepthTest gls_depth(GL_TRUE); LLGLEnable gl_blend(GL_BLEND); - // Optionally, if another joint is highlighted, render a pulsing sphere. - // Iterate through the avatar's joint map. + // Iterate through the avatar's joint map. + // If a joint other than the currently selected is highlighted, render a pulsing sphere. + // otherwise a small static sphere for (const auto& entry : getSelectableJoints()) { LLJoint* joint = mAvatar->getJoint(std::string(entry)); @@ -735,7 +728,11 @@ void FSManipRotateJoint::render() else if( joint != mJoint ) { // Render a static sphere for the joint being manipulated. - renderStaticSphere(joint->getWorldPosition(), LLColor4(1.f, 0.5f, 0.f, 0.5f), 0.01f); + LLCachedControl show_joint_markers(gSavedSettings, "FSManipShowJointMarkers", true); + if(show_joint_markers) + { + renderStaticSphere(joint->getWorldPosition(), LLColor4(1.f, 0.5f, 0.f, 0.5f), 0.01f); + } } } diff --git a/indra/newview/fspanelface.cpp b/indra/newview/fspanelface.cpp index ceb3b1194e..f860e2a343 100644 --- a/indra/newview/fspanelface.cpp +++ b/indra/newview/fspanelface.cpp @@ -33,6 +33,7 @@ #include "llagent.h" #include "llagentdata.h" +#include "llavatarappearancedefines.h" #include "llbutton.h" #include "llcalc.h" #include "llcheckboxctrl.h" @@ -6014,13 +6015,9 @@ void FSPanelFace::LLSelectedTE::getTexId(LLUUID& id, bool& identical) LLUUID get(LLViewerObject* object, S32 te_index) { LLTextureEntry *te = object->getTE(te_index); - if (te) + if (te && LLAvatarAppearanceDefines::LLAvatarAppearanceDictionary::isBakedImageId(te->getID())) { - if ((te->getID() == IMG_USE_BAKED_EYES) || (te->getID() == IMG_USE_BAKED_HAIR) || (te->getID() == IMG_USE_BAKED_HEAD) || (te->getID() == IMG_USE_BAKED_LOWER) || (te->getID() == IMG_USE_BAKED_SKIRT) || (te->getID() == IMG_USE_BAKED_UPPER) - || (te->getID() == IMG_USE_BAKED_LEFTARM) || (te->getID() == IMG_USE_BAKED_LEFTLEG) || (te->getID() == IMG_USE_BAKED_AUX1) || (te->getID() == IMG_USE_BAKED_AUX2) || (te->getID() == IMG_USE_BAKED_AUX3)) - { - return te->getID(); - } + return te->getID(); } LLUUID id; diff --git a/indra/newview/skins/default/xui/en/floater_fs_poser.xml b/indra/newview/skins/default/xui/en/floater_fs_poser.xml index ff73312c74..3810ffbc0f 100644 --- a/indra/newview/skins/default/xui/en/floater_fs_poser.xml +++ b/indra/newview/skins/default/xui/en/floater_fs_poser.xml @@ -952,16 +952,6 @@ width="430"> function="Poser.CommitSpinner" parameter="3"/> - tool_tip="When you save a pose, if the file already exists, you need to click the save button again to confirm you are sure you want to overwrite." top_pad="5" width="134" /> + +