summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorAnchor Linden <anchor@lindenlab.com>2018-06-08 20:36:49 +0530
committerAnchor Linden <anchor@lindenlab.com>2018-06-08 20:36:49 +0530
commit56fc3222dce79d3b52d7e234dcb929f08bfda031 (patch)
treea52d4dc5bcfdbde9c1e794dfc9aacdcc17f9298d /indra/newview
parent6e1cbd04b43ad779afcd562cdaefe8a8c179ed06 (diff)
[DRTVWR-476] - create new wearable type
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/character/avatar_lad.xml48
-rw-r--r--indra/newview/llinventoryicon.cpp1
-rw-r--r--indra/newview/lllocalbitmaps.cpp16
-rw-r--r--indra/newview/llpaneleditwearable.cpp15
-rw-r--r--indra/newview/llpaneleditwearable.h1
-rw-r--r--indra/newview/llpaneloutfitedit.cpp1
-rw-r--r--indra/newview/llpaneloutfitedit.h1
-rw-r--r--indra/newview/llviewerinventory.cpp1
-rw-r--r--indra/newview/llwearableitemslist.cpp1
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_Universal.pngbin0 -> 416 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml1
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory_add.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_outfit_gear.xml8
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_tattoo.xml121
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_universal.xml171
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_wearable.xml18
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml4
18 files changed, 276 insertions, 148 deletions
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 6d49e22065..559994e3c0 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -8955,7 +8955,7 @@
id="1211"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_hair_red"
value_min="0"
value_max="1"
@@ -8973,7 +8973,7 @@
id="1212"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_hair_green"
value_min="0"
value_max="1"
@@ -8991,7 +8991,7 @@
id="1213"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_hair_blue"
value_min="0"
value_max="1"
@@ -12303,7 +12303,7 @@ render_pass="bump">
id="924"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_eyes_red"
value_min="0"
value_max="1"
@@ -12321,7 +12321,7 @@ render_pass="bump">
id="925"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_eyes_green"
value_min="0"
value_max="1"
@@ -12339,7 +12339,7 @@ render_pass="bump">
id="926"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_eyes_blue"
value_min="0"
value_max="1"
@@ -12543,7 +12543,7 @@ render_pass="bump">
id="1208"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_skirt_red"
value_min="0"
value_max="1"
@@ -12561,7 +12561,7 @@ render_pass="bump">
id="1209"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_skirt_green"
value_min="0"
value_max="1"
@@ -12579,7 +12579,7 @@ render_pass="bump">
id="1210"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_skirt_blue"
value_min="0"
value_max="1"
@@ -12612,7 +12612,7 @@ render_pass="bump">
id="1214"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftarm_red"
value_min="0"
value_max="1"
@@ -12630,7 +12630,7 @@ render_pass="bump">
id="1215"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftarm_green"
value_min="0"
value_max="1"
@@ -12648,7 +12648,7 @@ render_pass="bump">
id="1216"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftarm_blue"
value_min="0"
value_max="1"
@@ -12681,7 +12681,7 @@ render_pass="bump">
id="1217"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftleg_red"
value_min="0"
value_max="1"
@@ -12699,7 +12699,7 @@ render_pass="bump">
id="1218"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftleg_green"
value_min="0"
value_max="1"
@@ -12717,7 +12717,7 @@ render_pass="bump">
id="1219"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_leftleg_blue"
value_min="0"
value_max="1"
@@ -12750,7 +12750,7 @@ render_pass="bump">
id="1220"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux1_red"
value_min="0"
value_max="1"
@@ -12768,7 +12768,7 @@ render_pass="bump">
id="1221"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux1_green"
value_min="0"
value_max="1"
@@ -12786,7 +12786,7 @@ render_pass="bump">
id="1222"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux1_blue"
value_min="0"
value_max="1"
@@ -12819,7 +12819,7 @@ render_pass="bump">
id="1223"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux2_red"
value_min="0"
value_max="1"
@@ -12837,7 +12837,7 @@ render_pass="bump">
id="1224"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux2_green"
value_min="0"
value_max="1"
@@ -12855,7 +12855,7 @@ render_pass="bump">
id="1225"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux2_blue"
value_min="0"
value_max="1"
@@ -12888,7 +12888,7 @@ render_pass="bump">
id="1226"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux3_red"
value_min="0"
value_max="1"
@@ -12906,7 +12906,7 @@ render_pass="bump">
id="1227"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux3_green"
value_min="0"
value_max="1"
@@ -12924,7 +12924,7 @@ render_pass="bump">
id="1228"
group="1"
edit_group="colorpicker_driven"
- wearable="tattoo"
+ wearable="universal"
name="tattoo_aux3_blue"
value_min="0"
value_max="1"
diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp
index 495180f087..1141dabeb8 100644
--- a/indra/newview/llinventoryicon.cpp
+++ b/indra/newview/llinventoryicon.cpp
@@ -83,6 +83,7 @@ LLIconDictionary::LLIconDictionary()
addEntry(LLInventoryType::ICONNAME_CLOTHING_SKIRT, new IconEntry("Inv_Skirt"));
addEntry(LLInventoryType::ICONNAME_CLOTHING_ALPHA, new IconEntry("Inv_Alpha"));
addEntry(LLInventoryType::ICONNAME_CLOTHING_TATTOO, new IconEntry("Inv_Tattoo"));
+ addEntry(LLInventoryType::ICONNAME_CLOTHING_UNIVERSAL, new IconEntry("Inv_Universal"));
addEntry(LLInventoryType::ICONNAME_ANIMATION, new IconEntry("Inv_Animation"));
addEntry(LLInventoryType::ICONNAME_GESTURE, new IconEntry("Inv_Gesture"));
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 558dde5a87..49a0e6510c 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -381,6 +381,7 @@ void LLLocalBitmap::replaceIDs(LLUUID old_id, LLUUID new_id)
updateUserLayers(old_id, new_id, LLWearableType::WT_SKIRT);
updateUserLayers(old_id, new_id, LLWearableType::WT_SOCKS);
updateUserLayers(old_id, new_id, LLWearableType::WT_TATTOO);
+ updateUserLayers(old_id, new_id, LLWearableType::WT_UNIVERSAL);
updateUserLayers(old_id, new_id, LLWearableType::WT_UNDERPANTS);
updateUserLayers(old_id, new_id, LLWearableType::WT_UNDERSHIRT);
}
@@ -746,7 +747,7 @@ LLAvatarAppearanceDefines::ETextureIndex LLLocalBitmap::getTexIndex(
case LLWearableType::WT_TATTOO:
{
- switch(baked_texind)
+ switch (baked_texind)
{
case LLAvatarAppearanceDefines::BAKED_HEAD:
{
@@ -764,6 +765,19 @@ LLAvatarAppearanceDefines::ETextureIndex LLLocalBitmap::getTexIndex(
result = LLAvatarAppearanceDefines::TEX_UPPER_TATTOO;
break;
}
+ default:
+ {
+ break;
+ }
+ }
+ break;
+
+ }
+ case LLWearableType::WT_UNIVERSAL:
+ {
+ switch (baked_texind)
+ {
+
case LLAvatarAppearanceDefines::BAKED_SKIRT:
{
result = LLAvatarAppearanceDefines::TEX_SKIRT_TATTOO;
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index 73534bf495..9976a3035e 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -97,6 +97,7 @@ enum ESubpart {
SUBPART_SKIRT,
SUBPART_ALPHA,
SUBPART_TATTOO,
+ SUBPART_UNIVERSAL,
SUBPART_PHYSICS_BREASTS_UPDOWN,
SUBPART_PHYSICS_BREASTS_INOUT,
SUBPART_PHYSICS_BREASTS_LEFTRIGHT,
@@ -240,8 +241,9 @@ 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, 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}));
+ 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_SKIRT_TATTOO }, texture_vec_t{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,
@@ -294,7 +296,9 @@ LLEditWearableDictionary::Subparts::Subparts()
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_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_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));
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));
@@ -747,6 +751,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");
mPanelPhysics = getChild<LLPanel>("edit_physics_panel");
mTxtAvatarHeight = mPanelShape->getChild<LLTextBox>("avatar_height");
@@ -1450,6 +1455,10 @@ LLPanel* LLPanelEditWearable::getPanel(LLWearableType::EType type)
case LLWearableType::WT_TATTOO:
return mPanelTattoo;
break;
+
+ case LLWearableType::WT_UNIVERSAL:
+ return mPanelUniversal;
+ break;
case LLWearableType::WT_PHYSICS:
return mPanelPhysics;
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 81acc31863..43d6a3595f 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -167,6 +167,7 @@ private:
LLPanel *mPanelSkirt;
LLPanel *mPanelAlpha;
LLPanel *mPanelTattoo;
+ LLPanel *mPanelUniversal;
LLPanel *mPanelPhysics;
typedef std::map<std::string, LLAvatarAppearanceDefines::ETextureIndex> string_texture_index_map_t;
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 5973b08183..1723844b52 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -466,6 +466,7 @@ BOOL LLPanelOutfitEdit::postBuild()
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("skirt"), new LLFindActualWearablesOfType(LLWearableType::WT_SKIRT)));
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("alpha"), new LLFindActualWearablesOfType(LLWearableType::WT_ALPHA)));
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("tattoo"), new LLFindActualWearablesOfType(LLWearableType::WT_TATTOO)));
+ mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("universal"), new LLFindActualWearablesOfType(LLWearableType::WT_UNIVERSAL)));
mListViewItemTypes.push_back(new LLFilterItem(LLTrans::getString("physics"), new LLFindActualWearablesOfType(LLWearableType::WT_PHYSICS)));
mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name");
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 30870daf40..e7e8ddab95 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -97,6 +97,7 @@ public:
LVIT_SKIRT,
LVIT_ALPHA,
LVIT_TATTOO,
+ LVIT_UNIVERSAL,
LVIT_PHYSICS,
NUM_LIST_VIEW_ITEM_TYPES
} EListViewItemType;
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 1ab7ec0156..61857d6fb1 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -138,6 +138,7 @@ LLLocalizedInventoryItemsDictionary::LLLocalizedInventoryItemsDictionary()
mInventoryItemsDict["New Skirt"] = LLTrans::getString("New Skirt");
mInventoryItemsDict["New Alpha"] = LLTrans::getString("New Alpha");
mInventoryItemsDict["New Tattoo"] = LLTrans::getString("New Tattoo");
+ mInventoryItemsDict["New Universal"] = LLTrans::getString("New Universal");
mInventoryItemsDict["New Physics"] = LLTrans::getString("New Physics");
mInventoryItemsDict["Invalid Wearable"] = LLTrans::getString("Invalid Wearable");
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index ee2270c323..e7bbee5efd 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -455,6 +455,7 @@ clothing_to_string_map_t init_clothing_string_map()
w_map.insert(std::make_pair(LLWearableType::WT_SKIRT, "skirt_not_worn"));
w_map.insert(std::make_pair(LLWearableType::WT_ALPHA, "alpha_not_worn"));
w_map.insert(std::make_pair(LLWearableType::WT_TATTOO, "tattoo_not_worn"));
+ w_map.insert(std::make_pair(LLWearableType::WT_UNIVERSAL, "universal_not_worn"));
w_map.insert(std::make_pair(LLWearableType::WT_PHYSICS, "physics_not_worn"));
return w_map;
}
diff --git a/indra/newview/skins/default/textures/icons/Inv_Universal.png b/indra/newview/skins/default/textures/icons/Inv_Universal.png
new file mode 100644
index 0000000000..a632197eb5
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/Inv_Universal.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index d757e39366..7930902049 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -316,6 +316,7 @@ with the same filename but different name
<texture name="Inv_SysClosed" file_name="icons/Inv_SysClosed.png" preload="false" />
<texture name="Inv_SysOpen" file_name="icons/Inv_SysOpen.png" preload="false" />
<texture name="Inv_Tattoo" file_name="icons/Inv_Tattoo.png" preload="false" />
+ <texture name="Inv_Universal" file_name="icons/Inv_Universal.png" preload="false" />
<texture name="Inv_Physics" file_name="icons/Inv_Physics.png" preload="false" />
<texture name="Inv_Texture" file_name="icons/Inv_Texture.png" preload="false" />
<texture name="Inv_TrashClosed" file_name="icons/Inv_TrashClosed.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 5b45364127..a9c036167f 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -275,6 +275,14 @@
function="Inventory.DoCreate"
parameter="tattoo" />
</menu_item_call>
+ <menu_item_call
+ label="New Universal"
+ layout="topleft"
+ name="New Universal">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="universal" />
+ </menu_item_call>
<menu_item_call
label="New Physics"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index afeb1bf226..29724b0270 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -194,6 +194,14 @@
function="Inventory.DoCreate"
parameter="tattoo" />
</menu_item_call>
+ <menu_item_call
+ label="New Universal"
+ layout="topleft"
+ name="New Universal">
+ <menu_item_call.on_click
+ function="Inventory.DoCreate"
+ parameter="universal" />
+ </menu_item_call>
<menu_item_call
label="New Physics"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
index 7faa4f3d71..61cb74f230 100644
--- a/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_outfit_gear.xml
@@ -175,6 +175,14 @@
function="Gear.Create"
parameter="tattoo" />
</menu_item_call>
+ <menu_item_call
+ label="New Universal"
+ layout="topleft"
+ name="New Universal">
+ <menu_item_call.on_click
+ function="Gear.Create"
+ parameter="universal" />
+ </menu_item_call>
</menu>
<menu
height="85"
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 c304188ad3..8fa85dce5f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -76,126 +76,7 @@
<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"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_universal.xml b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
new file mode 100644
index 0000000000..2d7821ed3a
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ follows="all"
+ height="400"
+ layout="topleft"
+ left="0"
+ name="edit_universal_panel"
+ top_pad="10"
+ width="333" >
+ <scroll_container
+ color="DkGray2"
+ follows="all"
+ height="400"
+ layout="topleft"
+ left="9"
+ name="avatar_universal_scroll"
+ opaque="true"
+ top_pad="10"
+ width="314">
+ <panel
+ border="false"
+ bg_alpha_color="DkGray2"
+ bg_opaque_color="DkGray2"
+ background_visible="true"
+ background_opaque="true"
+ follows="all"
+ height="800"
+ left="10"
+ layout="topleft"
+ name="avatar_universal_color_panel"
+ top="0"
+ width="313" >
+ <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>
+ <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>
+ <color_swatch
+ can_apply_immediately="true"
+ follows="left|top"
+ height="115"
+ label="Color/Tint"
+ layout="topleft"
+ left="30"
+ name="Color/Tint"
+ tool_tip="Click to open color picker"
+ top_pad="10"
+ width="115" >
+ <color_swatch.commit_callback
+ function="ColorSwatch.Commit" />
+ </color_swatch>
+ </panel>
+ </scroll_container>
+</panel>
+
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..dc1553e6a3 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -71,6 +71,10 @@
name="edit_tattoo_title">
Editing Tattoo
</string>
+ <string
+ name="edit_universal_title">
+ Editing Universal
+ </string>
<string
name="edit_physics_title">
Editing Physics
@@ -135,6 +139,10 @@
name="tattoo_desc_text">
Tattoo:
</string>
+ <string
+ name="universal_desc_text">
+ Universal:
+ </string>
<string
name="physics_desc_text">
Physics:
@@ -418,6 +426,16 @@
top="8"
visible="false"
width="333" />
+ <panel
+ filename="panel_edit_universal.xml"
+ follows="all"
+ height="425"
+ layout="topleft"
+ left="0"
+ name="edit_universal_panel"
+ top="8"
+ visible="false"
+ width="333" />
<panel
filename="panel_edit_physics.xml"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 0a220e68fd..fa1dd41917 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2209,6 +2209,7 @@ For AI Character: Get the closest navigable point to the point provided.
<string name="skirt">Skirt</string>
<string name="alpha">Alpha</string>
<string name="tattoo">Tattoo</string>
+ <string name="universal">Universal</string>
<string name="physics">Physics</string>
<string name="invalid">invalid</string>
<string name="none">none</string>
@@ -2225,6 +2226,7 @@ For AI Character: Get the closest navigable point to the point provided.
<string name="skirt_not_worn">Skirt not worn</string>
<string name="alpha_not_worn">Alpha not worn</string>
<string name="tattoo_not_worn">Tattoo not worn</string>
+ <string name="universal_not_worn">Universal not worn</string>
<string name="physics_not_worn">Physics not worn</string>
<string name="invalid_not_worn">invalid</string>
@@ -2244,6 +2246,7 @@ For AI Character: Get the closest navigable point to the point provided.
<string name="create_new_skirt">Create new skirt</string>
<string name="create_new_alpha">Create new alpha</string>
<string name="create_new_tattoo">Create new tattoo</string>
+ <string name="create_new_universal">Create new universal</string>
<string name="create_new_physics">Create new physics</string>
<string name="create_new_invalid">invalid</string>
@@ -3805,6 +3808,7 @@ Abuse Report</string>
<string name="New Skirt">New Skirt</string>
<string name="New Alpha">New Alpha</string>
<string name="New Tattoo">New Tattoo</string>
+ <string name="New Universal">New Universal</string>
<string name="New Physics">New Physics</string>
<string name="Invalid Wearable">Invalid Wearable</string>
<string name="New Gesture">New Gesture</string>