diff options
| -rw-r--r-- | indra/newview/llpaneleditwearable.cpp | 548 | 
1 files changed, 274 insertions, 274 deletions
| diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp index 0103bf628a..21a175b72e 100644 --- a/indra/newview/llpaneleditwearable.cpp +++ b/indra/newview/llpaneleditwearable.cpp @@ -97,7 +97,7 @@ enum ESubpart {          SUBPART_SKIRT,          SUBPART_ALPHA,          SUBPART_TATTOO, -		SUBPART_UNIVERSAL, +        SUBPART_UNIVERSAL,          SUBPART_PHYSICS_BREASTS_UPDOWN,          SUBPART_PHYSICS_BREASTS_INOUT,          SUBPART_PHYSICS_BREASTS_LEFTRIGHT, @@ -120,7 +120,7 @@ class LLEditWearableDictionary : public LLSingleton<LLEditWearableDictionary>          //--------------------------------------------------------------------          LLSINGLETON(LLEditWearableDictionary);          virtual ~LLEditWearableDictionary(); -         +          //--------------------------------------------------------------------          // Wearable Types          //-------------------------------------------------------------------- @@ -214,7 +214,6 @@ public:  LLEditWearableDictionary::LLEditWearableDictionary()  { -  }  //virtual  @@ -227,23 +226,23 @@ LLEditWearableDictionary::Wearables::Wearables()          // note the subpart that is listed first is treated as "default", regardless of what order is in enum.          // Please match the order presented in XUI. -Nyx          // this will affect what camera angle is shown when first editing a wearable -        addEntry(LLWearableType::WT_SHAPE,              new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS})); -        addEntry(LLWearableType::WT_SKIN,               new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL})); -        addEntry(LLWearableType::WT_HAIR,               new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL})); -        addEntry(LLWearableType::WT_EYES,               new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES})); -        addEntry(LLWearableType::WT_SHIRT,              new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT})); -        addEntry(LLWearableType::WT_PANTS,              new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS})); -        addEntry(LLWearableType::WT_SHOES,              new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES})); -        addEntry(LLWearableType::WT_SOCKS,              new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS})); +        addEntry(LLWearableType::WT_SHAPE,      new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_SHAPE_WHOLE, SUBPART_SHAPE_HEAD,        SUBPART_SHAPE_EYES,     SUBPART_SHAPE_EARS,     SUBPART_SHAPE_NOSE,     SUBPART_SHAPE_MOUTH, SUBPART_SHAPE_CHIN, SUBPART_SHAPE_TORSO, SUBPART_SHAPE_LEGS})); +        addEntry(LLWearableType::WT_SKIN,       new WearableEntry(LLWearableType::WT_SKIN,"edit_skin_title","skin_desc_text", texture_vec_t(), texture_vec_t{TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT}, subpart_vec_t{SUBPART_SKIN_COLOR, SUBPART_SKIN_FACEDETAIL, SUBPART_SKIN_MAKEUP, SUBPART_SKIN_BODYDETAIL})); +        addEntry(LLWearableType::WT_HAIR,       new WearableEntry(LLWearableType::WT_HAIR,"edit_hair_title","hair_desc_text", texture_vec_t(), texture_vec_t{TEX_HAIR}, subpart_vec_t{SUBPART_HAIR_COLOR,       SUBPART_HAIR_STYLE,     SUBPART_HAIR_EYEBROWS, SUBPART_HAIR_FACIAL})); +        addEntry(LLWearableType::WT_EYES,       new WearableEntry(LLWearableType::WT_EYES,"edit_eyes_title","eyes_desc_text", texture_vec_t(), texture_vec_t{TEX_EYES_IRIS}, subpart_vec_t{SUBPART_EYES})); +        addEntry(LLWearableType::WT_SHIRT,      new WearableEntry(LLWearableType::WT_SHIRT,"edit_shirt_title","shirt_desc_text", texture_vec_t{TEX_UPPER_SHIRT}, texture_vec_t{TEX_UPPER_SHIRT}, subpart_vec_t{SUBPART_SHIRT})); +        addEntry(LLWearableType::WT_PANTS,      new WearableEntry(LLWearableType::WT_PANTS,"edit_pants_title","pants_desc_text", texture_vec_t{TEX_LOWER_PANTS}, texture_vec_t{TEX_LOWER_PANTS}, subpart_vec_t{SUBPART_PANTS})); +        addEntry(LLWearableType::WT_SHOES,      new WearableEntry(LLWearableType::WT_SHOES,"edit_shoes_title","shoes_desc_text", texture_vec_t{TEX_LOWER_SHOES}, texture_vec_t{TEX_LOWER_SHOES}, subpart_vec_t{SUBPART_SHOES})); +        addEntry(LLWearableType::WT_SOCKS,      new WearableEntry(LLWearableType::WT_SOCKS,"edit_socks_title","socks_desc_text", texture_vec_t{TEX_LOWER_SOCKS}, texture_vec_t{TEX_LOWER_SOCKS}, subpart_vec_t{SUBPART_SOCKS}));          addEntry(LLWearableType::WT_JACKET,     new WearableEntry(LLWearableType::WT_JACKET,"edit_jacket_title","jacket_desc_text", texture_vec_t{TEX_UPPER_JACKET}, texture_vec_t{TEX_UPPER_JACKET, TEX_LOWER_JACKET}, subpart_vec_t{SUBPART_JACKET}));          addEntry(LLWearableType::WT_GLOVES,     new WearableEntry(LLWearableType::WT_GLOVES,"edit_gloves_title","gloves_desc_text", texture_vec_t{TEX_UPPER_GLOVES}, texture_vec_t{TEX_UPPER_GLOVES}, subpart_vec_t{SUBPART_GLOVES}));          addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry(LLWearableType::WT_UNDERSHIRT,"edit_undershirt_title","undershirt_desc_text", texture_vec_t{TEX_UPPER_UNDERSHIRT}, texture_vec_t{TEX_UPPER_UNDERSHIRT}, subpart_vec_t{SUBPART_UNDERSHIRT}));          addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry(LLWearableType::WT_UNDERPANTS,"edit_underpants_title","underpants_desc_text", texture_vec_t{TEX_LOWER_UNDERPANTS}, texture_vec_t{TEX_LOWER_UNDERPANTS}, subpart_vec_t{SUBPART_UNDERPANTS})); -        addEntry(LLWearableType::WT_SKIRT,              new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT})); -        addEntry(LLWearableType::WT_ALPHA,              new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA})); +        addEntry(LLWearableType::WT_SKIRT,      new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text", texture_vec_t{TEX_SKIRT}, texture_vec_t{TEX_SKIRT}, subpart_vec_t{SUBPART_SKIRT})); +        addEntry(LLWearableType::WT_ALPHA,      new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text", texture_vec_t(), texture_vec_t{TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA}, subpart_vec_t{SUBPART_ALPHA}));          addEntry(LLWearableType::WT_TATTOO,     new WearableEntry(LLWearableType::WT_TATTOO,"edit_tattoo_title","tattoo_desc_text", texture_vec_t{TEX_HEAD_TATTOO}, texture_vec_t{TEX_LOWER_TATTOO, TEX_UPPER_TATTOO, TEX_HEAD_TATTOO}, subpart_vec_t{SUBPART_TATTOO})); -		addEntry(LLWearableType::WT_UNIVERSAL, new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL })); -		addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS,"edit_physics_title","physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED})); +        addEntry(LLWearableType::WT_UNIVERSAL,  new WearableEntry(LLWearableType::WT_UNIVERSAL, "edit_universal_title", "universal_desc_text", texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO }, texture_vec_t{ TEX_HEAD_UNIVERSAL_TATTOO, TEX_UPPER_UNIVERSAL_TATTOO, TEX_LOWER_UNIVERSAL_TATTOO, TEX_SKIRT_TATTOO, TEX_HAIR_TATTOO, TEX_EYES_TATTOO, TEX_LEFT_ARM_TATTOO, TEX_LEFT_LEG_TATTOO, TEX_AUX1_TATTOO, TEX_AUX2_TATTOO, TEX_AUX3_TATTOO }, subpart_vec_t{ SUBPART_UNIVERSAL })); +        addEntry(LLWearableType::WT_PHYSICS,    new WearableEntry(LLWearableType::WT_PHYSICS, "edit_physics_title", "physics_desc_text", texture_vec_t(), texture_vec_t(), subpart_vec_t{ SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BREASTS_LEFTRIGHT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED }));  }  LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType type, @@ -259,52 +258,59 @@ LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType typ          mSubparts(subparts),          mColorSwatchCtrls(color_swatches),          mTextureCtrls(texture_pickers) -{} +{ +}  LLEditWearableDictionary::Subparts::Subparts()  { -        addEntry(SUBPART_SHAPE_WHOLE, new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_HEAD, new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_EYES, new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_EARS, new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_NOSE, new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_MOUTH, new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_CHIN, new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_TORSO, new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_SHAPE_LEGS, new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); - -        addEntry(SUBPART_SKIN_COLOR, new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        // WT_SHAPE +        addEntry(SUBPART_SHAPE_WHOLE,     new SubpartEntry(SUBPART_SHAPE_WHOLE, "mPelvis", "shape_body","shape_body_param_list", "shape_body_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_HEAD,      new SubpartEntry(SUBPART_SHAPE_HEAD, "mHead", "shape_head", "shape_head_param_list", "shape_head_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_EYES,      new SubpartEntry(SUBPART_SHAPE_EYES, "mHead", "shape_eyes", "shape_eyes_param_list", "shape_eyes_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_EARS,      new SubpartEntry(SUBPART_SHAPE_EARS, "mHead", "shape_ears", "shape_ears_param_list", "shape_ears_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_NOSE,      new SubpartEntry(SUBPART_SHAPE_NOSE, "mHead", "shape_nose", "shape_nose_param_list", "shape_nose_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_MOUTH,     new SubpartEntry(SUBPART_SHAPE_MOUTH, "mHead", "shape_mouth", "shape_mouth_param_list", "shape_mouth_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_CHIN,      new SubpartEntry(SUBPART_SHAPE_CHIN, "mHead", "shape_chin", "shape_chin_param_list", "shape_chin_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_TORSO,     new SubpartEntry(SUBPART_SHAPE_TORSO, "mTorso", "shape_torso", "shape_torso_param_list", "shape_torso_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_SHAPE_LEGS,      new SubpartEntry(SUBPART_SHAPE_LEGS, "mPelvis", "shape_legs", "shape_legs_param_list", "shape_legs_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); + +        // WT_SKIN +        addEntry(SUBPART_SKIN_COLOR,      new SubpartEntry(SUBPART_SKIN_COLOR, "mHead", "skin_color", "skin_color_param_list", "skin_color_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));          addEntry(SUBPART_SKIN_FACEDETAIL, new SubpartEntry(SUBPART_SKIN_FACEDETAIL, "mHead", "skin_facedetail", "skin_face_param_list", "skin_face_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_SKIN_MAKEUP, new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_SKIN_MAKEUP,     new SubpartEntry(SUBPART_SKIN_MAKEUP, "mHead", "skin_makeup", "skin_makeup_param_list", "skin_makeup_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH));          addEntry(SUBPART_SKIN_BODYDETAIL, new SubpartEntry(SUBPART_SKIN_BODYDETAIL, "mPelvis", "skin_bodydetail", "skin_body_param_list", "skin_body_tab", LLVector3d(0.f, 0.f, -0.2f), LLVector3d(-2.5f, 0.5f, 0.5f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_COLOR, new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_STYLE, new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_EYEBROWS, new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); -        addEntry(SUBPART_HAIR_FACIAL, new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE)); - -        addEntry(SUBPART_EYES, new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); - -        addEntry(SUBPART_SHIRT, new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_PANTS, new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_SHOES, new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_SOCKS, new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_JACKET, new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_SKIRT, new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_GLOVES, new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_UNDERSHIRT, new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); -        addEntry(SUBPART_UNDERPANTS, new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); -        addEntry(SUBPART_ALPHA, new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "alpha_main_param_list", "alpha_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -        addEntry(SUBPART_TATTOO, new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "tattoo_main_param_list", "tattoo_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); -		addEntry(SUBPART_UNIVERSAL, new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "universal_main_param_list", "universal_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH)); - -		addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); -        addEntry(SUBPART_PHYSICS_BREASTS_INOUT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); +        // WT_HAIR +        addEntry(SUBPART_HAIR_COLOR,      new SubpartEntry(SUBPART_HAIR_COLOR, "mHead", "hair_color", "hair_color_param_list", "hair_color_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f),SEX_BOTH)); +        addEntry(SUBPART_HAIR_STYLE,      new SubpartEntry(SUBPART_HAIR_STYLE, "mHead", "hair_style", "hair_style_param_list", "hair_style_tab", LLVector3d(0.f, 0.f, 0.10f), LLVector3d(-0.4f, 0.05f, 0.10f), SEX_BOTH)); +        addEntry(SUBPART_HAIR_EYEBROWS,   new SubpartEntry(SUBPART_HAIR_EYEBROWS, "mHead", "hair_eyebrows", "hair_eyebrows_param_list", "hair_eyebrows_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); +        addEntry(SUBPART_HAIR_FACIAL,     new SubpartEntry(SUBPART_HAIR_FACIAL, "mHead", "hair_facial", "hair_facial_param_list", "hair_facial_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_MALE)); + +        // WT_EYES +        addEntry(SUBPART_EYES,            new SubpartEntry(SUBPART_EYES, "mHead", "eyes", "eyes_main_param_list", "eyes_main_tab", LLVector3d(0.f, 0.f, 0.05f), LLVector3d(-0.5f, 0.05f, 0.07f),SEX_BOTH)); + +        // WT_SHIRT, WT_PANTS, WT_SHOES, WT_SOCKS, WT_JACKET, WT_GLOVES, WT_UNDERSHIRT, WT_UNDERPANTS, WT_SKIRT, WT_ALPHA, WT_TATTOO, WT_UNIVERSAL +        addEntry(SUBPART_SHIRT,           new SubpartEntry(SUBPART_SHIRT, "mTorso", "shirt", "shirt_main_param_list", "shirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_PANTS,           new SubpartEntry(SUBPART_PANTS, "mPelvis", "pants", "pants_main_param_list", "pants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SHOES,           new SubpartEntry(SUBPART_SHOES, "mPelvis", "shoes", "shoes_main_param_list", "shoes_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SOCKS,           new SubpartEntry(SUBPART_SOCKS, "mPelvis", "socks", "socks_main_param_list", "socks_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_JACKET,          new SubpartEntry(SUBPART_JACKET, "mTorso", "jacket", "jacket_main_param_list", "jacket_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-2.f, 0.1f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_GLOVES,          new SubpartEntry(SUBPART_GLOVES, "mTorso", "gloves", "gloves_main_param_list", "gloves_main_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(-1.f, 0.15f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_UNDERSHIRT,      new SubpartEntry(SUBPART_UNDERSHIRT, "mTorso", "undershirt", "undershirt_main_param_list", "undershirt_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_BOTH)); +        addEntry(SUBPART_UNDERPANTS,      new SubpartEntry(SUBPART_UNDERPANTS, "mPelvis", "underpants", "underpants_main_param_list", "underpants_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_SKIRT,           new SubpartEntry(SUBPART_SKIRT, "mPelvis", "skirt", "skirt_main_param_list", "skirt_main_tab", LLVector3d(0.f, 0.f, -0.5f), LLVector3d(-1.6f, 0.15f, -0.5f),SEX_BOTH)); +        addEntry(SUBPART_ALPHA,           new SubpartEntry(SUBPART_ALPHA, "mPelvis", "alpha", "alpha_main_param_list", "alpha_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_TATTOO,          new SubpartEntry(SUBPART_TATTOO, "mPelvis", "tattoo", "tattoo_main_param_list", "tattoo_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f),SEX_BOTH)); +        addEntry(SUBPART_UNIVERSAL,       new SubpartEntry(SUBPART_UNIVERSAL, "mPelvis", "universal", "universal_main_param_list", "universal_main_tab", LLVector3d(0.f, 0.f, 0.1f), LLVector3d(-2.5f, 0.5f, 0.8f), SEX_BOTH)); + +        // WT_PHYSICS +        addEntry(SUBPART_PHYSICS_BREASTS_UPDOWN,    new SubpartEntry(SUBPART_PHYSICS_BREASTS_UPDOWN, "mTorso", "physics_breasts_updown", "physics_breasts_updown_param_list", "physics_breasts_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f), SEX_FEMALE)); +        addEntry(SUBPART_PHYSICS_BREASTS_INOUT,     new SubpartEntry(SUBPART_PHYSICS_BREASTS_INOUT, "mTorso", "physics_breasts_inout", "physics_breasts_inout_param_list", "physics_breasts_inout_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE));          addEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BREASTS_LEFTRIGHT, "mTorso", "physics_breasts_leftright", "physics_breasts_leftright_param_list", "physics_breasts_leftright_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_FEMALE)); -        addEntry(SUBPART_PHYSICS_BELLY_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_BUTT_UPDOWN, new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); -        addEntry(SUBPART_PHYSICS_ADVANCED, new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BELLY_UPDOWN,      new SubpartEntry(SUBPART_PHYSICS_BELLY_UPDOWN, "mTorso", "physics_belly_updown", "physics_belly_updown_param_list", "physics_belly_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BUTT_UPDOWN,       new SubpartEntry(SUBPART_PHYSICS_BUTT_UPDOWN, "mTorso", "physics_butt_updown", "physics_butt_updown_param_list", "physics_butt_updown_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT,    new SubpartEntry(SUBPART_PHYSICS_BUTT_LEFTRIGHT, "mTorso", "physics_butt_leftright", "physics_butt_leftright_param_list", "physics_butt_leftright_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH)); +        addEntry(SUBPART_PHYSICS_ADVANCED,          new SubpartEntry(SUBPART_PHYSICS_ADVANCED, "mTorso", "physics_advanced", "physics_advanced_param_list", "physics_advanced_tab", LLVector3d(0.f, 0.f, 0.f), LLVector3d(0.f, 0.f, 0.f),SEX_BOTH));  }  LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part, @@ -329,55 +335,55 @@ LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,  LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls()  { -        addEntry ( TEX_UPPER_SHIRT,  new PickerControlEntry (TEX_UPPER_SHIRT, "Color/Tint" )); -        addEntry ( TEX_LOWER_PANTS,  new PickerControlEntry (TEX_LOWER_PANTS, "Color/Tint" )); -        addEntry ( TEX_LOWER_SHOES,  new PickerControlEntry (TEX_LOWER_SHOES, "Color/Tint" )); -        addEntry ( TEX_LOWER_SOCKS,  new PickerControlEntry (TEX_LOWER_SOCKS, "Color/Tint" )); -        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Color/Tint" )); -        addEntry ( TEX_SKIRT,  new PickerControlEntry (TEX_SKIRT, "Color/Tint" )); -        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Color/Tint" )); -        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Color/Tint" )); -        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Color/Tint" )); -        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint" )); -		addEntry (TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint")); +        addEntry(TEX_UPPER_SHIRT, new PickerControlEntry(TEX_UPPER_SHIRT, "Color/Tint")); +        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Color/Tint")); +        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Color/Tint")); +        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Color/Tint")); +        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Color/Tint")); +        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Color/Tint")); +        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Color/Tint")); +        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Color/Tint")); +        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Color/Tint")); +        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Color/Tint")); +        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Color/Tint"));  }  LLEditWearableDictionary::TextureCtrls::TextureCtrls()  { -        addEntry ( TEX_HEAD_BODYPAINT,  new PickerControlEntry (TEX_HEAD_BODYPAINT,  "Head", LLUUID::null, TRUE )); -        addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE )); -        addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE )); -        addEntry ( TEX_HAIR, new PickerControlEntry (TEX_HAIR, "Texture", LLUUID( gSavedSettings.getString( "UIImgDefaultHairUUID" ) ), FALSE )); -        addEntry ( TEX_EYES_IRIS, new PickerControlEntry (TEX_EYES_IRIS, "Iris", LLUUID( gSavedSettings.getString( "UIImgDefaultEyesUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_SHIRT, new PickerControlEntry (TEX_UPPER_SHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShirtUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_PANTS, new PickerControlEntry (TEX_LOWER_PANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultPantsUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_SHOES, new PickerControlEntry (TEX_LOWER_SHOES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShoesUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_SOCKS, new PickerControlEntry (TEX_LOWER_SOCKS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSocksUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_JACKET, new PickerControlEntry (TEX_UPPER_JACKET, "Upper Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_JACKET, new PickerControlEntry (TEX_LOWER_JACKET, "Lower Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultJacketUUID" ) ), FALSE )); -        addEntry ( TEX_SKIRT, new PickerControlEntry (TEX_SKIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultSkirtUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_GLOVES, new PickerControlEntry (TEX_UPPER_GLOVES, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultGlovesUUID" ) ), FALSE )); -        addEntry ( TEX_UPPER_UNDERSHIRT, new PickerControlEntry (TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_UNDERPANTS, new PickerControlEntry (TEX_LOWER_UNDERPANTS, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultUnderwearUUID" ) ), FALSE )); -        addEntry ( TEX_LOWER_ALPHA, new PickerControlEntry (TEX_LOWER_ALPHA, "Lower Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_UPPER_ALPHA, new PickerControlEntry (TEX_UPPER_ALPHA, "Upper Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_HEAD_ALPHA, new PickerControlEntry (TEX_HEAD_ALPHA, "Head Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_EYES_ALPHA, new PickerControlEntry (TEX_EYES_ALPHA, "Eye Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_HAIR_ALPHA, new PickerControlEntry (TEX_HAIR_ALPHA, "Hair Alpha", LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) ), TRUE )); -        addEntry ( TEX_LOWER_TATTOO, new PickerControlEntry (TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE )); -        addEntry ( TEX_UPPER_TATTOO, new PickerControlEntry (TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE )); -        addEntry ( TEX_HEAD_TATTOO, new PickerControlEntry (TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE )); -		addEntry ( TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry( TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE)); -		addEntry ( TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE)); -		addEntry (TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_BODYPAINT, new PickerControlEntry(TEX_HEAD_BODYPAINT, "Head", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_BODYPAINT, new PickerControlEntry(TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE)); +        addEntry(TEX_LOWER_BODYPAINT, new PickerControlEntry(TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE)); +        addEntry(TEX_HAIR, new PickerControlEntry(TEX_HAIR, "Texture", LLUUID(gSavedSettings.getString("UIImgDefaultHairUUID")), FALSE)); +        addEntry(TEX_EYES_IRIS, new PickerControlEntry(TEX_EYES_IRIS, "Iris", LLUUID(gSavedSettings.getString("UIImgDefaultEyesUUID")), FALSE)); +        addEntry(TEX_UPPER_SHIRT, new PickerControlEntry(TEX_UPPER_SHIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultShirtUUID")), FALSE)); +        addEntry(TEX_LOWER_PANTS, new PickerControlEntry(TEX_LOWER_PANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultPantsUUID")), FALSE)); +        addEntry(TEX_LOWER_SHOES, new PickerControlEntry(TEX_LOWER_SHOES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultShoesUUID")), FALSE)); +        addEntry(TEX_LOWER_SOCKS, new PickerControlEntry(TEX_LOWER_SOCKS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSocksUUID")), FALSE)); +        addEntry(TEX_UPPER_JACKET, new PickerControlEntry(TEX_UPPER_JACKET, "Upper Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE)); +        addEntry(TEX_LOWER_JACKET, new PickerControlEntry(TEX_LOWER_JACKET, "Lower Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultJacketUUID")), FALSE)); +        addEntry(TEX_SKIRT, new PickerControlEntry(TEX_SKIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultSkirtUUID")), FALSE)); +        addEntry(TEX_UPPER_GLOVES, new PickerControlEntry(TEX_UPPER_GLOVES, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultGlovesUUID")), FALSE)); +        addEntry(TEX_UPPER_UNDERSHIRT, new PickerControlEntry(TEX_UPPER_UNDERSHIRT, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE)); +        addEntry(TEX_LOWER_UNDERPANTS, new PickerControlEntry(TEX_LOWER_UNDERPANTS, "Fabric", LLUUID(gSavedSettings.getString("UIImgDefaultUnderwearUUID")), FALSE)); +        addEntry(TEX_LOWER_ALPHA, new PickerControlEntry(TEX_LOWER_ALPHA, "Lower Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_UPPER_ALPHA, new PickerControlEntry(TEX_UPPER_ALPHA, "Upper Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_HEAD_ALPHA, new PickerControlEntry(TEX_HEAD_ALPHA, "Head Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_EYES_ALPHA, new PickerControlEntry(TEX_EYES_ALPHA, "Eye Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_HAIR_ALPHA, new PickerControlEntry(TEX_HAIR_ALPHA, "Hair Alpha", LLUUID(gSavedSettings.getString("UIImgDefaultAlphaUUID")), TRUE)); +        addEntry(TEX_LOWER_TATTOO, new PickerControlEntry(TEX_LOWER_TATTOO, "Lower Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_TATTOO, new PickerControlEntry(TEX_UPPER_TATTOO, "Upper Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_TATTOO, new PickerControlEntry(TEX_HEAD_TATTOO, "Head Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LOWER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_LOWER_UNIVERSAL_TATTOO, "Lower Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_UPPER_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_UPPER_UNIVERSAL_TATTOO, "Upper Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HEAD_UNIVERSAL_TATTOO, new PickerControlEntry(TEX_HEAD_UNIVERSAL_TATTOO, "Head Universal Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_SKIRT_TATTOO, new PickerControlEntry(TEX_SKIRT_TATTOO, "Skirt Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_HAIR_TATTOO, new PickerControlEntry(TEX_HAIR_TATTOO, "Hair Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_EYES_TATTOO, new PickerControlEntry(TEX_EYES_TATTOO, "Eyes Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LEFT_ARM_TATTOO, new PickerControlEntry(TEX_LEFT_ARM_TATTOO, "Left Arm Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_LEFT_LEG_TATTOO, new PickerControlEntry(TEX_LEFT_LEG_TATTOO, "Left Leg Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX1_TATTOO, new PickerControlEntry(TEX_AUX1_TATTOO, "Aux1 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX2_TATTOO, new PickerControlEntry(TEX_AUX2_TATTOO, "Aux2 Tattoo", LLUUID::null, TRUE)); +        addEntry(TEX_AUX3_TATTOO, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE));  }  LLEditWearableDictionary::PickerControlEntry::PickerControlEntry(ETextureIndex tex_index, @@ -490,8 +496,8 @@ template <typename CtrlType, class Predicate>  const LLEditWearableDictionary::PickerControlEntry*  find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)  { -        const LLEditWearableDictionary::WearableEntry *wearable_entry -                = LLEditWearableDictionary::getInstance()->getWearable(type); +        const LLEditWearableDictionary::WearableEntry *wearable_entry = +                LLEditWearableDictionary::getInstance()->getWearable(type);          if (!wearable_entry)          {                  LL_WARNS() << "could not get wearable dictionary entry for wearable of type: " << type << LL_ENDL; @@ -520,8 +526,7 @@ find_picker_ctrl_entry_if(LLWearableType::EType type, const Predicate pred)  }  template <typename CtrlType> -void -for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun) +void for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_t fun)  {          if (!panel)          { @@ -542,14 +547,13 @@ for_each_picker_ctrl_entry(LLPanel* panel, LLWearableType::EType type, function_                   iter != iter_end; ++iter)          {                  const ETextureIndex te = *iter; -                const LLEditWearableDictionary::PickerControlEntry*     entry -                        = get_picker_entry<CtrlType>(te); +                const LLEditWearableDictionary::PickerControlEntry* entry = get_picker_entry<CtrlType>(te);                  if (!entry)                  {                          LL_WARNS() << "could not get picker dictionary entry (" << te << ") for wearable of type: " << type << LL_ENDL;                          continue;                  } -                fun (panel, entry); +                fun(panel, entry);          }  } @@ -595,7 +599,7 @@ static void update_texture_ctrl(LLPanelEditWearable* self, LLPanel* panel, const          {                  LLUUID new_id;                  LLLocalTextureObject *lto = self->getWearable()->getLocalTextureObject(entry->mTextureIndex); -                if( lto && (lto->getID() != IMG_DEFAULT_AVATAR) ) +                if (lto && (lto->getID() != IMG_DEFAULT_AVATAR))                  {                          new_id = lto->getID();                  } @@ -645,7 +649,6 @@ LLPanelEditWearable::LLPanelEditWearable()  //virtual  LLPanelEditWearable::~LLPanelEditWearable()  { -  }  bool LLPanelEditWearable::changeHeightUnits(const LLSD& new_value) @@ -755,7 +758,7 @@ BOOL LLPanelEditWearable::postBuild()          mPanelSkirt = getChild<LLPanel>("edit_skirt_panel");          mPanelAlpha = getChild<LLPanel>("edit_alpha_panel");          mPanelTattoo = getChild<LLPanel>("edit_tattoo_panel"); -		mPanelUniversal = getChild<LLPanel>("edit_universal_panel"); +        mPanelUniversal = getChild<LLPanel>("edit_universal_panel");          mPanelPhysics = getChild<LLPanel>("edit_physics_panel");          mTxtAvatarHeight = mPanelShape->getChild<LLTextBox>("avatar_height"); @@ -779,29 +782,27 @@ BOOL LLPanelEditWearable::postBuild()                          continue;                  }                  U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); -         +                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need                          ESubpart subpart_e = wearable_entry->mSubparts[index];                          const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); -         +                          if (!subpart_entry)                          {                                  LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;                                  continue;                          } -         +                          const std::string accordion_tab = subpart_entry->mAccordionTab; -                                  LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); -                                  if (!tab)                          {                                  LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;                                  continue;                          } -         +                          // initialize callback to ensure camera view changes appropriately.                          tab->setDropDownStateChangedCallback(boost::bind(&LLPanelEditWearable::onTabExpandedCollapsed,this,_2,index));                  } @@ -835,14 +836,16 @@ BOOL LLPanelEditWearable::isDirty() const          BOOL isDirty = FALSE;          if (mWearablePtr)          { -			if (mWearablePtr->isDirty() || -				( mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0 )) -			{ -				isDirty = TRUE; -			} +                if (mWearablePtr->isDirty() || +                        (mWearableItem && mNameEditor && mWearableItem->getName().compare(mNameEditor->getText()) != 0)) +                { +                        isDirty = TRUE; +                }          }          return isDirty;  } + +  //virtual  void LLPanelEditWearable::draw()  { @@ -858,8 +861,8 @@ void LLPanelEditWearable::draw()  void LLPanelEditWearable::onClose()  { -	// any unsaved changes should be reverted at this point -	revertChanges(); +        // any unsaved changes should be reverted at this point +        revertChanges();  }  void LLPanelEditWearable::setVisible(BOOL visible) @@ -881,11 +884,11 @@ void LLPanelEditWearable::setWearable(LLViewerWearable *wearable, BOOL disable_c  //static   void LLPanelEditWearable::onBackButtonClicked(void* userdata)  { -    LLPanelEditWearable *panel = (LLPanelEditWearable*) userdata; -	if ( panel->isDirty() ) -	{ -		LLAppearanceMgr::instance().setOutfitDirty( true );		 -	} +        LLPanelEditWearable* panel = (LLPanelEditWearable*)userdata; +        if (panel->isDirty()) +        { +                LLAppearanceMgr::instance().setOutfitDirty(true); +        }  }  //static  @@ -910,7 +913,7 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r          {                  std::string wearable_name = response["message"].asString();                  LLStringUtil::trim(wearable_name); -                if( !wearable_name.empty() ) +                if (!wearable_name.empty())                  {                          mNameEditor->setText(wearable_name);                          saveChanges(true); @@ -920,24 +923,27 @@ void LLPanelEditWearable::saveAsCallback(const LLSD& notification, const LLSD& r  void LLPanelEditWearable::onCommitSexChange()  { -        if (!isAgentAvatarValid()) return; +        if (!isAgentAvatarValid()) +        { +                return; +        }          LLWearableType::EType type = mWearablePtr->getType();          U32 index; -        if( !gAgentWearables.getWearableIndex(mWearablePtr, index) || -			!gAgentWearables.isWearableModifiable(type, index)) +        if (!gAgentWearables.getWearableIndex(mWearablePtr, index) || +                !gAgentWearables.isWearableModifiable(type, index))          { -			return; +                return;          }          LLViewerVisualParam* param = static_cast<LLViewerVisualParam*>(gAgentAvatarp->getVisualParam( "male" )); -        if( !param ) +        if (!param)          { -			return; +                return;          }          bool is_new_sex_male = (gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE) == SEX_MALE; -        LLViewerWearable*     wearable = gAgentWearables.getViewerWearable(type, index); +        LLViewerWearable* wearable = gAgentWearables.getViewerWearable(type, index);          if (wearable)          {                  wearable->setVisualParamWeight(param->getID(), is_new_sex_male); @@ -970,23 +976,23 @@ void LLPanelEditWearable::onTexturePickerCommit(const LLUICtrl* ctrl)                  {                          // Set the new version                          LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(texture_ctrl->getImageAssetID()); -                        if( image->getID() == IMG_DEFAULT ) +                        if (image->getID() == IMG_DEFAULT)                          {                                  image = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR);                          }                          if (getWearable())                          { -							U32 index; -							if (gAgentWearables.getWearableIndex(getWearable(), index)) -							{ -								gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); -								LLVisualParamHint::requestHintUpdates(); -								gAgentAvatarp->wearableUpdated(type); -							} -							else -							{ -								LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL; -							} +                                U32 index; +                                if (gAgentWearables.getWearableIndex(getWearable(), index)) +                                { +                                        gAgentAvatarp->setLocalTexture(entry->mTextureIndex, image, FALSE, index); +                                        LLVisualParamHint::requestHintUpdates(); +                                        gAgentAvatarp->wearableUpdated(type); +                                } +                                else +                                { +                                        LL_WARNS() << "wearable not found in gAgentWearables" << LL_ENDL; +                                }                          }                  }                  else @@ -1002,13 +1008,13 @@ void LLPanelEditWearable::onColorSwatchCommit(const LLUICtrl* ctrl)          {                  LLWearableType::EType type = getWearable()->getType();                  const PickerControlEntryNamePredicate name_pred(ctrl->getName()); -                const LLEditWearableDictionary::PickerControlEntry* entry -                        = find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred); +                const LLEditWearableDictionary::PickerControlEntry* entry = +                        find_picker_ctrl_entry_if<LLColorSwatchCtrl, PickerControlEntryNamePredicate>(type, name_pred);                  if (entry)                  {                          const LLColor4& old_color = getWearable()->getClothesColor(entry->mTextureIndex);                          const LLColor4& new_color = LLColor4(ctrl->getValue()); -                        if( old_color != new_color ) +                        if (old_color != new_color)                          {                                  getWearable()->setClothesColor(entry->mTextureIndex, new_color);                                  LLVisualParamHint::requestHintUpdates(); @@ -1026,11 +1032,13 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  {          LLPanel* panel = getPanel(type);          if (!panel) +        {                  return; +        }          bool is_modifiable = false; -        if(mWearableItem) +        if (mWearableItem)          {                  const LLPermissions& perm = mWearableItem->getPermissions();                  is_modifiable = perm.allowModifyBy(gAgent.getID(), gAgent.getGroupID()); @@ -1052,7 +1060,6 @@ void LLPanelEditWearable::updatePanelPickerControls(LLWearableType::EType type)  void LLPanelEditWearable::incrementCofVersionLegacy()  { -  }  void LLPanelEditWearable::saveChanges(bool force_save_as) @@ -1064,59 +1071,57 @@ void LLPanelEditWearable::saveChanges(bool force_save_as)          }          U32 index; -		if (!gAgentWearables.getWearableIndex(mWearablePtr, index)) -		{ -			LL_WARNS() << "wearable not found" << LL_ENDL; -			return; -		} +        if (!gAgentWearables.getWearableIndex(mWearablePtr, index)) +        { +                LL_WARNS() << "wearable not found" << LL_ENDL; +                return; +        }          std::string new_name = mNameEditor->getText(); -		// Find an existing link to this wearable's inventory item, if any, and its description field. -		LLInventoryItem *link_item = NULL; -		std::string description; -		LLInventoryModel::item_array_t links = -			LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID()); -		if (links.size()>0) -		{ -			link_item = links.at(0).get(); -			if (link_item && link_item->getIsLinkType()) -			{ -				description = link_item->getActualDescription(); -			} -		} +        // Find an existing link to this wearable's inventory item, if any, and its description field. +        LLInventoryItem* link_item = NULL; +        std::string description; +        LLInventoryModel::item_array_t links = +                LLAppearanceMgr::instance().findCOFItemLinks(mWearablePtr->getItemID()); +        if (links.size() > 0) +        { +                link_item = links.at(0).get(); +                if (link_item && link_item->getIsLinkType()) +                { +                        description = link_item->getActualDescription(); +                } +        }          if (force_save_as)          { -			// the name of the wearable has changed, re-save wearable with new name -			LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(),gAgentAvatarp->mEndCustomizeCallback); -			gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE); -			mNameEditor->setText(mWearableItem->getName()); +                // the name of the wearable has changed, re-save wearable with new name +                LLAppearanceMgr::instance().removeCOFItemLinks(mWearablePtr->getItemID(), gAgentAvatarp->mEndCustomizeCallback); +                gAgentWearables.saveWearableAs(mWearablePtr->getType(), index, new_name, description, FALSE); +                mNameEditor->setText(mWearableItem->getName());          }          else          { -			// Make another copy of this link, with the same -			// description.  This is needed to bump the COF -			// version so texture baking service knows appearance has changed. -			if (link_item) -			{ -				// Create new link -				LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID() -									<< " removing old link at " << link_item->getUUID() -									<< " wearable item id " << mWearablePtr->getItemID() << LL_ENDL; - -				LLInventoryObject::const_object_list_t obj_array; -				obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item)); -				link_inventory_array(LLAppearanceMgr::instance().getCOF(), -									 obj_array,  -									 gAgentAvatarp->mEndCustomizeCallback); -				// Remove old link -				remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback); -			} -			gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name); -        } - -	 +                // Make another copy of this link, with the same +                // description.  This is needed to bump the COF +                // version so texture baking service knows appearance has changed. +                if (link_item) +                { +                        // Create new link +                        LL_DEBUGS("Avatar") << "link refresh, creating new link to " << link_item->getLinkedUUID() +                                << " removing old link at " << link_item->getUUID() +                                << " wearable item id " << mWearablePtr->getItemID() << LL_ENDL; + +                        LLInventoryObject::const_object_list_t obj_array; +                        obj_array.push_back(LLConstPointer<LLInventoryObject>(link_item)); +                        link_inventory_array(LLAppearanceMgr::instance().getCOF(), +                                obj_array, +                                gAgentAvatarp->mEndCustomizeCallback); +                        // Remove old link +                        remove_inventory_item(link_item->getUUID(), gAgentAvatarp->mEndCustomizeCallback); +                } +                gAgentWearables.saveWearable(mWearablePtr->getType(), index, new_name); +        }  }  void LLPanelEditWearable::revertChanges() @@ -1166,15 +1171,15 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO          targetPanel->setVisible(show);          toggleTypeSpecificControls(type); -		// Update type controls here -		updateTypeSpecificControls(type); +        // Update type controls here +        updateTypeSpecificControls(type);          if (show)          {                  mPanelTitle->setText(title);                  mPanelTitle->setToolTip(title);                  mDescTitle->setText(description_title); -                 +                  // set name                  mNameEditor->setText(mWearableItem->getName()); @@ -1182,51 +1187,51 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO                  // clear and rebuild visual param list                  U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); -         +                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need                          ESubpart subpart_e = wearable_entry->mSubparts[index];                          const LLEditWearableDictionary::SubpartEntry *subpart_entry = LLEditWearableDictionary::getInstance()->getSubpart(subpart_e); -         +                          if (!subpart_entry)                          {                                  LL_WARNS() << "could not get wearable subpart dictionary entry for subpart: " << subpart_e << LL_ENDL;                                  continue;                          } -         +                          const std::string scrolling_panel = subpart_entry->mParamList;                          const std::string accordion_tab = subpart_entry->mAccordionTab; -         +                          LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel);                          LLAccordionCtrlTab *tab = getChild<LLAccordionCtrlTab>(accordion_tab); -			 +                          if (!panel_list)                          {                                  LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;                                  continue;                          } -         +                          if (!tab)                          {                                  LL_WARNS() << "could not get llaccordionctrltab from UI with name: " << accordion_tab << LL_ENDL;                                  continue;                          } -			// Don't show female subparts if you're not female, etc. -			if (!(gAgentAvatarp->getSex() & subpart_entry->mSex)) -			{ -				tab->setVisible(FALSE); -				continue; -			} -			else -			{ -				tab->setVisible(TRUE); -			} -			 +                        // Don't show female subparts if you're not female, etc. +                        if (!(gAgentAvatarp->getSex() & subpart_entry->mSex)) +                        { +                                tab->setVisible(FALSE); +                                continue; +                        } +                        else +                        { +                                tab->setVisible(TRUE); +                        } +                          // what edit group do we want to extract params for?                          const std::string edit_group = subpart_entry->mEditGroup; -         +                          // storage for ordered list of visual params                          value_map_t sorted_params;                          getSortedParams(sorted_params, edit_group); @@ -1238,9 +1243,10 @@ void LLPanelEditWearable::showWearable(LLViewerWearable* wearable, BOOL show, BO                          }                          buildParamList(panel_list, sorted_params, tab, jointp); -         +                          updateScrollingPanelUI();                  } +                  if (!disable_camera_switch)                  {                          showDefaultSubpart(); @@ -1269,17 +1275,17 @@ void LLPanelEditWearable::onTabExpandedCollapsed(const LLSD& param, U8 index)          {                  changeCamera(index);          } -  }  void LLPanelEditWearable::changeCamera(U8 subpart)  { -	// Don't change the camera if this type doesn't have a camera switch. -	// Useful for wearables like physics that don't have an associated physical body part. -	if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType())) -	{ -		return; -	} +        // Don't change the camera if this type doesn't have a camera switch. +        // Useful for wearables like physics that don't have an associated physical body part. +        if (LLWearableType::getInstance()->getDisableCameraSwitch(mWearablePtr->getType())) +        { +                return; +        } +          const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(mWearablePtr->getType());          if (!wearable_entry)          { @@ -1308,9 +1314,9 @@ void LLPanelEditWearable::changeCamera(U8 subpart)          gMorphView->setCameraOffset( subpart_entry->mCameraOffset );          if (gSavedSettings.getBOOL("AppearanceCameraMovement"))          { -            // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE -            gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating()); -            gMorphView->updateCamera(); +                // Unlock focus from avatar but don't stop animation to not interrupt ANIM_AGENT_CUSTOMIZE +                gAgentCamera.setFocusOnAvatar(FALSE, gAgentCamera.getCameraAnimating()); +                gMorphView->updateCamera();          }  } @@ -1369,14 +1375,18 @@ void LLPanelEditWearable::updateScrollingPanelUI()          LLWearableType::EType type = mWearablePtr->getType();          LLPanel *panel = getPanel(type); -        if(panel && (mWearablePtr->getItemID().notNull())) +        if (panel && (mWearablePtr->getItemID().notNull()))          {                  const LLEditWearableDictionary::WearableEntry *wearable_entry = LLEditWearableDictionary::getInstance()->getWearable(type);                  llassert(wearable_entry); -                if (!wearable_entry) return; -                U8 num_subparts = (U8)(wearable_entry->mSubparts.size()); +                if (!wearable_entry) +                { +                        return; +                }                  LLScrollingPanelParam::sUpdateDelayFrames = 0; + +                U8 num_subparts = (U8)(wearable_entry->mSubparts.size());                  for (U8 index = 0; index < num_subparts; ++index)                  {                          // dive into data structures to get the panel we need @@ -1386,13 +1396,13 @@ void LLPanelEditWearable::updateScrollingPanelUI()                          const std::string scrolling_panel = subpart_entry->mParamList;                          LLScrollingPanelList *panel_list = getChild<LLScrollingPanelList>(scrolling_panel); -         +                          if (!panel_list)                          {                                  LL_WARNS() << "could not get scrolling panel list: " << scrolling_panel << LL_ENDL;                                  continue;                          } -                         +                          panel_list->updatePanels(TRUE);                  }          } @@ -1404,75 +1414,56 @@ LLPanel* LLPanelEditWearable::getPanel(LLWearableType::EType type)          {                  case LLWearableType::WT_SHAPE:                          return mPanelShape; -                        break;                  case LLWearableType::WT_SKIN:                          return mPanelSkin; -                        break;                  case LLWearableType::WT_HAIR:                          return mPanelHair; -                        break;                  case LLWearableType::WT_EYES:                          return mPanelEyes; -                        break;                  case LLWearableType::WT_SHIRT:                          return mPanelShirt; -                        break;                  case LLWearableType::WT_PANTS:                          return mPanelPants; -                        break;                  case LLWearableType::WT_SHOES:                          return mPanelShoes; -                        break;                  case LLWearableType::WT_SOCKS:                          return mPanelSocks; -                        break;                  case LLWearableType::WT_JACKET:                          return mPanelJacket; -                        break;                  case LLWearableType::WT_GLOVES:                          return mPanelGloves; -                        break;                  case LLWearableType::WT_UNDERSHIRT:                          return mPanelUndershirt; -                        break;                  case LLWearableType::WT_UNDERPANTS:                          return mPanelUnderpants; -                        break;                  case LLWearableType::WT_SKIRT:                          return mPanelSkirt; -                        break;                  case LLWearableType::WT_ALPHA:                          return mPanelAlpha; -                        break;                  case LLWearableType::WT_TATTOO:                          return mPanelTattoo; -                        break; -				 -				case LLWearableType::WT_UNIVERSAL: -					return mPanelUniversal; -					break; + +                case LLWearableType::WT_UNIVERSAL: +                        return mPanelUniversal;                  case LLWearableType::WT_PHYSICS:                          return mPanelPhysics; -                        break; - -                default: -                        break;          } +          return NULL;  } @@ -1508,11 +1499,11 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value          // sorted_params is sorted according to magnitude of effect from          // least to greatest.  Adding to the front of the child list          // reverses that order. -        if( panel_list ) +        if (panel_list)          {                  panel_list->clearPanels();                  value_map_t::iterator end = sorted_params.end(); -                for(value_map_t::iterator it = sorted_params.begin(); it != end; ++it) +                for (value_map_t::iterator it = sorted_params.begin(); it != end; ++it)                  {                          LLPanel::Params p;                          p.name("LLScrollingPanelParam"); @@ -1535,7 +1526,7 @@ void LLPanelEditWearable::updateVerbs()  {          bool can_copy = false; -        if(mWearableItem) +        if (mWearableItem)          {                  can_copy = mWearableItem->getPermissions().allowCopyBy(gAgentID);          } @@ -1545,7 +1536,7 @@ void LLPanelEditWearable::updateVerbs()          mBtnRevert->setEnabled(is_dirty);          getChildView("save_as_button")->setEnabled(is_dirty && can_copy); -        if(isAgentAvatarValid()) +        if (isAgentAvatarValid())          {                  // Update viewer's radio buttons (of RadioGroup with control_name="AvatarSex") of Avatar's gender                  // with value from "AvatarSex" setting @@ -1586,17 +1577,20 @@ void LLPanelEditWearable::configureAlphaCheckbox(LLAvatarAppearanceDefines::ETex  void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LLAvatarAppearanceDefines::ETextureIndex te)  { -        if (!checkbox_ctrl) return; -        if (!getWearable()) return; +        if (!checkbox_ctrl || !getWearable()) +        { +                return; +        }          LL_INFOS() << "onInvisibilityCommit, self " << this << " checkbox_ctrl " << checkbox_ctrl << LL_ENDL; -		U32 index; -		if (!gAgentWearables.getWearableIndex(getWearable(),index)) -		{ -			LL_WARNS() << "wearable not found" << LL_ENDL; -			return; -		} +        U32 index; +        if (!gAgentWearables.getWearableIndex(getWearable(), index)) +        { +                LL_WARNS() << "wearable not found" << LL_ENDL; +                return; +        } +          bool new_invis_state = checkbox_ctrl->get();          if (new_invis_state)          { @@ -1604,8 +1598,8 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  mPreviousAlphaTexture[te] = lto->getID();                  LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture( IMG_INVISIBLE ); -				gAgentAvatarp->setLocalTexture(te, image, FALSE, index); -				gAgentAvatarp->wearableUpdated(getWearable()->getType()); +                gAgentAvatarp->setLocalTexture(te, image, FALSE, index); +                gAgentAvatarp->wearableUpdated(getWearable()->getType());          }          else          { @@ -1615,10 +1609,16 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL                  {                          prev_id = LLUUID( gSavedSettings.getString( "UIImgDefaultAlphaUUID" ) );                  } -                if (prev_id.isNull()) return; -                 +                if (prev_id.isNull()) +                { +                        return; +                } +                  LLViewerFetchedTexture* image = LLViewerTextureManager::getFetchedTexture(prev_id); -                if (!image) return; +                if (!image) +                { +                        return; +                }                  gAgentAvatarp->setLocalTexture(te, image, FALSE, index);                  gAgentAvatarp->wearableUpdated(getWearable()->getType()); @@ -1629,7 +1629,7 @@ void LLPanelEditWearable::onInvisibilityCommit(LLCheckBoxCtrl* checkbox_ctrl, LL  void LLPanelEditWearable::updateAlphaCheckboxes()  { -        for(string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin(); +        for (string_texture_index_map_t::iterator iter = mAlphaCheckbox2Index.begin();                  iter != mAlphaCheckbox2Index.end(); ++iter )          {                  LLAvatarAppearanceDefines::ETextureIndex te = (LLAvatarAppearanceDefines::ETextureIndex)iter->second; | 
