Created new wearable type.

Added debug setting for disabling physics.
Added disable-multiwear and disable-camera-reset to wearabletype.
master
Loren Shih 2010-08-23 16:13:10 -04:00
parent 78538f4f61
commit 981a43b355
28 changed files with 254 additions and 3472 deletions

View File

@ -619,6 +619,19 @@
<key>Value</key>
<integer>0</integer>
</map>
<key>AvatarPhysics</key>
<map>
<key>Comment</key>
<string>Enable avatar physics, such as breast physics.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>1</integer>
</map>
<key>BackgroundYieldTime</key>
<map>
<key>Comment</key>

View File

@ -9079,8 +9079,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Mass"
label="Breast Physics Mass"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="1"
@ -9097,8 +9097,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Smoothing"
label="Breast Physics Smoothing"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="2"
@ -9115,8 +9115,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Gravity"
label="Breast Physics Gravity"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="0"
@ -9133,8 +9133,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Side_Spring"
label="Breast Physics Side Spring"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="3"
@ -9151,8 +9151,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Side_Gain"
label="Breast Physics Side Gain"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="10"
@ -9169,8 +9169,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Side_Damping"
label="Breast Physics Side Damping"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default=".5"
@ -9187,8 +9187,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Side_Drag"
label="Breast Physics Side Drag"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default=".1"
@ -9205,8 +9205,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_Side_Range"
label="Breast Physics Side Range"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="10"
@ -9224,8 +9224,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_UpDown_Spring"
label="Breast Physics UpDown Spring"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="1.5"
@ -9242,8 +9242,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_UpDown_Gain"
label="Breast Physics UpDown Gain"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="50"
@ -9260,8 +9260,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_UpDown_Damping"
label="Breast Physics UpDown Damping"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default=".1"
@ -9278,8 +9278,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_UpDown_Drag"
label="Breast Physics UpDown Drag"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default=".1"
@ -9296,8 +9296,8 @@ render_pass="bump">
sex="female"
name="Breast_Physics_UpDown_Range"
label="Breast Physics UpDown Range"
wearable="shape"
edit_group="shape_physics"
wearable="physics"
edit_group="physics"
label_min="Less"
label_max="More"
value_default="10"
@ -9308,6 +9308,8 @@ render_pass="bump">
<param_driver />
</param>
<param
id="1087"
group="0"

View File

@ -1717,6 +1717,7 @@ void LLAgentWearables::userRemoveAllClothesStep2(BOOL proceed)
gAgentWearables.removeWearable(LLWearableType::WT_SKIRT,true,0);
gAgentWearables.removeWearable(LLWearableType::WT_ALPHA,true,0);
gAgentWearables.removeWearable(LLWearableType::WT_TATTOO,true,0);
gAgentWearables.removeWearable(LLWearableType::WT_PHYSICS,true,0);
}
}
@ -2042,8 +2043,9 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
return;
}
const BOOL disable_camera_switch = LLWearableType::getDisableCameraSwitch(wearable->getType());
LLPanel* panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance");
LLSidepanelAppearance::editWearable(wearable, panel);
LLSidepanelAppearance::editWearable(wearable, panel, disable_camera_switch);
}
// Request editing the item after it gets worn.

View File

@ -4496,6 +4496,11 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
disabled_items.push_back(std::string("Take Off"));
disabled_items.push_back(std::string("Wearable Edit"));
}
if (gAgentWearables.isWearingWearableType(mWearableType) &&
!LLWearableType::getAllowMultiwear(mWearableType))
{
disabled_items.push_back(std::string("Wearable Add"));
}
break;
default:
break;

View File

@ -82,6 +82,8 @@ LLIconDictionary::LLIconDictionary()
addEntry(LLInventoryIcon::ICONNAME_ANIMATION, new IconEntry("Inv_Animation"));
addEntry(LLInventoryIcon::ICONNAME_GESTURE, new IconEntry("Inv_Gesture"));
addEntry(LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, new IconEntry("Inv_Physics"));
addEntry(LLInventoryIcon::ICONNAME_LINKITEM, new IconEntry("Inv_LinkItem"));
addEntry(LLInventoryIcon::ICONNAME_LINKFOLDER, new IconEntry("Inv_LinkItem"));

