From 3bf89821d9c9777a0f24d89280bd7a7011a7a3df Mon Sep 17 00:00:00 2001
From: Anchor Linden <anchor@lindenlab.com>
Date: Mon, 21 May 2018 16:00:52 -0700
Subject: [DRTVWR-455] - added 5 new bake channels

---
 indra/newview/character/avatar_lad.xml             | 524 +++++++++++++++++++++
 indra/newview/lllocalbitmaps.cpp                   |  40 ++
 indra/newview/llpaneleditwearable.cpp              |  10 +-
 indra/newview/llpanelface.cpp                      |   3 +-
 indra/newview/lltexturectrl.cpp                    |  47 +-
 indra/newview/llvoavatar.cpp                       |  12 +-
 .../skins/default/xui/en/floater_texture_ctrl.xml  |  20 +
 .../skins/default/xui/en/panel_edit_tattoo.xml     | 125 ++++-
 .../skins/default/xui/en/panel_edit_wearable.xml   |   4 +-
 9 files changed, 776 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index df30f46002..6d49e22065 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -8947,6 +8947,66 @@
       <texture
          local_texture="hair_alpha" />
     </layer>
+    <layer
+       name="hair_tattoo">
+      <texture
+         local_texture="hair_tattoo" />
+      <param
+       id="1211"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_hair_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1212"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_hair_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1213"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_hair_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
 
   </layer_set>
   <!-- =========================================================== -->
@@ -12235,6 +12295,66 @@ render_pass="bump">
       <texture
          local_texture="eyes_alpha" />
     </layer>
+    <layer
+       name="eyes_tattoo">
+      <texture
+         local_texture="eyes_tattoo" />
+      <param
+       id="924"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_eyes_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="925"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_eyes_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="926"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_eyes_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
 
   </layer_set>
 
@@ -12415,6 +12535,410 @@ render_pass="bump">
          domain="0" />
       </param>
     </layer>
+    <layer
+       name="skirt_tattoo">
+      <texture
+         local_texture="skirt_tattoo" />
+      <param
+       id="1208"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_skirt_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1209"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_skirt_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1210"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_skirt_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
+  </layer_set>
+
+  <!-- =========================================================== -->
+  <layer_set
+   body_region="leftarm"
+   width="512"
+   height="512"
+   clear_alpha="false">
+   
+    <layer
+       name="leftarm_tattoo">
+      <texture
+         local_texture="leftarm_tattoo" />
+      <param
+       id="1214"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftarm_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1215"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftarm_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1216"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftarm_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
+  </layer_set>
+
+  <!-- =========================================================== -->
+  <layer_set
+   body_region="leftleg"
+   width="512"
+   height="512"
+   clear_alpha="false">
+
+    <layer
+       name="leftleg_tattoo">
+      <texture
+         local_texture="leftleg_tattoo" />
+      <param
+       id="1217"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftleg_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1218"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftleg_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1219"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_leftleg_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
+  </layer_set>
+
+  <!-- =========================================================== -->
+  <layer_set
+   body_region="aux1"
+   width="512"
+   height="512"
+   clear_alpha="false">
+
+    <layer
+       name="aux1_tattoo">
+      <texture
+         local_texture="aux1_tattoo" />
+      <param
+       id="1220"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux1_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1221"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux1_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1222"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux1_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
+  </layer_set>
+
+  <!-- =========================================================== -->
+  <layer_set
+   body_region="aux2"
+   width="512"
+   height="512"
+   clear_alpha="false">
+
+    <layer
+       name="aux2_tattoo">
+      <texture
+         local_texture="aux2_tattoo" />
+      <param
+       id="1223"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux2_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1224"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux2_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1225"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux2_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
+
+  </layer_set>
+
+  <!-- =========================================================== -->
+  <layer_set
+   body_region="aux3"
+   width="512"
+   height="512"
+   clear_alpha="false">
+
+    <layer
+       name="aux3_tattoo">
+      <texture
+         local_texture="aux3_tattoo" />
+      <param
+       id="1226"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux3_red"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="255, 0, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1227"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux3_green"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 255, 0, 255" />
+        </param_color>
+      </param>
+
+      <param
+       id="1228"
+       group="1"
+       edit_group="colorpicker_driven"
+       wearable="tattoo"
+       name="tattoo_aux3_blue"
+       value_min="0"
+       value_max="1"
+       value_default="1">
+        <param_color>
+          <value
+           color="0, 0, 0, 255" />
+
+          <value
+           color="0, 0, 255, 255" />
+        </param_color>
+      </param>
+
+    </layer>
 
   </layer_set>
 
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index a55938f334..29b374d411 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -750,6 +750,46 @@ LLAvatarAppearanceDefines::ETextureIndex LLLocalBitmap::getTexIndex(
 					result = LLAvatarAppearanceDefines::TEX_UPPER_TATTOO;
 					break;
 				}
