diff options
author | Armin Weatherwax | 2011-01-29 15:50:28 +0100 |
---|---|---|
committer | Armin Weatherwax | 2011-01-29 17:31:32 +0100 |
commit | 76c8494525b8e2b17bbe61f0bde61645b825bb66 (patch) | |
tree | c19042985edbe2f7d278fe6e8787d61adfbfcf2f /linden/indra | |
parent | Add an UI for Display name settings to prefs general, make the setting more i... (diff) | |
download | meta-impy-76c8494525b8e2b17bbe61f0bde61645b825bb66.zip meta-impy-76c8494525b8e2b17bbe61f0bde61645b825bb66.tar.gz meta-impy-76c8494525b8e2b17bbe61f0bde61645b825bb66.tar.bz2 meta-impy-76c8494525b8e2b17bbe61f0bde61645b825bb66.tar.xz |
Update: Henri Beauchamp: Port of SG-2.0 alpha and tattoo layers v6->v9
issue tattoo tinting does not work
Diffstat (limited to '')
-rw-r--r-- | linden/indra/llcharacter/llcharacter.cpp | 4 | ||||
-rw-r--r-- | linden/indra/llcharacter/llcharacter.h | 14 | ||||
-rw-r--r-- | linden/indra/llcharacter/llvisualparam.cpp | 4 | ||||
-rw-r--r-- | linden/indra/llcharacter/llvisualparam.h | 2 | ||||
-rw-r--r-- | linden/indra/newview/llagent.cpp | 2 | ||||
-rw-r--r-- | linden/indra/newview/llfloatercustomize.cpp | 8 | ||||
-rw-r--r-- | linden/indra/newview/lltexlayer.cpp | 45 | ||||
-rw-r--r-- | linden/indra/newview/llvoavatar.cpp | 29 | ||||
-rw-r--r-- | linden/indra/newview/llwearable.cpp | 14 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_customize.xml | 6 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml | 4 |
11 files changed, 70 insertions, 62 deletions
diff --git a/linden/indra/llcharacter/llcharacter.cpp b/linden/indra/llcharacter/llcharacter.cpp index 46ac326..72cef83 100644 --- a/linden/indra/llcharacter/llcharacter.cpp +++ b/linden/indra/llcharacter/llcharacter.cpp | |||
@@ -379,7 +379,7 @@ void LLCharacter::clearVisualParamWeights() | |||
379 | param; | 379 | param; |
380 | param = getNextVisualParam()) | 380 | param = getNextVisualParam()) |
381 | { | 381 | { |
382 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 382 | if (param->isTweakable()) |
383 | { | 383 | { |
384 | param->setWeight( param->getDefaultWeight(), FALSE ); | 384 | param->setWeight( param->getDefaultWeight(), FALSE ); |
385 | } | 385 | } |
@@ -395,7 +395,7 @@ BOOL LLCharacter::visualParamWeightsAreDefault() | |||
395 | param; | 395 | param; |
396 | param = getNextVisualParam()) | 396 | param = getNextVisualParam()) |
397 | { | 397 | { |
398 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 398 | if (param->isTweakable()) |
399 | { | 399 | { |
400 | if (param->getWeight() != param->getDefaultWeight()) | 400 | if (param->getWeight() != param->getDefaultWeight()) |
401 | return false; | 401 | return false; |
diff --git a/linden/indra/llcharacter/llcharacter.h b/linden/indra/llcharacter/llcharacter.h index d91124b..7630760 100644 --- a/linden/indra/llcharacter/llcharacter.h +++ b/linden/indra/llcharacter/llcharacter.h | |||
@@ -231,6 +231,20 @@ public: | |||
231 | return (mCurIterator++)->second; | 231 | return (mCurIterator++)->second; |
232 | } | 232 | } |
233 | 233 | ||
234 | S32 getVisualParamCountInGroup(EVisualParamGroup group) | ||
235 | { | ||
236 | S32 rtn = 0; | ||
237 | VisualParamIndexMap_t::iterator iter; | ||
238 | for (iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++) | ||
239 | { | ||
240 | if (iter->second->getGroup() == group) | ||
241 | { | ||
242 | rtn++; | ||
243 | } | ||
244 | } | ||
245 | return rtn; | ||
246 | } | ||
247 | |||
234 | LLVisualParam* getVisualParam(S32 id) | 248 | LLVisualParam* getVisualParam(S32 id) |
235 | { | 249 | { |
236 | VisualParamIndexMap_t::iterator iter = mVisualParamIndexMap.find(id); | 250 | VisualParamIndexMap_t::iterator iter = mVisualParamIndexMap.find(id); |
diff --git a/linden/indra/llcharacter/llvisualparam.cpp b/linden/indra/llcharacter/llvisualparam.cpp index d7a144e..9579ff8 100644 --- a/linden/indra/llcharacter/llvisualparam.cpp +++ b/linden/indra/llcharacter/llvisualparam.cpp | |||
@@ -238,7 +238,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL set_by_user) | |||
238 | { | 238 | { |
239 | if (mInfo) | 239 | if (mInfo) |
240 | { | 240 | { |
241 | if (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 241 | if (isTweakable()) |
242 | { | 242 | { |
243 | mTargetWeight = llclamp(target_value, mInfo->mMinWeight, mInfo->mMaxWeight); | 243 | mTargetWeight = llclamp(target_value, mInfo->mMinWeight, mInfo->mMaxWeight); |
244 | } | 244 | } |
@@ -282,7 +282,7 @@ void LLVisualParam::animate( F32 delta, BOOL set_by_user ) | |||
282 | //----------------------------------------------------------------------------- | 282 | //----------------------------------------------------------------------------- |
283 | void LLVisualParam::stopAnimating(BOOL set_by_user) | 283 | void LLVisualParam::stopAnimating(BOOL set_by_user) |
284 | { | 284 | { |
285 | if (mIsAnimating && getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 285 | if (mIsAnimating && isTweakable()) |
286 | { | 286 | { |
287 | mIsAnimating = FALSE; | 287 | mIsAnimating = FALSE; |
288 | setWeight(mTargetWeight, set_by_user); | 288 | setWeight(mTargetWeight, set_by_user); |
diff --git a/linden/indra/llcharacter/llvisualparam.h b/linden/indra/llcharacter/llvisualparam.h index 3a0c1bb..8ec5497 100644 --- a/linden/indra/llcharacter/llvisualparam.h +++ b/linden/indra/llcharacter/llvisualparam.h | |||
@@ -51,6 +51,7 @@ enum EVisualParamGroup | |||
51 | { | 51 | { |
52 | VISUAL_PARAM_GROUP_TWEAKABLE, | 52 | VISUAL_PARAM_GROUP_TWEAKABLE, |
53 | VISUAL_PARAM_GROUP_ANIMATABLE, | 53 | VISUAL_PARAM_GROUP_ANIMATABLE, |
54 | VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT, | ||
54 | NUM_VISUAL_PARAM_GROUPS | 55 | NUM_VISUAL_PARAM_GROUPS |
55 | }; | 56 | }; |
56 | 57 | ||
@@ -140,6 +141,7 @@ public: | |||
140 | 141 | ||
141 | virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating; } | 142 | virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating; } |
142 | BOOL getAnimating() { return mIsAnimating; } | 143 | BOOL getAnimating() { return mIsAnimating; } |
144 | BOOL isTweakable() { return (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) || (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT); } | ||
143 | 145 | ||
144 | protected: | 146 | protected: |
145 | F32 mCurWeight; // current weight | 147 | F32 mCurWeight; // current weight |
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 5a1700a..515d588 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp | |||
@@ -7488,7 +7488,7 @@ void LLAgent::sendAgentSetAppearance() | |||
7488 | param; | 7488 | param; |
7489 | param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) | 7489 | param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam()) |
7490 | { | 7490 | { |
7491 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 7491 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) // do not transmit params of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
7492 | { | 7492 | { |
7493 | msg->nextBlockFast(_PREHASH_VisualParam ); | 7493 | msg->nextBlockFast(_PREHASH_VisualParam ); |
7494 | 7494 | ||
diff --git a/linden/indra/newview/llfloatercustomize.cpp b/linden/indra/newview/llfloatercustomize.cpp index db51556..21dfc36 100644 --- a/linden/indra/newview/llfloatercustomize.cpp +++ b/linden/indra/newview/llfloatercustomize.cpp | |||
@@ -448,9 +448,7 @@ LLPanelEditWearable::LLPanelEditWearable( EWearableType type ) | |||
448 | BOOL LLPanelEditWearable::postBuild() | 448 | BOOL LLPanelEditWearable::postBuild() |
449 | { | 449 | { |
450 | LLAssetType::EType asset_type = LLWearable::typeToAssetType( mType ); | 450 | LLAssetType::EType asset_type = LLWearable::typeToAssetType( mType ); |
451 | std::string icon_name = (asset_type == LLAssetType::AT_CLOTHING ? | 451 | std::string icon_name = get_item_icon_name(asset_type, LLInventoryType::IT_WEARABLE, mType, FALSE); |
452 | "inv_item_clothing.tga" : | ||
453 | "inv_item_skin.tga" ); | ||
454 | childSetValue("icon", icon_name); | 452 | childSetValue("icon", icon_name); |
455 | 453 | ||
456 | childSetAction("Create New", LLPanelEditWearable::onBtnCreateNew, this ); | 454 | childSetAction("Create New", LLPanelEditWearable::onBtnCreateNew, this ); |
@@ -553,7 +551,7 @@ void LLPanelEditWearable::setSubpart( ESubpart subpart ) | |||
553 | param = (LLViewerVisualParam *)avatar->getNextVisualParam()) | 551 | param = (LLViewerVisualParam *)avatar->getNextVisualParam()) |
554 | { | 552 | { |
555 | if (param->getID() == -1 | 553 | if (param->getID() == -1 |
556 | || param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE | 554 | || !param->isTweakable() |
557 | || param->getEditGroup() != part->mEditGroup | 555 | || param->getEditGroup() != part->mEditGroup |
558 | || !(param->getSex() & avatar_sex)) | 556 | || !(param->getSex() & avatar_sex)) |
559 | { | 557 | { |
@@ -763,7 +761,6 @@ void LLPanelEditWearable::onColorCommit( LLUICtrl* ctrl, void* userdata ) | |||
763 | } | 761 | } |
764 | } | 762 | } |
765 | 763 | ||
766 | |||
767 | void LLPanelEditWearable::initPreviousTextureList() | 764 | void LLPanelEditWearable::initPreviousTextureList() |
768 | { | 765 | { |
769 | initPreviousTextureListEntry(TEX_LOWER_ALPHA); | 766 | initPreviousTextureListEntry(TEX_LOWER_ALPHA); |
@@ -2338,6 +2335,7 @@ void LLFloaterCustomize::initWearablePanels() | |||
2338 | panel->addTextureDropTarget(TEX_HEAD_TATTOO, "Head Tattoo", | 2335 | panel->addTextureDropTarget(TEX_HEAD_TATTOO, "Head Tattoo", |
2339 | LLUUID::null, | 2336 | LLUUID::null, |
2340 | TRUE); | 2337 | TRUE); |
2338 | panel->addColorSwatch(TEX_LOWER_TATTOO, "Color/Tint"); | ||
2341 | } | 2339 | } |
2342 | } | 2340 | } |
2343 | 2341 | ||
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp index c8e1298..139b1b0 100644 --- a/linden/indra/newview/lltexlayer.cpp +++ b/linden/indra/newview/lltexlayer.cpp | |||
@@ -211,8 +211,9 @@ void LLTexLayerSetBuffer::popProjection() | |||
211 | BOOL LLTexLayerSetBuffer::needsRender() | 211 | BOOL LLTexLayerSetBuffer::needsRender() |
212 | { | 212 | { |
213 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); | 213 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); |
214 | BOOL upload_now = needsUploadNow(); | 214 | BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal() && gAgent.mNumPendingQueries == 0; |
215 | BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; | 215 | BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; |
216 | |||
216 | if (needs_update) | 217 | if (needs_update) |
217 | { | 218 | { |
218 | BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); | 219 | BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); |
@@ -275,16 +276,14 @@ BOOL LLTexLayerSetBuffer::render() | |||
275 | } | 276 | } |
276 | else | 277 | else |
277 | { | 278 | { |
278 | // mUploadPending = FALSE;//see... | 279 | mUploadPending = FALSE; |
279 | // mNeedsUpload = FALSE;// ...below... | 280 | mNeedsUpload = FALSE; |
280 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); | 281 | LLVOAvatar* avatar = mTexLayerSet->getAvatar(); |
281 | if (avatar) | 282 | if (avatar) |
282 | { | 283 | { |
283 | avatar->setNewBakedTexture(avatar->getBakedTE(mTexLayerSet), IMG_INVISIBLE); | 284 | avatar->setNewBakedTexture(avatar->getBakedTE(mTexLayerSet), IMG_INVISIBLE); |
284 | llinfos << "Invisible baked texture set for " << mTexLayerSet->getBodyRegion() << llendl; | 285 | llinfos << "Invisible baked texture set for " << mTexLayerSet->getBodyRegion() << llendl; |
285 | } | 286 | } |
286 | readBackAndUpload(); //... here: Opensim is not happy if we don't | ||
287 | //TODO: find out if SL is happy if we do | ||
288 | } | 287 | } |
289 | } | 288 | } |
290 | } | 289 | } |
@@ -350,12 +349,11 @@ void LLTexLayerSetBuffer::readBackAndUpload() | |||
350 | // writes into baked_color_data | 349 | // writes into baked_color_data |
351 | const char* comment_text = NULL; | 350 | const char* comment_text = NULL; |
352 | 351 | ||
353 | S32 baked_image_components = 5; // red green blue bump clothing | 352 | S32 baked_image_components = 5; // red green blue bump clothing |
354 | LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components ); | 353 | LLPointer<LLImageRaw> baked_image = new LLImageRaw( mWidth, mHeight, baked_image_components ); |
355 | U8* baked_image_data = baked_image->getData(); | 354 | U8* baked_image_data = baked_image->getData(); |
356 | 355 | ||
357 | comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask | 356 | comment_text = LINDEN_J2C_COMMENT_PREFIX "RGBHM"; // 5 channels: rgb, heightfield/alpha, mask |
358 | |||
359 | S32 i = 0; | 357 | S32 i = 0; |
360 | for (S32 u = 0; u < mWidth; u++) | 358 | for (S32 u = 0; u < mWidth; u++) |
361 | { | 359 | { |
@@ -458,7 +456,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, void* user | |||
458 | 456 | ||
459 | LLVOAvatar* avatar = gAgent.getAvatarObject(); | 457 | LLVOAvatar* avatar = gAgent.getAvatarObject(); |
460 | 458 | ||
461 | if (avatar && !avatar->isDead() && | 459 | if (0 == result && avatar && !avatar->isDead() && |
462 | baked_upload_data && | 460 | baked_upload_data && |
463 | baked_upload_data->mAvatar == avatar && // Sanity check: only the user's avatar should be uploading textures. | 461 | baked_upload_data->mAvatar == avatar && // Sanity check: only the user's avatar should be uploading textures. |
464 | baked_upload_data->mLayerSet->hasComposite()) | 462 | baked_upload_data->mLayerSet->hasComposite()) |
@@ -492,22 +490,11 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid, void* user | |||
492 | avatar->setNewBakedTexture(baked_te, uuid); | 490 | avatar->setNewBakedTexture(baked_te, uuid); |
493 | } | 491 | } |
494 | else | 492 | else |
495 | { | 493 | { |
496 | ++failures; | 494 | // Avatar appearance is changing, ignore the upload results |
497 | llinfos << "Baked upload failed (attempt " << failures << "/" << MAX_BAKE_UPLOAD_ATTEMPTS << "), "; | 495 | llinfos << "Baked upload failed. Reason: " << result << llendl; |
498 | if (failures >= MAX_BAKE_UPLOAD_ATTEMPTS) | 496 | // *FIX: retry upload after n seconds, asset server could be busy |
499 | { | 497 | } |
500 | llcont << "giving up."; | ||
501 | } | ||
502 | else | ||
503 | { | ||
504 | const F32 delay = 5.f; | ||
505 | llcont << llformat("retrying in %.2f seconds.", delay); | ||
506 | layerset_buffer->mUploadFailCount = failures; | ||
507 | layerset_buffer->requestDelayedUpload((U64)(delay * 1000000)); | ||
508 | } | ||
509 | llcont << llendl; | ||
510 | } | ||
511 | } | 498 | } |
512 | else | 499 | else |
513 | { | 500 | { |
@@ -1412,7 +1399,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) | |||
1412 | 1399 | ||
1413 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); | 1400 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); |
1414 | 1401 | ||
1415 | gGL.getTexUnit(0)->bind(image_gl); | 1402 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1416 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); | 1403 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); |
1417 | 1404 | ||
1418 | gl_rect_2d_simple_tex( width, height ); | 1405 | gl_rect_2d_simple_tex( width, height ); |
@@ -1430,7 +1417,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height ) | |||
1430 | LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); | 1417 | LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask ); |
1431 | if( image_gl ) | 1418 | if( image_gl ) |
1432 | { | 1419 | { |
1433 | gGL.getTexUnit(0)->bind(image_gl); | 1420 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1434 | gl_rect_2d_simple_tex( width, height ); | 1421 | gl_rect_2d_simple_tex( width, height ); |
1435 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 1422 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
1436 | } | 1423 | } |
@@ -1656,7 +1643,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 | |||
1656 | 1643 | ||
1657 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); | 1644 | LLTexUnit::eTextureAddressMode old_mode = image_gl->getAddressMode(); |
1658 | 1645 | ||
1659 | gGL.getTexUnit(0)->bind(image_gl); | 1646 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1660 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); | 1647 | gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP); |
1661 | 1648 | ||
1662 | gl_rect_2d_simple_tex( width, height ); | 1649 | gl_rect_2d_simple_tex( width, height ); |
@@ -1678,7 +1665,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4 | |||
1678 | ( (image_gl->getComponents() == 1) && getInfo()->mStaticImageIsMask ) ) | 1665 | ( (image_gl->getComponents() == 1) && getInfo()->mStaticImageIsMask ) ) |
1679 | { | 1666 | { |
1680 | LLGLSNoAlphaTest gls_no_alpha_test; | 1667 | LLGLSNoAlphaTest gls_no_alpha_test; |
1681 | gGL.getTexUnit(0)->bind(image_gl); | 1668 | gGL.getTexUnit(0)->bind(image_gl, TRUE); |
1682 | gl_rect_2d_simple_tex( width, height ); | 1669 | gl_rect_2d_simple_tex( width, height ); |
1683 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 1670 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
1684 | } | 1671 | } |
@@ -2146,7 +2133,7 @@ BOOL LLTexLayerParamAlpha::render( S32 x, S32 y, S32 width, S32 height ) | |||
2146 | } | 2133 | } |
2147 | 2134 | ||
2148 | LLGLSNoAlphaTest gls_no_alpha_test; | 2135 | LLGLSNoAlphaTest gls_no_alpha_test; |
2149 | gGL.getTexUnit(0)->bind(mCachedProcessedImageGL); | 2136 | gGL.getTexUnit(0)->bind(mCachedProcessedImageGL, TRUE); |
2150 | gl_rect_2d_simple_tex( width, height ); | 2137 | gl_rect_2d_simple_tex( width, height ); |
2151 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); | 2138 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
2152 | stop_glerror(); | 2139 | stop_glerror(); |
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp index d68c587..90fb936 100644 --- a/linden/indra/newview/llvoavatar.cpp +++ b/linden/indra/newview/llvoavatar.cpp | |||
@@ -2890,7 +2890,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() | |||
2890 | param; | 2890 | param; |
2891 | param = getNextVisualParam()) | 2891 | param = getNextVisualParam()) |
2892 | { | 2892 | { |
2893 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 2893 | if (param->isTweakable()) |
2894 | { | 2894 | { |
2895 | param->stopAnimating(mAppearanceAnimSetByUser); | 2895 | param->stopAnimating(mAppearanceAnimSetByUser); |
2896 | } | 2896 | } |
@@ -2922,7 +2922,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() | |||
2922 | param; | 2922 | param; |
2923 | param = getNextVisualParam()) | 2923 | param = getNextVisualParam()) |
2924 | { | 2924 | { |
2925 | if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) | 2925 | if (param->isTweakable()) |
2926 | { | 2926 | { |
2927 | // so boobs don't go spastic when a shape's changed, but still seems buggy | 2927 | // so boobs don't go spastic when a shape's changed, but still seems buggy |
2928 | //if(param->getID() != 507) | 2928 | //if(param->getID() != 507) |
@@ -4875,6 +4875,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass) | |||
4875 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 4875 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4876 | && !LLDrawPoolAvatar::sSkipTransparent; | 4876 | && !LLDrawPoolAvatar::sSkipTransparent; |
4877 | 4877 | ||
4878 | |||
4878 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 4879 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4879 | 4880 | ||
4880 | if (should_alpha_mask) | 4881 | if (should_alpha_mask) |
@@ -4990,7 +4991,6 @@ U32 LLVOAvatar::renderRigid() | |||
4990 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked | 4991 | && !LLDrawPoolAlpha::sShowDebugAlpha // Don't alpha mask if "Highlight Transparent" checked |
4991 | && !LLDrawPoolAvatar::sSkipTransparent; | 4992 | && !LLDrawPoolAvatar::sSkipTransparent; |
4992 | 4993 | ||
4993 | |||
4994 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); | 4994 | LLGLState test(GL_ALPHA_TEST, should_alpha_mask); |
4995 | 4995 | ||
4996 | if (should_alpha_mask) | 4996 | if (should_alpha_mask) |
@@ -8202,6 +8202,14 @@ BOOL LLVOAvatar::teToColorParams( ETextureIndex te, const char* param_name[3] ) | |||
8202 | param_name[2] = "skirt_blue"; | 8202 | param_name[2] = "skirt_blue"; |
8203 | break; | 8203 | break; |
8204 | 8204 | ||
8205 | case TEX_HEAD_TATTOO: | ||
8206 | case TEX_LOWER_TATTOO: | ||
8207 | case TEX_UPPER_TATTOO: | ||
8208 | param_name[0] = "tattoo_red"; | ||
8209 | param_name[1] = "tattoo_green"; | ||
8210 | param_name[2] = "tattoo_blue"; | ||
8211 | break; | ||
8212 | |||
8205 | default: | 8213 | default: |
8206 | llassert(0); | 8214 | llassert(0); |
8207 | return FALSE; | 8215 | return FALSE; |
@@ -8661,7 +8669,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8661 | { | 8669 | { |
8662 | for( S32 i = 0; i < num_blocks; i++ ) | 8670 | for( S32 i = 0; i < num_blocks; i++ ) |
8663 | { | 8671 | { |
8664 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8672 | while (param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE)) // should not be any of group VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
8665 | { | 8673 | { |
8666 | param = getNextVisualParam(); | 8674 | param = getNextVisualParam(); |
8667 | } | 8675 | } |
@@ -8710,14 +8718,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) | |||
8710 | } | 8718 | } |
8711 | } | 8719 | } |
8712 | 8720 | ||
8713 | while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) | 8721 | S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT |
8722 | if (num_blocks != expected_tweakable_count) | ||
8714 | { | 8723 | { |
8715 | param = getNextVisualParam(); | 8724 | llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. Object: " << getID() << llendl; |
8716 | } | ||
8717 | if( param ) | ||
8718 | { | ||
8719 | llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; | ||
8720 | return; | ||
8721 | } | 8725 | } |
8722 | 8726 | ||
8723 | if (params_changed) | 8727 | if (params_changed) |
@@ -8988,8 +8992,7 @@ void LLVOAvatar::dumpArchetypeXML( void* ) | |||
8988 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 8992 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
8989 | { | 8993 | { |
8990 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; | 8994 | LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param; |
8991 | if( (viewer_param->getWearableType() == type) && | 8995 | if (viewer_param->getWearableType() == type && viewer_param->isTweakable()) |
8992 | (viewer_param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) ) | ||
8993 | { | 8996 | { |
8994 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", | 8997 | apr_file_printf( file, "\t\t<param id=\"%d\" name=\"%s\" value=\"%.3f\"/>\n", |
8995 | viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); | 8998 | viewer_param->getID(), viewer_param->getName().c_str(), viewer_param->getWeight() ); |
diff --git a/linden/indra/newview/llwearable.cpp b/linden/indra/newview/llwearable.cpp index b74ef02..f8123bb 100644 --- a/linden/indra/newview/llwearable.cpp +++ b/linden/indra/newview/llwearable.cpp | |||
@@ -535,7 +535,7 @@ BOOL LLWearable::isOldVersion() | |||
535 | param; | 535 | param; |
536 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 536 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
537 | { | 537 | { |
538 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 538 | if (param->getWearableType() == mType && param->isTweakable()) |
539 | { | 539 | { |
540 | param_count++; | 540 | param_count++; |
541 | if( !is_in_map(mVisualParamMap, param->getID() ) ) | 541 | if( !is_in_map(mVisualParamMap, param->getID() ) ) |
@@ -591,7 +591,7 @@ BOOL LLWearable::isDirty() | |||
591 | param; | 591 | param; |
592 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 592 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
593 | { | 593 | { |
594 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 594 | if (param->getWearableType() == mType && param->isTweakable()) |
595 | { | 595 | { |
596 | F32 weight = get_if_there(mVisualParamMap, param->getID(), param->getDefaultWeight()); | 596 | F32 weight = get_if_there(mVisualParamMap, param->getID(), param->getDefaultWeight()); |
597 | weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() ); | 597 | weight = llclamp( weight, param->getMinWeight(), param->getMaxWeight() ); |
@@ -690,7 +690,7 @@ void LLWearable::setParamsToDefaults() | |||
690 | mVisualParamMap.clear(); | 690 | mVisualParamMap.clear(); |
691 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 691 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
692 | { | 692 | { |
693 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 693 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
694 | { | 694 | { |
695 | mVisualParamMap[param->getID()] = param->getDefaultWeight(); | 695 | mVisualParamMap[param->getID()] = param->getDefaultWeight(); |
696 | } | 696 | } |
@@ -724,7 +724,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user ) | |||
724 | // Pull params | 724 | // Pull params |
725 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 725 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
726 | { | 726 | { |
727 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 727 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
728 | { | 728 | { |
729 | S32 param_id = param->getID(); | 729 | S32 param_id = param->getID(); |
730 | F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight()); | 730 | F32 weight = get_if_there(mVisualParamMap, param_id, param->getDefaultWeight()); |
@@ -825,7 +825,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user ) | |||
825 | // Pull params | 825 | // Pull params |
826 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 826 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
827 | { | 827 | { |
828 | if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 828 | if (((LLViewerVisualParam*)param)->getWearableType() == type && param->isTweakable()) |
829 | { | 829 | { |
830 | S32 param_id = param->getID(); | 830 | S32 param_id = param->getID(); |
831 | avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user ); | 831 | avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user ); |
@@ -873,7 +873,7 @@ void LLWearable::readFromAvatar() | |||
873 | mVisualParamMap.clear(); | 873 | mVisualParamMap.clear(); |
874 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) | 874 | for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) |
875 | { | 875 | { |
876 | if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 876 | if (((LLViewerVisualParam*)param)->getWearableType() == mType && param->isTweakable()) |
877 | { | 877 | { |
878 | 878 | ||
879 | //pretty sure is right | 879 | //pretty sure is right |
@@ -938,7 +938,7 @@ void LLWearable::copyDataFrom( LLWearable* src ) | |||
938 | param; | 938 | param; |
939 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) | 939 | param = (LLViewerVisualParam*) avatar->getNextVisualParam() ) |
940 | { | 940 | { |
941 | if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) ) | 941 | if (param->getWearableType() == mType && param->isTweakable()) |
942 | { | 942 | { |
943 | S32 id = param->getID(); | 943 | S32 id = param->getID(); |
944 | F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() ); | 944 | F32 weight = get_if_there(src->mVisualParamMap, id, param->getDefaultWeight() ); |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml index a0dd938..d5b61a7 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_customize.xml | |||
@@ -1172,11 +1172,15 @@ scratch and wear it. | |||
1172 | <texture_picker name="Lower Tattoo" label="Lower Tattoo" tool_tip="Click to choose a picture" | 1172 | <texture_picker name="Lower Tattoo" label="Lower Tattoo" tool_tip="Click to choose a picture" |
1173 | can_apply_immediately="true" default_image_name="Default" allow_no_texture="true" | 1173 | can_apply_immediately="true" default_image_name="Default" allow_no_texture="true" |
1174 | follows="left|top" width="70" height="80" left="14" bottom="-325"/> | 1174 | follows="left|top" width="70" height="80" left="14" bottom="-325"/> |
1175 | <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-415" | ||
1176 | can_apply_immediately="true" color="1 1 1 1" follows="left|top" height="80" | ||
1177 | label="Color/Tint" left="14" mouse_opaque="true" name="Color/Tint" | ||
1178 | tool_tip="Click to open Color Picker" width="70" /> | ||
1175 | <button name="Create New" label="Create New Tattoo" label_selected="Create New Tattoo" | 1179 | <button name="Create New" label="Create New Tattoo" label_selected="Create New Tattoo" |
1176 | follows="left|top" halign="center" width="170" height="24" left="8" bottom="-128" | 1180 | follows="left|top" halign="center" width="170" height="24" left="8" bottom="-128" |
1177 | mouse_opaque="true" scale_image="true"/> | 1181 | mouse_opaque="true" scale_image="true"/> |
1178 | <button name="Take Off" label="Take Off" label_selected="Take Off" | 1182 | <button name="Take Off" label="Take Off" label_selected="Take Off" |
1179 | follows="left|top" width="82" height="20" left="8" bottom="-365"/> | 1183 | follows="left|top" width="82" height="20" left="8" bottom="-440"/> |
1180 | <button name="Save" label="Save" label_selected="Save" | 1184 | <button name="Save" label="Save" label_selected="Save" |
1181 | follows="right|bottom" width="82" height="20" left="123" bottom="-478"/> | 1185 | follows="right|bottom" width="82" height="20" left="123" bottom="-478"/> |
1182 | <button name="Save As" label="Save As..." label_selected="Save As..." | 1186 | <button name="Save As" label="Save As..." label_selected="Save As..." |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml index 81dd05a..69e62f8 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_new_outfit_dialog.xml | |||
@@ -21,7 +21,7 @@ | |||
21 | <check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall" | 21 | <check_box bottom="-276" enabled="true" follows="left|top" font="SansSerifSmall" |
22 | height="16" initial_value="false" label="Eyes" left="13" | 22 | height="16" initial_value="false" label="Eyes" left="13" |
23 | mouse_opaque="true" name="checkbox_Eyes" radio_style="false" width="100" /> | 23 | mouse_opaque="true" name="checkbox_Eyes" radio_style="false" width="100" /> |
24 | <check_box bottom="-456" enabled="true" follows="left|top" font="SansSerifSmall" | 24 | <check_box bottom="-434" enabled="true" follows="left|top" font="SansSerifSmall" |
25 | height="16" initial_value="false" label="Rename Clothing To Folder Name" | 25 | height="16" initial_value="false" label="Rename Clothing To Folder Name" |
26 | left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" /> | 26 | left="13" mouse_opaque="true" name="rename" radio_style="false" width="210" /> |
27 | <check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall" | 27 | <check_box bottom="-216" enabled="true" follows="left|top" font="SansSerifSmall" |
@@ -256,7 +256,7 @@ now wearing into it. | |||
256 | Attachments: | 256 | Attachments: |
257 | </text> | 257 | </text> |
258 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 258 | <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
259 | bottom="-436" drop_shadow_visible="true" enabled="true" follows="left|top" | 259 | bottom="-414" drop_shadow_visible="true" enabled="true" follows="left|top" |
260 | font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13" | 260 | font="SansSerifSmall" h_pad="0" halign="left" height="14" left="13" |
261 | mouse_opaque="true" name="Options:" v_pad="0" width="100"> | 261 | mouse_opaque="true" name="Options:" v_pad="0" width="100"> |
262 | Options: | 262 | Options: |