From 73d472270680f639a1065d776fcdf43221de35f0 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Fri, 19 Aug 2011 01:32:35 -0500 Subject: [PATCH] LLWorld::getMinAllowedZ now passed an object and an explicit position (opposed to assuming object->getPositionGlobal()) --- indra/newview/llmaniptranslate.cpp | 2 +- indra/newview/llpanelobject.cpp | 2 +- indra/newview/llworld.cpp | 4 ++-- indra/newview/llworld.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 014dadb95..81f2ea618 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -743,7 +743,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask) LLVector3d new_position_global = selectNode->mSavedPositionGlobal + clamped_relative_move; // Don't let object centers go too far underground - F64 min_height = LLWorld::getInstance()->getMinAllowedZ(object); + F64 min_height = LLWorld::getInstance()->getMinAllowedZ(object, object->getPositionGlobal()); if (new_position_global.mdV[VZ] < min_height) { new_position_global.mdV[VZ] = min_height; diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index b5bbc99c4..6cf363410 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -2154,7 +2154,7 @@ void LLPanelObject::sendPosition(BOOL btn_down) // Clamp the Z height const F32 height = newpos.mV[VZ]; - const F32 min_height = LLWorld::getInstance()->getMinAllowedZ(mObject); + const F32 min_height = LLWorld::getInstance()->getMinAllowedZ(mObject, mObject->getPositionGlobal()); // //const F32 max_height = LLWorld::getInstance()->getRegionMaxHeight(); const F32 max_height = F32(340282346638528859811704183484516925440.0f); diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 1ddcacdd2..b852b84a0 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -439,9 +439,9 @@ BOOL LLWorld::positionRegionValidGlobal(const LLVector3d &pos_global) // Allow objects to go up to their radius underground. -F32 LLWorld::getMinAllowedZ(LLViewerObject* object) +F32 LLWorld::getMinAllowedZ(LLViewerObject* object, const LLVector3d &global_pos) { - F32 land_height = resolveLandHeightGlobal(object->getPositionGlobal()); + F32 land_height = resolveLandHeightGlobal(global_pos); F32 radius = 0.5f * object->getScale().length(); return land_height - radius; } diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index ec6e45b23..ba9663596 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -95,7 +95,7 @@ public: // Return the lowest allowed Z point to prevent objects from being moved // underground. - F32 getMinAllowedZ(LLViewerObject* object); + F32 getMinAllowedZ(LLViewerObject* object, const LLVector3d &global_pos); // takes a line segment defined by point_a and point_b, then // determines the closest (to point_a) point of intersection that is