diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2018-10-11 19:42:29 +0100 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2018-10-11 19:42:29 +0100 |
commit | 3747e3dcc17148efa9ba2cd85faf68bef4f8dd27 (patch) | |
tree | 42eb76d752cabacc065f9e6e412be56e14db38e4 /indra/newview | |
parent | 47cb1a25fe63743ea7788933020493b3c45a8472 (diff) |
SL-9857 - constraint pos math fix
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llcontrolavatar.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/indra/newview/llcontrolavatar.cpp b/indra/newview/llcontrolavatar.cpp index 15ed2073b4..ed63414849 100644 --- a/indra/newview/llcontrolavatar.cpp +++ b/indra/newview/llcontrolavatar.cpp @@ -82,11 +82,14 @@ void LLControlAvatar::getNewConstraintFixups(LLVector3& new_pos_fixup, F32& new_ { max_legal_offset = gSavedSettings.getF32("AnimatedObjectsMaxLegalOffset"); } + max_legal_offset = llmax(max_legal_offset,0.f); + F32 max_legal_size = MAX_LEGAL_SIZE; if (gSavedSettings.getControl("AnimatedObjectsMaxLegalSize")) { max_legal_size = gSavedSettings.getF32("AnimatedObjectsMaxLegalSize"); } + max_legal_size = llmax(max_legal_size, 1.f); new_pos_fixup = LLVector3(); new_scale_fixup = 1.0f; @@ -112,10 +115,13 @@ void LLControlAvatar::getNewConstraintFixups(LLVector3& new_pos_fixup, F32& new_ { LLVector3 pos_box_offset = point_to_box_offset(vol_pos, unshift_extents); F32 offset_dist = pos_box_offset.length(); - if (offset_dist > max_legal_offset || mPositionConstraintFixup != LLVector3()) + if (offset_dist > max_legal_offset && offset_dist > 0.f) { F32 target_dist = (offset_dist - max_legal_offset); new_pos_fixup = (target_dist/offset_dist)*pos_box_offset; + } + if (new_pos_fixup != mPositionConstraintFixup) + { LL_DEBUGS("ConstraintFix") << getFullname() << " pos fix, offset_dist " << offset_dist << " pos fixup " << new_pos_fixup << " was " << mPositionConstraintFixup << LL_ENDL; } @@ -418,9 +424,9 @@ void LLControlAvatar::updateDebugText() type_string += "-"; } } - addDebugText(llformat("CAV obj %d anim %d active %s impost %d strcst %f", + addDebugText(llformat("CAV obj %d anim %d active %s impost %d upprd %d strcst %f", total_linkset_count, animated_volume_count, - active_string.c_str(), (S32) isImpostor(), streaming_cost)); + active_string.c_str(), (S32) isImpostor(), getUpdatePeriod(), streaming_cost)); addDebugText(llformat("types %s lods %s", type_string.c_str(), lod_string.c_str())); addDebugText(llformat("flags %s", animated_object_flag_string.c_str())); addDebugText(llformat("tris %d (est %.1f, streaming %.1f), verts %d", total_tris, est_tris, est_streaming_tris, total_verts)); |