summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeraph Linden <none@none>2011-04-03 13:56:55 -0400
committerSeraph Linden <none@none>2011-04-03 13:56:55 -0400
commita47ea6c619d1b689478f9e41c87cb89c010273de (patch)
tree0a30299a13e89db878f1c2b8837f79c1413d96ce
parentcc2a813ce40a09bab230a62809f5ff21083a81f2 (diff)
Added breast sway (left-right).
-rw-r--r--indra/newview/character/avatar_lad.xml77
-rw-r--r--indra/newview/llpaneleditwearable.cpp4
-rw-r--r--indra/newview/llphysicsmotion.cpp25
-rw-r--r--indra/newview/llpolymesh.cpp31
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_physics.xml14
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml5
6 files changed, 154 insertions, 2 deletions
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index fa286e99ef..c63701cea5 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -4331,6 +4331,18 @@
<param_morph />
</param>
+ <param
+ id="1207"
+ group="1"
+ name="Breast_Physics_LeftRight_Driven"
+ wearable="physics"
+ edit_group="driven"
+ value_default="0"
+ value_min="-2"
+ value_max="2">
+ <param_morph />
+ </param>
+
<!--
#end morph targets
-->
@@ -4873,7 +4885,6 @@
<param_morph />
</param>
-
<!--
#end morph targets
-->
@@ -11787,6 +11798,21 @@ render_pass="bump">
</param>
<param
+ id="1105"
+ group="1"
+ wearable="shape"
+ name="Breast_Physics_LeftRight_Controller"
+ label="Breast Physics LeftRight Controller"
+ value_min="-1"
+ value_max="1"
+ value_default="0">
+ <param_driver>
+ <driven
+ id="1207" />
+ </param_driver>
+ </param>
+
+ <param
id="10000"
group="0"
sex="female"
@@ -12192,6 +12218,55 @@ render_pass="bump">
<param_driver />
</param>
+ <param
+ id="10032"
+ group="0"
+ name="Breast_Physics_LeftRight_Max_Velocity"
+ label="Breast Physics LeftRight Max Speed"
+ wearable="physics"
+ edit_group="physics_breasts_leftright"
+ value_default="0"
+ value_min="0"
+ value_max="10">
+ <param_driver />
+ </param>
+ <param
+ id="10033"
+ group="0"
+ name="Breast_Physics_LeftRight_Spring"
+ label="Breast Physics LeftRight Spring"
+ wearable="physics"
+ edit_group="physics_breasts_leftright"
+ value_default=".1"
+ value_min="0"
+ value_max="1">
+ <param_driver />
+ </param>
+ <param
+ id="10034"
+ group="0"
+ name="Breast_Physics_LeftRight_Gain"
+ label="Breast Physics LeftRight Gain"
+ wearable="physics"
+ edit_group="physics_breasts_leftright"
+ value_default="10"
+ value_min="1"
+ value_max="100">
+ <param_driver />
+ </param>
+ <param
+ id="10035"
+ group="0"
+ name="Breast_Physics_LeftRight_Damping"
+ label="Breast Physics LeftRight Damping"
+ wearable="physics"
+ edit_group="physics_breasts_leftright"
+ value_default=".05"
+ value_min="0"
+ value_max=".1">
+ <param_driver />
+ </param>
+
</driver_parameters>
<morph_masks>
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index d0ce765a69..8bd2d5ad6a 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -97,6 +97,7 @@ enum ESubpart {
SUBPART_TATTOO,
SUBPART_PHYSICS_BREASTS_UPDOWN,
SUBPART_PHYSICS_BREASTS_INOUT,
+ SUBPART_PHYSICS_BREASTS_LEFTRIGHT,
SUBPART_PHYSICS_BELLY_UPDOWN,
SUBPART_PHYSICS_BUTT_UPDOWN,
SUBPART_PHYSICS_BUTT_LEFTRIGHT,
@@ -239,7 +240,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,6, SUBPART_PHYSICS_BREASTS_UPDOWN, SUBPART_PHYSICS_BREASTS_INOUT, SUBPART_PHYSICS_BELLY_UPDOWN, SUBPART_PHYSICS_BUTT_UPDOWN, SUBPART_PHYSICS_BUTT_LEFTRIGHT, SUBPART_PHYSICS_ADVANCED));
+ addEntry(LLWearableType::WT_PHYSICS, new WearableEntry(LLWearableType::WT_PHYSICS,"edit_physics_title","physics_desc_text",0,0,7, 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,
@@ -312,6 +313,7 @@ LLEditWearableDictionary::Subparts::Subparts()
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_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));
diff --git a/indra/newview/llphysicsmotion.cpp b/indra/newview/llphysicsmotion.cpp
index 53809b4d19..43044e20ea 100644
--- a/indra/newview/llphysicsmotion.cpp
+++ b/indra/newview/llphysicsmotion.cpp
@@ -287,6 +287,31 @@ LLMotion::LLMotionInitStatus LLPhysicsMotionController::onInitialize(LLCharacter
}
addMotion(motion);
}
+
+ // Breast Sway
+ {
+ controller_map_t controller;
+ controller["Mass"] = "Breast_Physics_Mass";
+ controller["Smoothing"] = "Breast_Physics_Smoothing";
+ controller["Gravity"] = "Breast_Physics_Gravity";
+ controller["Drag"] = "Breast_Physics_Drag";
+ controller["Damping"] = "Breast_Physics_LeftRight_Damping";
+ controller["MaxSpeed"] = "Breast_Physics_LeftRight_Max_Velocity";
+ controller["Spring"] = "Breast_Physics_LeftRight_Spring";
+ controller["Gain"] = "Breast_Physics_LeftRight_Gain";
+ LLPhysicsMotion *motion = new LLPhysicsMotion("Breast_Physics_LeftRight_Controller",
+ "",
+ "mChest",
+ character,
+ LLVector3(0,-1,0),
+ controller);
+ if (!motion->initialize())
+ {
+ llassert_always(FALSE);
+ return STATUS_FAILURE;
+ }
+ addMotion(motion);
+ }
// Butt Bounce
{
diff --git a/indra/newview/llpolymesh.cpp b/indra/newview/llpolymesh.cpp
index 6d6fb2fa0e..c1144958eb 100644
--- a/indra/newview/llpolymesh.cpp
+++ b/indra/newview/llpolymesh.cpp
@@ -49,6 +49,9 @@ extern LLControlGroup gSavedSettings; // read only
LLPolyMorphData *clone_morph_param(const LLPolyMorphData *src_data,
const LLVector3 &direction,
const std::string &name);
+LLPolyMorphData *clone_morph_param_cleavage(const LLPolyMorphData *src_data,
+ F32 scale,
+ const std::string &name);
//-----------------------------------------------------------------------------
// Global table of loaded LLPolyMeshes
@@ -607,6 +610,13 @@ BOOL LLPolyMeshSharedData::loadMesh( const std::string& fileName )
mMorphData.insert(morph_data);
+ if (!strcmp(morphName, "Breast_Female_Cleavage"))
+ {
+ mMorphData.insert(clone_morph_param_cleavage(morph_data,
+ 0.5f,
+ "Breast_Physics_LeftRight_Driven"));
+ }
+
if (!strcmp(morphName, "Big_Belly_Torso"))
{
mMorphData.insert(clone_morph_param(morph_data,
@@ -1212,4 +1222,25 @@ LLPolyMorphData *clone_morph_param(const LLPolyMorphData *src_data,
return cloned_morph_data;
}
+LLPolyMorphData *clone_morph_param_cleavage(const LLPolyMorphData *src_data,
+ F32 scale,
+ const std::string &name)
+{
+ LLPolyMorphData* cloned_morph_data = new LLPolyMorphData(*src_data);
+ cloned_morph_data->mName = name;
+ for (U32 v=0; v < cloned_morph_data->mNumIndices; v++)
+ {
+ cloned_morph_data->mCoords[v] = src_data->mCoords[v]*scale;
+ cloned_morph_data->mNormals[v] = src_data->mNormals[v]*scale;
+ cloned_morph_data->mBinormals[v] = src_data->mBinormals[v]*scale;
+ if (cloned_morph_data->mCoords[v][1] < 0)
+ {
+ cloned_morph_data->mCoords[v][1] *= -1;
+ cloned_morph_data->mNormals[v][1] *= -1;
+ cloned_morph_data->mBinormals[v][1] *= -1;
+ }
+ }
+ return cloned_morph_data;
+}
+
// End
diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
index c6f974f4f1..0092ceb0dd 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_physics.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
@@ -64,6 +64,20 @@
layout="topleft"
fit_panel="false"
min_height="50"
+ name="physics_breasts_leftright_tab"
+ title="Breasts Sway">
+ <scrolling_panel_list
+ follows="all"
+ layout="topleft"
+ left="0"
+ name="physics_breasts_leftright_param_list"
+ top_pad="50"
+ width="303" />
+ </accordion_tab>
+ <accordion_tab
+ layout="topleft"
+ fit_panel="false"
+ min_height="50"
name="physics_belly_tab"
title="Belly Bounce">
<scrolling_panel_list
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 879ed2b505..b4c3ab3817 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2526,6 +2526,11 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
<string name="Breast Physics UpDown Gain">Gain</string>
<string name="Breast Physics UpDown Damping">Damping</string>
+<string name="Breast Physics LeftRight Max Speed">Max Effect</string>
+<string name="Breast Physics LeftRight Spring">Spring</string>
+<string name="Breast Physics LeftRight Gain">Gain</string>
+<string name="Breast Physics LeftRight Damping">Damping</string>
+
<string name="Belly Physics Mass">Belly Mass</string>
<string name="Belly Physics Smoothing">Belly Smoothing</string>
<string name="Belly Physics Gravity">Belly Gravity</string>