View File

@ -66,9 +66,11 @@ public:
ICONNAME_CLOTHING_SKIRT,
ICONNAME_CLOTHING_ALPHA,
ICONNAME_CLOTHING_TATTOO,
ICONNAME_ANIMATION,
ICONNAME_GESTURE,
ICONNAME_CLOTHING_PHYSICS,
ICONNAME_LINKITEM,
ICONNAME_LINKFOLDER,

View File

@ -72,7 +72,6 @@ enum ESubpart {
SUBPART_SHAPE_MOUTH,
SUBPART_SHAPE_CHIN,
SUBPART_SHAPE_TORSO,
SUBPART_SHAPE_PHYSICS,
SUBPART_SHAPE_LEGS,
SUBPART_SHAPE_WHOLE,
SUBPART_SHAPE_DETAIL,
@ -95,7 +94,8 @@ enum ESubpart {
SUBPART_UNDERPANTS,
SUBPART_SKIRT,
SUBPART_ALPHA,
SUBPART_TATTOO
SUBPART_TATTOO,
SUBPART_PHYSICS
};
using namespace LLVOAvatarDefines;
@ -219,7 +219,7 @@ 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",0,0,10, 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, SUBPART_SHAPE_PHYSICS));
addEntry(LLWearableType::WT_SHAPE, new WearableEntry(LLWearableType::WT_SHAPE,"edit_shape_title","shape_desc_text",0,0,9, 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",0,3,4, TEX_HEAD_BODYPAINT, TEX_UPPER_BODYPAINT, TEX_LOWER_BODYPAINT, 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",0,1,4, TEX_HAIR, 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",0,1,1, TEX_EYES_IRIS, SUBPART_EYES));
@ -234,6 +234,7 @@ LLEditWearableDictionary::Wearables::Wearables()
addEntry(LLWearableType::WT_SKIRT, new WearableEntry(LLWearableType::WT_SKIRT,"edit_skirt_title","skirt_desc_text",1,1,1, TEX_SKIRT, TEX_SKIRT, SUBPART_SKIRT));
addEntry(LLWearableType::WT_ALPHA, new WearableEntry(LLWearableType::WT_ALPHA,"edit_alpha_title","alpha_desc_text",0,5,1, TEX_LOWER_ALPHA, TEX_UPPER_ALPHA, TEX_HEAD_ALPHA, TEX_EYES_ALPHA, TEX_HAIR_ALPHA, SUBPART_ALPHA));
addEntry(LLWearableType::WT_TATTOO, new WearableEntry(LLWearableType::WT_TATTOO,"edit_tattoo_title","tattoo_desc_text",1,3,1, TEX_HEAD_TATTOO, TEX_LOWER_TATTOO, TEX_UPPER_TATTOO, TEX_HEAD_TATTOO, SUBPART_TATTOO));
addEntry(LLWearableType::WT_PHYSICS, new WearableEntry(LLWearableType::WT_PHYSICS,"edit_physics_title","physics_desc_text",0,0,1, SUBPART_PHYSICS));
}
LLEditWearableDictionary::WearableEntry::WearableEntry(LLWearableType::EType type,
@ -279,7 +280,6 @@ LLEditWearableDictionary::Subparts::Subparts()
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_PHYSICS, new SubpartEntry(SUBPART_SHAPE_PHYSICS, "mTorso", "shape_physics", "shape_physics_param_list", "shape_physics_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_FEMALE));
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));
@ -305,6 +305,7 @@ 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, new SubpartEntry(SUBPART_PHYSICS, "mTorso", "physics", "physics_main_param_list", "physics_main_tab", LLVector3d(0.f, 0.f, 0.3f), LLVector3d(-1.f, 0.15f, 0.3f),SEX_FEMALE));
}
LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,
@ -741,6 +742,7 @@ BOOL LLPanelEditWearable::postBuild()
mPanelSkirt = getChild<LLPanel>("edit_skirt_panel");
mPanelAlpha = getChild<LLPanel>("edit_alpha_panel");
mPanelTattoo = getChild<LLPanel>("edit_tattoo_panel");
mPanelPhysics = getChild<LLPanel>("edit_physics_panel");
mTxtAvatarHeight = mPanelShape->getChild<LLTextBox>("avatar_height");
@ -1360,6 +1362,11 @@ LLPanel* LLPanelEditWearable::getPanel(LLWearableType::EType type)
case LLWearableType::WT_TATTOO:
return mPanelTattoo;
break;
case LLWearableType::WT_PHYSICS:
return mPanelPhysics;
break;
default:
break;
}