+				case LLAvatarAppearanceDefines::BAKED_SKIRT:
+				{
+					result = LLAvatarAppearanceDefines::TEX_SKIRT_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_EYES:
+				{
+					result = LLAvatarAppearanceDefines::TEX_EYES_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_HAIR:
+				{
+					result = LLAvatarAppearanceDefines::TEX_HAIR_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_LEFT_ARM:
+				{
+					result = LLAvatarAppearanceDefines::TEX_LEFT_ARM_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_LEFT_LEG:
+				{
+					result = LLAvatarAppearanceDefines::TEX_LEFT_LEG_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_AUX1:
+				{
+					result = LLAvatarAppearanceDefines::TEX_AUX1_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_AUX2:
+				{
+					result = LLAvatarAppearanceDefines::TEX_AUX2_TATTOO;
+					break;
+				}
+				case LLAvatarAppearanceDefines::BAKED_AUX3:
+				{
+					result = LLAvatarAppearanceDefines::TEX_AUX3_TATTOO;
+					break;
+				}
 
 				default:
 				{
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index a46fb3dfeb..bb8fadfdf4 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -240,7 +240,7 @@ LLEditWearableDictionary::Wearables::Wearables()
         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_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_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, 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_TATTOO}));
         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}));
 }
 
@@ -362,6 +362,14 @@ LLEditWearableDictionary::TextureCtrls::TextureCtrls()
         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_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_BAKED, new PickerControlEntry(TEX_AUX3_TATTOO, "Aux3 Tattoo", LLUUID::null, TRUE));
 }
 
 LLEditWearableDictionary::PickerControlEntry::PickerControlEntry(ETextureIndex tex_index,
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 5689c44e21..fc2ef59f9f 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -2504,7 +2504,8 @@ void LLPanelFace::LLSelectedTE::getTexId(LLUUID& id, bool& identical)
 			LLTextureEntry *te = object->getTE(te_index);
 			if (te)
 			{
-				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))
+				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();
 				}
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 0c823931c1..9c1dd0f1df 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -485,7 +485,8 @@ void LLFloaterTexturePicker::draw()
 		{
 			LLPointer<LLViewerFetchedTexture> texture = NULL;
 
-			if ((mImageAssetID == IMG_USE_BAKED_EYES) || (mImageAssetID == IMG_USE_BAKED_HAIR) || (mImageAssetID == IMG_USE_BAKED_HEAD) || (mImageAssetID == IMG_USE_BAKED_LOWER) || (mImageAssetID == IMG_USE_BAKED_SKIRT) || (mImageAssetID == IMG_USE_BAKED_UPPER))
+			if ((mImageAssetID == IMG_USE_BAKED_EYES) || (mImageAssetID == IMG_USE_BAKED_HAIR) || (mImageAssetID == IMG_USE_BAKED_HEAD) || (mImageAssetID == IMG_USE_BAKED_LOWER) || (mImageAssetID == IMG_USE_BAKED_SKIRT) || (mImageAssetID == IMG_USE_BAKED_UPPER)
+				|| (mImageAssetID == IMG_USE_BAKED_LEFTARM) || (mImageAssetID == IMG_USE_BAKED_LEFTLEG) || (mImageAssetID == IMG_USE_BAKED_AUX1) || (mImageAssetID == IMG_USE_BAKED_AUX2) || (mImageAssetID == IMG_USE_BAKED_AUX3))
 			{
 				LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
 				if (obj)
@@ -831,6 +832,27 @@ void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata)
 		{
 			val = 5;
 		}
+		else if (imageID == IMG_USE_BAKED_LEFTARM)
+		{
+			val = 6;
+		}
+		else if (imageID == IMG_USE_BAKED_LEFTLEG)
+		{
+			val = 7;
+		}
+		else if (imageID == IMG_USE_BAKED_AUX1)
+		{
+			val = 8;
+		}
+		else if (imageID == IMG_USE_BAKED_AUX2)
+		{
+			val = 9;
+		}
+		else if (imageID == IMG_USE_BAKED_AUX3)
+		{
+			val = 10;
+		}
+
 
 		self->getChild<LLComboBox>("l_bake_use_texture_combo_box")->setSelectedByValue(val, TRUE);
 	}
