diff options
author | Whirly <none@none> | 2014-08-20 23:41:33 +0100 |
---|---|---|
committer | Whirly <none@none> | 2014-08-20 23:41:33 +0100 |
commit | fc0d618c2f3489e62b28d6e83978d39ea70c1e7e (patch) | |
tree | 43f742a945b32bbc41732b89ea307067e515dd0c | |
parent | b021c90e7bccdd0f9a916946e7716a00034254c2 (diff) |
STORM-2078 Editing an objects rotation with the rotation rings often causes the object to jump to position <0,0,0> on the region and rotation changes to <0,0,0>
-rwxr-xr-x | doc/contributions.txt | 3 | ||||
-rwxr-xr-x | indra/newview/llmaniprotate.cpp | 10 |
2 files changed, 8 insertions, 5 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt index 7e8ab46b1a..27be861305 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -885,6 +885,8 @@ Mm Alder VWR-4794 VWR-13578 Mo Hax +Moon Metty + STORM-2078 Mourna Biziou Mr Greggan VWR-445 @@ -1358,6 +1360,7 @@ Whirly Fizzle VWR-29543 MAINT-873 STORM-1930 + STORM-2078 Whoops Babii VWR-631 VWR-1640 diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp index 7861573908..50863ac970 100755 --- a/indra/newview/llmaniprotate.cpp +++ b/indra/newview/llmaniprotate.cpp @@ -1241,9 +1241,9 @@ LLQuaternion LLManipRotate::dragUnconstrained( S32 x, S32 y ) LLVector3 axis = mMouseDown % mMouseCur; axis.normVec(); - F32 angle = acos(mMouseDown * mMouseCur); + F32 angle = atan2(sqrtf(axis * axis), mMouseDown * mMouseCur); LLQuaternion sphere_rot( angle, axis ); - + if (is_approx_zero(1.f - mMouseDown * mMouseCur)) { return LLQuaternion::DEFAULT; @@ -1638,9 +1638,9 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y ) mInSnapRegime = FALSE; } - angle = acos(mMouseCur * mMouseDown); - - F32 dir = (mMouseDown % mMouseCur) * constraint_axis; // cross product + LLVector3 cross_product = mMouseDown % mMouseCur; + angle = atan2(sqrtf(cross_product * cross_product), mMouseCur * mMouseDown); + F32 dir = cross_product * constraint_axis; // cross product if( dir < 0.f ) { angle *= -1.f; |