View File

@ -163,6 +163,7 @@ private:
LLPanel *mPanelSkirt;
LLPanel *mPanelAlpha;
LLPanel *mPanelTattoo;
LLPanel *mPanelPhysics;
typedef std::map<std::string, LLVOAvatarDefines::ETextureIndex> string_texture_index_map_t;
string_texture_index_map_t mAlphaCheckbox2Index;

View File

@ -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("physics"), new LLFindActualWearablesOfType(LLWearableType::WT_PHYSICS)));
mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name");
mStatus = getChild<LLTextBox>("status");

View File

@ -96,6 +96,7 @@ public:
LVIT_SKIRT,
LVIT_ALPHA,
LVIT_TATTOO,
LVIT_PHYSICS,
NUM_LIST_VIEW_ITEM_TYPES
} EListViewItemType;

View File

@ -434,14 +434,14 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
}
//static
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data)
void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
{
LLSideTray::getInstance()->showPanel("sidepanel_appearance");
LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
if (panel)
{
panel->showWearableEditPanel(wearable);
panel->showWearableEditPanel(wearable, disable_camera_switch);
}
}

View File

@ -51,7 +51,7 @@ public:
void refreshCurrentOutfitName(const std::string& name = "");
static void editWearable(LLWearable *wearable, LLView *data);
static void editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch = FALSE);
void fetchInventory();
void inventoryFetched();

View File

@ -85,6 +85,7 @@ public:
mInventoryItemsDict["New Skirt"] = LLTrans::getString("New Skirt");
mInventoryItemsDict["New Alpha"] = LLTrans::getString("New Alpha");
mInventoryItemsDict["New Tattoo"] = LLTrans::getString("New Tattoo");
mInventoryItemsDict["New Physics"] = LLTrans::getString("New Physics");
mInventoryItemsDict["Invalid Wearable"] = LLTrans::getString("Invalid Wearable");
mInventoryItemsDict["New Gesture"] = LLTrans::getString("New Gesture");

View File