@@ -987,6 +1009,26 @@ void LLFloaterTexturePicker::onBakeTextureSelect(LLUICtrl* ctrl, void *user_data
 	{
 		imageID = IMG_USE_BAKED_HAIR;
 	}
+	else if (type == 6)
+	{
+		imageID = IMG_USE_BAKED_LEFTARM;
+	}
+	else if (type == 7)
+	{
+		imageID = IMG_USE_BAKED_LEFTLEG;
+	}
+	else if (type == 8)
+	{
+		imageID = IMG_USE_BAKED_AUX1;
+	}
+	else if (type == 9)
+	{
+		imageID = IMG_USE_BAKED_AUX2;
+	}
+	else if (type == 10)
+	{
+		imageID = IMG_USE_BAKED_AUX3;
+	}
 
 	self->setImageID(imageID);
 	self->mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here?
@@ -1556,7 +1598,8 @@ void LLTextureCtrl::draw()
 	{
 		LLPointer<LLViewerFetchedTexture> texture = NULL;
 
-		if ((mImageAssetID == IMG_USE_BAKED_EYES) || (mImageAssetID == IMG_USE_BAKED_HAIR) || (mImageAssetID == IMG_USE_BAKED_HEAD) || (mImageAssetID == IMG_USE_BAKED_LOWER) || (mImageAssetID == IMG_USE_BAKED_SKIRT) || (mImageAssetID == IMG_USE_BAKED_UPPER))
+		if ((mImageAssetID == IMG_USE_BAKED_EYES) || (mImageAssetID == IMG_USE_BAKED_HAIR) || (mImageAssetID == IMG_USE_BAKED_HEAD) || (mImageAssetID == IMG_USE_BAKED_LOWER) || (mImageAssetID == IMG_USE_BAKED_SKIRT) || (mImageAssetID == IMG_USE_BAKED_UPPER)
+			|| (mImageAssetID == IMG_USE_BAKED_LEFTARM) || (mImageAssetID == IMG_USE_BAKED_LEFTLEG) || (mImageAssetID == IMG_USE_BAKED_AUX1) || (mImageAssetID == IMG_USE_BAKED_AUX2) || (mImageAssetID == IMG_USE_BAKED_AUX3))
 		{
 			LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
 			if (obj)
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 5951733634..6a046534e3 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7260,6 +7260,11 @@ void LLVOAvatar::updateMeshVisibility()
 						bake_flag[BAKED_LOWER] |= (tex_entry->getID() == IMG_USE_BAKED_LOWER);
 						bake_flag[BAKED_UPPER] |= (tex_entry->getID() == IMG_USE_BAKED_UPPER);
 						bake_flag[BAKED_SKIRT] |= (tex_entry->getID() == IMG_USE_BAKED_SKIRT);
+						bake_flag[BAKED_LEFT_ARM] |= (tex_entry->getID() == IMG_USE_BAKED_LEFTARM);
+						bake_flag[BAKED_LEFT_LEG] |= (tex_entry->getID() == IMG_USE_BAKED_LEFTLEG);
+						bake_flag[BAKED_AUX1] |= (tex_entry->getID() == IMG_USE_BAKED_AUX1);
+						bake_flag[BAKED_AUX2] |= (tex_entry->getID() == IMG_USE_BAKED_AUX2);
+						bake_flag[BAKED_AUX3] |= (tex_entry->getID() == IMG_USE_BAKED_AUX3);
 					}
 				}
 
@@ -7279,6 +7284,11 @@ void LLVOAvatar::updateMeshVisibility()
 							bake_flag[BAKED_LOWER] |= (tex_entry->getID() == IMG_USE_BAKED_LOWER);
 							bake_flag[BAKED_UPPER] |= (tex_entry->getID() == IMG_USE_BAKED_UPPER);
 							bake_flag[BAKED_SKIRT] |= (tex_entry->getID() == IMG_USE_BAKED_SKIRT);
+							bake_flag[BAKED_LEFT_ARM] |= (tex_entry->getID() == IMG_USE_BAKED_LEFTARM);
+							bake_flag[BAKED_LEFT_LEG] |= (tex_entry->getID() == IMG_USE_BAKED_LEFTLEG);
+							bake_flag[BAKED_AUX1] |= (tex_entry->getID() == IMG_USE_BAKED_AUX1);
+							bake_flag[BAKED_AUX2] |= (tex_entry->getID() == IMG_USE_BAKED_AUX2);
+							bake_flag[BAKED_AUX3] |= (tex_entry->getID() == IMG_USE_BAKED_AUX3);
 						}
 					}
 				}
@@ -7286,7 +7296,7 @@ void LLVOAvatar::updateMeshVisibility()
 		}
 	}
 
