diff options
-rw-r--r-- | indra/newview/llagentwearables.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llbreastmotion.cpp | 63 | ||||
-rw-r--r-- | indra/newview/llbreastmotion.h | 3 |
3 files changed, 38 insertions, 29 deletions
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index c1aae867ef..34f7e2578f 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1717,7 +1717,6 @@ 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); } } diff --git a/indra/newview/llbreastmotion.cpp b/indra/newview/llbreastmotion.cpp index 5bbab8a0a6..d4d0a78543 100644 --- a/indra/newview/llbreastmotion.cpp +++ b/indra/newview/llbreastmotion.cpp @@ -45,12 +45,10 @@ #include "llviewervisualparam.h" #include "llvoavatarself.h" +#define MIN_REQUIRED_PIXEL_AREA_BREAST_MOTION 1000.f; + // #define OUTPUT_BREAST_DATA -//----------------------------------------------------------------------------- -// LLBreastMotion() -// Class Constructor -//----------------------------------------------------------------------------- LLBreastMotion::LLBreastMotion(const LLUUID &id) : LLMotion(id), mCharacter(NULL), @@ -80,12 +78,6 @@ LLBreastMotion::LLBreastMotion(const LLUUID &id) : mBreastVelocity_local_vec = LLVector3(0,0,0); } - - -//----------------------------------------------------------------------------- -// ~LLBreastMotion() -// Class Destructor -//----------------------------------------------------------------------------- LLBreastMotion::~LLBreastMotion() { } @@ -164,7 +156,11 @@ LLMotion::LLMotionInitStatus LLBreastMotion::onInitialize(LLCharacter *character return STATUS_SUCCESS; } - +F32 LLBreastMotion::getMinPixelArea() +{ + return MIN_REQUIRED_PIXEL_AREA_BREAST_MOTION; +} + F32 LLBreastMotion::calculateTimeDelta() { @@ -243,15 +239,17 @@ BOOL LLBreastMotion::onUpdate(F32 time, U8* joint_mask) return TRUE; } - /* TEST: - 1. Change outfits - 2. FPS effect - 3. Add disable - 4. Disappearing chests - 5. Overwrites breast params - 6. Threshold for not setting param - 7. Switch params or take off wearable makes breasts jump - */ + if (!dynamic_cast<LLVOAvatarSelf *>(mCharacter)) + { + static int ticks=0; + ticks = (ticks + 1) % 10; + if (!ticks) + llinfos << "Pixel Area: " << mCharacter->getPixelArea() << " rt: " << fsqrtf(mCharacter->getPixelArea()) << llendl; + } + + if (mCharacter->getSex() != SEX_FEMALE) return TRUE; + const F32 time_delta = calculateTimeDelta(); + if (time_delta < .01 || time_delta > 10.0) return TRUE; mBreastMassParam = mCharacter->getVisualParamWeight("Breast_Physics_Mass"); mBreastSmoothingParam = (U32)(mCharacter->getVisualParamWeight("Breast_Physics_Smoothing")); @@ -269,11 +267,9 @@ BOOL LLBreastMotion::onUpdate(F32 time, U8* joint_mask) mBreastMaxVelocityParam[2] = mCharacter->getVisualParamWeight("Breast_Physics_UpDown_Max_Velocity"); mBreastDragParam[2] = mCharacter->getVisualParamWeight("Breast_Physics_UpDown_Drag"); - if (mCharacter->getSex() != SEX_FEMALE) return TRUE; - const F32 time_delta = calculateTimeDelta(); - if (time_delta < .01 || time_delta > 10.0) return TRUE; - + const BOOL is_self = (dynamic_cast<LLVOAvatarSelf *>(this) != NULL); + LLVector3 breast_user_local_pt(0,0,0); for (U32 i=0; i < 3; i++) @@ -361,7 +357,23 @@ BOOL LLBreastMotion::onUpdate(F32 time, U8* joint_mask) mBreastMassParam ); } + + mBreastLastPosition_local_pt = new_local_pt; + if (!is_self) + { + const F32 area_for_max_settings = 300.0; + const F32 area_for_min_settings = 1400.0; + + const F32 area_for_this_setting = area_for_max_settings + (area_for_min_settings-area_for_max_settings)*(1.0-lod_factor); + const F32 pixel_area = fsqrtf(mCharacter->getPixelArea()); + if (pixel_area < area_for_this_setting) + { + return TRUE; + } + } + + LLVector3 position_diff = mBreastLastUpdatePosition_local_pt-new_local_pt; for (U32 i=0; i < 3; i++) { @@ -370,11 +382,10 @@ BOOL LLBreastMotion::onUpdate(F32 time, U8* joint_mask) { mCharacter->updateVisualParams(); mBreastLastUpdatePosition_local_pt = new_local_pt; - break; + return TRUE; } } - mBreastLastPosition_local_pt = new_local_pt; return TRUE; } diff --git a/indra/newview/llbreastmotion.h b/indra/newview/llbreastmotion.h index 6a2e3788ad..da71962453 100644 --- a/indra/newview/llbreastmotion.h +++ b/indra/newview/llbreastmotion.h @@ -39,7 +39,6 @@ #include "llmotion.h" #include "llframetimer.h" -#define MIN_REQUIRED_PIXEL_AREA_BREAST_MOTION 500.f; #define BREAST_MOTION_FADEIN_TIME 1.0f #define BREAST_MOTION_FADEOUT_TIME 1.0f @@ -85,7 +84,7 @@ public: virtual F32 getEaseOutDuration() { return BREAST_MOTION_FADEOUT_TIME; } // called to determine when a motion should be activated/deactivated based on avatar pixel coverage - virtual F32 getMinPixelArea() { return MIN_REQUIRED_PIXEL_AREA_BREAST_MOTION; } + virtual F32 getMinPixelArea(); // motions must report their priority virtual LLJoint::JointPriority getPriority() { return LLJoint::MEDIUM_PRIORITY; } |