@ -103,7 +103,7 @@ extern F32 ANIM_SPEED_MIN;
#include <boost/lexical_cast.hpp>
#define OUTPUT_BREAST_DATA
// #define OUTPUT_BREAST_DATA
using namespace LLVOAvatarDefines;
@ -787,6 +787,11 @@ public:
// must return FALSE when the motion is completed.
virtual BOOL onUpdate(F32 time, U8* joint_mask)
{
if (!gSavedSettings.getBOOL("AvatarPhysics"))
{
return FALSE;
}
/*
FILE *fread = fopen("c:\\temp\\breast_data.txt","r");
if (fread)

View File

@ -443,6 +443,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_PHYSICS, "physics_not_worn"));
return w_map;
}

View File

@ -34,25 +34,27 @@ struct WearableEntry : public LLDictionaryEntry
WearableEntry(const std::string &name,
const std::string& default_new_name,
LLAssetType::EType assetType,
LLInventoryIcon::EIconName iconName);
LLInventoryIcon::EIconName iconName,
BOOL disable_camera_switch = FALSE,
BOOL allow_multiwear = TRUE) :
LLDictionaryEntry(name),
mAssetType(assetType),
mDefaultNewName(default_new_name),
mLabel(LLTrans::getString(name)),
mIconName(iconName),
mDisableCameraSwitch(disable_camera_switch),
mAllowMultiwear(allow_multiwear)
{
}
const LLAssetType::EType mAssetType;
const std::string mLabel;
const std::string mDefaultNewName; //keep mLabel for backward compatibility
LLInventoryIcon::EIconName mIconName;
BOOL mDisableCameraSwitch;
BOOL mAllowMultiwear;
};
WearableEntry::WearableEntry(const std::string &name,
const std::string& default_new_name,
LLAssetType::EType assetType,
LLInventoryIcon::EIconName iconName) :
LLDictionaryEntry(name),
mAssetType(assetType),
mDefaultNewName(default_new_name),
mLabel(LLTrans::getString(name)),
mIconName(iconName)
{
}
class LLWearableDictionary : public LLSingleton<LLWearableDictionary>,
public LLDictionary<LLWearableType::EType, WearableEntry>
{
@ -62,23 +64,26 @@ public:
LLWearableDictionary::LLWearableDictionary()
{
addEntry(LLWearableType::WT_SHAPE, new WearableEntry("shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SHAPE));
addEntry(LLWearableType::WT_SKIN, new WearableEntry("skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SKIN));
addEntry(LLWearableType::WT_HAIR, new WearableEntry("hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_HAIR));
addEntry(LLWearableType::WT_EYES, new WearableEntry("eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_EYES));
addEntry(LLWearableType::WT_SHIRT, new WearableEntry("shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHIRT));
addEntry(LLWearableType::WT_PANTS, new WearableEntry("pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_PANTS));
addEntry(LLWearableType::WT_SHOES, new WearableEntry("shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHOES));
addEntry(LLWearableType::WT_SOCKS, new WearableEntry("socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SOCKS));
addEntry(LLWearableType::WT_JACKET, new WearableEntry("jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_JACKET));
addEntry(LLWearableType::WT_GLOVES, new WearableEntry("gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_GLOVES));
addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry("undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT));
addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry("underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS));
addEntry(LLWearableType::WT_SKIRT, new WearableEntry("skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SKIRT));
addEntry(LLWearableType::WT_ALPHA, new WearableEntry("alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_ALPHA));
addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_TATTOO));
addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE));
addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE));
addEntry(LLWearableType::WT_SHAPE, new WearableEntry("shape", "New Shape", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SHAPE, FALSE, FALSE));
addEntry(LLWearableType::WT_SKIN, new WearableEntry("skin", "New Skin", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_SKIN, FALSE, FALSE));
addEntry(LLWearableType::WT_HAIR, new WearableEntry("hair", "New Hair", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_HAIR, FALSE, FALSE));
addEntry(LLWearableType::WT_EYES, new WearableEntry("eyes", "New Eyes", LLAssetType::AT_BODYPART, LLInventoryIcon::ICONNAME_BODYPART_EYES, FALSE, FALSE));
addEntry(LLWearableType::WT_SHIRT, new WearableEntry("shirt", "New Shirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_PANTS, new WearableEntry("pants", "New Pants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_PANTS, FALSE, TRUE));
addEntry(LLWearableType::WT_SHOES, new WearableEntry("shoes", "New Shoes", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SHOES, FALSE, TRUE));
addEntry(LLWearableType::WT_SOCKS, new WearableEntry("socks", "New Socks", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SOCKS, FALSE, TRUE));
addEntry(LLWearableType::WT_JACKET, new WearableEntry("jacket", "New Jacket", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_JACKET, FALSE, TRUE));
addEntry(LLWearableType::WT_GLOVES, new WearableEntry("gloves", "New Gloves", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_GLOVES, FALSE, TRUE));
addEntry(LLWearableType::WT_UNDERSHIRT, new WearableEntry("undershirt", "New Undershirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERSHIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_UNDERPANTS, new WearableEntry("underpants", "New Underpants", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_UNDERPANTS, FALSE, TRUE));
addEntry(LLWearableType::WT_SKIRT, new WearableEntry("skirt", "New Skirt", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_SKIRT, FALSE, TRUE));
addEntry(LLWearableType::WT_ALPHA, new WearableEntry("alpha", "New Alpha", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_ALPHA, FALSE, TRUE));
addEntry(LLWearableType::WT_TATTOO, new WearableEntry("tattoo", "New Tattoo", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_TATTOO, FALSE, TRUE));
addEntry(LLWearableType::WT_PHYSICS, new WearableEntry("physics", "New Physics", LLAssetType::AT_CLOTHING, LLInventoryIcon::ICONNAME_CLOTHING_PHYSICS, TRUE, FALSE));
addEntry(LLWearableType::WT_INVALID, new WearableEntry("invalid", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
addEntry(LLWearableType::WT_NONE, new WearableEntry("none", "Invalid Wearable", LLAssetType::AT_NONE, LLInventoryIcon::ICONNAME_NONE, FALSE, FALSE));
}
// static
@ -129,3 +134,19 @@ LLInventoryIcon::EIconName LLWearableType::getIconName(LLWearableType::EType typ
return entry->mIconName;
}
// static
BOOL LLWearableType::getDisableCameraSwitch(LLWearableType::EType type)
{
const LLWearableDictionary *dict = LLWearableDictionary::getInstance();
const WearableEntry *entry = dict->lookup(type);
return entry->mDisableCameraSwitch;
}
// static
BOOL LLWearableType::getAllowMultiwear(LLWearableType::EType type)
{
const LLWearableDictionary *dict = LLWearableDictionary::getInstance();
const WearableEntry *entry = dict->lookup(type);
return entry->mAllowMultiwear;
}

View File

@ -52,7 +52,8 @@ public:
WT_SKIRT = 12,
WT_ALPHA = 13,
WT_TATTOO = 14,
WT_COUNT = 15,
WT_PHYSICS = 15,
WT_COUNT = 16,
WT_INVALID = 255,
WT_NONE = -1,
@ -64,6 +65,8 @@ public:
static LLAssetType::EType getAssetType(EType type);
static EType typeNameToType(const std::string& type_name);
static LLInventoryIcon::EIconName getIconName(EType type);
static BOOL getDisableCameraSwitch(EType type);
static BOOL getAllowMultiwear(EType type);
protected:
LLWearableType() {}

View File

@ -223,6 +223,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_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" />
<texture name="Inv_TrashOpen" file_name="icons/Inv_TrashOpen.png" preload="false" />

File diff suppressed because it is too large Load Diff

View File

@ -80,14 +80,6 @@ name="Edit Outfit">
<menu_item_call.on_enable
function="Edit.EnableEditShape" />
</menu_item_call>
<menu_item_call label="Edit My Physics"
layout="topleft"
name="Edit My Physics">
<menu_item_call.on_click
function="EditPhysics" />
<menu_item_call.on_enable
function="Edit.EnableEditPhysics" />
</menu_item_call>
<menu_item_call
label="My Friends"
layout="topleft"

View File

@ -140,6 +140,18 @@
function="Edit.EnableTakeOff"
parameter="tattoo" />
</menu_item_call>
<menu_item_call
enabled="false"
label="Physics"
layout="topleft"
name="Self Physics">
<menu_item_call.on_click
function="Edit.TakeOff"
parameter="physics" />
<menu_item_call.on_enable
function="Edit.EnableTakeOff"
parameter="physics" />
</menu_item_call>
<menu_item_call
enabled="false"
label="Alpha"
@ -206,14 +218,6 @@
function="EditShape" />
<menu_item_call.on_enable
function="Edit.EnableEditShape" />
</menu_item_call>
<menu_item_call label="Edit My Physics"
layout="topleft"
name="Edit My Physics">
<menu_item_call.on_click
function="EditPhysics" />
<menu_item_call.on_enable
function="Edit.EnableEditPhysics" />
</menu_item_call>
<menu_item_call
label="My Friends"

View File

@ -200,6 +200,14 @@
function="Inventory.DoCreate"
parameter="tattoo" />
</menu_item_call>
<menu_item_call
label="New Physics"
layout="topleft"
name="New Physics">
<menu_item_call.on_click
function="Inventory.DoCreate"
parameter="physics" />
</menu_item_call>
</menu>
<menu
label="New Body Parts"

View File

@ -188,6 +188,14 @@
function="Inventory.DoCreate"
parameter="tattoo" />
</menu_item_call>
<menu_item_call
label="New Physics"
layout="topleft"
name="New Physics">
<menu_item_call.on_click
function="Inventory.DoCreate"
parameter="physics" />
</menu_item_call>
</menu>
<menu
height="85"

View File

@ -132,6 +132,14 @@
function="Gear.Create"
parameter="alpha" />
</menu_item_call>
<menu_item_call
label="New Physics"
layout="topleft"
name="New Physics">
<menu_item_call.on_click
function="Gear.Create"
parameter="physics" />
</menu_item_call>
<menu_item_call
label="New Tattoo"
layout="topleft"

View File

@ -3305,6 +3305,16 @@
function="Edit.EnableTakeOff"
parameter="tattoo" />
</menu_item_call>
<menu_item_call
label="Physics"
name="Physics">
<menu_item_call.on_click
function="Edit.TakeOff"
parameter="physics" />
<menu_item_call.on_enable
function="Edit.EnableTakeOff"
parameter="physics" />
</menu_item_call>
<menu_item_call
label="All Clothes"
name="All Clothes">

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
background_visible="true"
follows="all"
height="400"
layout="topleft"
left="0"
name="edit_physics_panel"
top_pad="10"
width="333" >
<panel
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
background_visible="true"
background_opaque="true"
follows="all"
height="300"
layout="topleft"
left="10"
name="accordion_panel"
top_pad="10"
width="313">
<accordion
fit_parent="true"
follows="all"
height ="300"
layout="topleft"
left="0"
name="wearable_accordion"
single_expansion="true"
top="0"
width="313">
<accordion_tab
layout="topleft"
fit_panel="false"
min_height="150"
name="physics_main_tab"
title="Physics">
<scrolling_panel_list
follows="all"
layout="topleft"
left="0"
name="physics_main_param_list"
top="0"
width="303" />
</accordion_tab>
</accordion>
</panel>
</panel>

View File

@ -71,6 +71,10 @@
name="edit_tattoo_title">
Editing Tattoo
</string>
<string
name="edit_physics_title">
Editing Physics
</string>
<string
name="shape_desc_text">
Shape:
@ -131,6 +135,10 @@
name="tattoo_desc_text">
Tattoo:
</string>
<string
name="physics_desc_text">
Physics:
</string>
<!-- Default width of the button should be to show it without label.
Button will be extedned in code to show whole label when wearable is being changed.
-->
@ -407,6 +415,16 @@
top="8"
visible="false"
width="333" />
<panel
filename="panel_edit_physics.xml"
follows="all"
height="425"
layout="topleft"
left="0"
name="edit_physics_panel"
top="8"
visible="false"
width="333" />
</panel>
<panel
follows="bottom|left|right"

View File

@ -1813,6 +1813,7 @@ Clears (deletes) the media and all params from the given face.
<string name="skirt">Skirt</string>
<string name="alpha">Alpha</string>
<string name="tattoo">Tattoo</string>
<string name="physics">Physics</string>
<string name="invalid">invalid</string>
<string name="none">none</string>
@ -1828,6 +1829,7 @@ Clears (deletes) the media and all params from the given face.
<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="physics_not_worn">Physics not worn</string>
<string name="invalid_not_worn">invalid</string>
<!-- Create new wearable of the specified type -->
@ -1846,6 +1848,7 @@ Clears (deletes) the media and all params from the given face.
<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_physics">Create new physics</string>
<string name="create_new_invalid">invalid</string>
<!-- Wearable List-->
@ -3186,6 +3189,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 Physics">New Physics</string>
<string name="Invalid Wearable">Invalid Wearable</string>
<string name="New Gesture">New Gesture</string>
<string name="New Script">New Script</string>