-	LL_INFOS() << "head " << bake_flag[BAKED_HEAD] << "eyes " << bake_flag[BAKED_EYES] << "hair " << bake_flag[BAKED_HAIR] << "lower " << bake_flag[BAKED_LOWER] << "upper " << bake_flag[BAKED_UPPER] << "skirt " << bake_flag[BAKED_SKIRT] << LL_ENDL;
+	//LL_INFOS() << "head " << bake_flag[BAKED_HEAD] << "eyes " << bake_flag[BAKED_EYES] << "hair " << bake_flag[BAKED_HAIR] << "lower " << bake_flag[BAKED_LOWER] << "upper " << bake_flag[BAKED_UPPER] << "skirt " << bake_flag[BAKED_SKIRT] << LL_ENDL;
 
 	for (S32 i = 0; i < mMeshLOD.size(); i++)
 	{
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
index 9bce037cba..549f4aca28 100644
--- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
@@ -275,6 +275,26 @@
          label="BAKED_HAIR"
          name="BAKED_HAIR"
          value="5" />
+        <combo_box.item
+          label="BAKED_LEFTARM"
+          name="BAKED_LEFTARM"
+          value="6" />
+        <combo_box.item
+          label="BAKED_LEFTLEG"
+          name="BAKED_LEFTLEG"
+          value="7" />
+        <combo_box.item
+         label="BAKED_AUX1"
+         name="BAKED_AUX1"
+         value="8" />
+        <combo_box.item
+           label="BAKED_AUX2"
+           name="BAKED_AUX2"
+           value="9" />
+        <combo_box.item
+         label="BAKED_AUX3"
+         name="BAKED_AUX3"
+         value="10" />
   </combo_box>
   <check_box
      follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
index 97f1a1a658..2870dc4b48 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -2,7 +2,7 @@
  <panel
      background_visible="true"
 	 follows="all"
-	 height="400"
+	 height="900"
 	 layout="topleft"
 	 left="0"
 	 name="edit_tattoo_panel"
@@ -15,7 +15,7 @@
       background_visible="true"
       background_opaque="true"
 	  follows="all"
-	  height="400" 
+	  height="900" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_tattoo_color_panel"
@@ -66,6 +66,127 @@
          <texture_picker.commit_callback
              function="TexturePicker.Commit" />
        </texture_picker>
+     <texture_picker
+        can_apply_immediately="true"
+        default_image_name="Default"
+        follows="left|top"
+        height="115"
+        label="Skirt Tattoo"
+        layout="topleft"
+        left_pad="30"
+        name="Skirt Tattoo"
+        tool_tip="Click to choose a picture"
+        top_delta="0"
+        width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Hair Tattoo"
+      layout="topleft"
+      left="20"
+      name="Hair Tattoo"
+      tool_tip="Click to choose a picture"
+      top_pad="10"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Eyes Tattoo"
+      layout="topleft"
+      left_pad="30"
+      name="Eyes Tattoo"
+      tool_tip="Click to choose a picture"
+      top_delta="0"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Left Arm Tattoo"
+      layout="topleft"
+      left="20"
+      name="Left Arm Tattoo"
+      tool_tip="Click to choose a picture"
+      top_pad="10"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Left Leg Tattoo"
+      layout="topleft"
+      left_pad="30"
+      name="Left Leg Tattoo"
+      tool_tip="Click to choose a picture"
+      top_delta="0"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Aux1 Tattoo"
+      layout="topleft"
+      left="20"
+      name="Aux1 Tattoo"
+      tool_tip="Click to choose a picture"
+      top_pad="10"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Aux2 Tattoo"
+      layout="topleft"
+      left_pad="30"
+      name="Aux2 Tattoo"
+      tool_tip="Click to choose a picture"
+      top_delta="0"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     <texture_picker
+      can_apply_immediately="true"
+      default_image_name="Default"
+      follows="left|top"
+      height="115"
+      label="Aux3 Tattoo"
+      layout="topleft"
+      left="20"
+      name="Aux3 Tattoo"
+      tool_tip="Click to choose a picture"
+      top_pad="10"
+      width="115" >
+       <texture_picker.commit_callback
+           function="TexturePicker.Commit" />
+     </texture_picker>
+     
        <color_swatch
         can_apply_immediately="true"
         follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index f34b913218..97c830a421 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -3,7 +3,7 @@
  background_visible="true"
  bevel_style="in"
  follows="all"
- height="570"
+ height="700"
  help_topic="edit_wearable"
  label="Wearable"
  layout="topleft"
@@ -411,7 +411,7 @@
         <panel
          filename="panel_edit_tattoo.xml"
          follows="all"
-         height="425"
+         height="900"
          layout="topleft"
          left="0"
          name="edit_tattoo_panel"
-- 
cgit v1.2.3