void LLScrollingPanelParam::onHintHeldDown( bool max ) { LLVisualParamHint* hint = max ? mHintMax : mHintMin; LLViewerVisualParam* param = hint->getVisualParam(); if(!mWearable || !param) { return; } F32 current_weight = mWearable->getVisualParamWeight( param->getID() ); if (current_weight != hint->getVisualParamWeight() ) { const F32 FULL_BLEND_TIME = 2.f; F32 elapsed_time = mMouseDownTimer.getElapsedTimeF32() - mLastHeldTime; mLastHeldTime += elapsed_time; F32 new_weight; if (current_weight > hint->getVisualParamWeight() ) { new_weight = current_weight - (elapsed_time / FULL_BLEND_TIME); } else { new_weight = current_weight + (elapsed_time / FULL_BLEND_TIME); } // Make sure we're not taking the slider out of bounds // (this is where some simple UI limits are stored) F32 new_percent = weightToPercent(new_weight); LLSliderCtrl* slider = getChild<LLSliderCtrl>("param slider"); if (slider) { if (slider->getMinValue() < new_percent && new_percent < slider->getMaxValue()) { mWearable->setVisualParamWeight(param->getID(), new_weight, FALSE); mWearable->writeToAvatar(); gAgentAvatarp->updateVisualParams(); slider->setValue( weightToPercent( new_weight ) ); } } } }
void LLScrollingPanelParam::onHintMouseDown( bool max ) { LLVisualParamHint* hint = max ? mHintMax : mHintMin; LLViewerVisualParam* param = hint->getVisualParam(); if(!mWearable || !param) { return; } // morph towards this result F32 current_weight = mWearable->getVisualParamWeight( hint->getVisualParam()->getID() ); // if we have maxed out on this morph, we shouldn't be able to click it if( hint->getVisualParamWeight() != current_weight ) { mMouseDownTimer.reset(); mLastHeldTime = 0.f; } }