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" />
+
+