diff options
author | Karl Steifvater <qarl@lindenlab.com> | 2008-07-22 20:12:37 +0000 |
---|---|---|
committer | Karl Steifvater <qarl@lindenlab.com> | 2008-07-22 20:12:37 +0000 |
commit | df4f20d4f51e41355e876f734527b4245543415c (patch) | |
tree | 36aaf66ddb96b27fb9701764153cd7d17add275a /indra/newview/lltoolselect.cpp | |
parent | 0c0391cc7114bd2e9e4462c40e88814326f61bc2 (diff) |
merge uv-picking branch.
svn merge -r92602:92632 svn+ssh://svn.lindenlab.com/svn/linden/branches/uv-picking-4
Diffstat (limited to 'indra/newview/lltoolselect.cpp')
-rw-r--r-- | indra/newview/lltoolselect.cpp | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 8f84013a26..e74cd58924 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -64,39 +64,24 @@ LLToolSelect::LLToolSelect( LLToolComposite* composite ) // True if you selected an object. BOOL LLToolSelect::handleMouseDown(S32 x, S32 y, MASK mask) { - BOOL handled = FALSE; - - // didn't click in any UI object, so must have clicked in the world - LLViewerObject* object = NULL; - - // You must hit the body for this tool to think you hit the object. - object = gObjectList.findObject( gLastHitObjectID ); - - if (object) - { - mSelectObjectID = object->getID(); - handled = TRUE; - } - else - { - mSelectObjectID.setNull(); - } + // do immediate pick query + mPick = gViewerWindow->pickImmediate(x, y, TRUE); // Pass mousedown to agent LLTool::handleMouseDown(x, y, mask); - return handled; + return mPick.getObject().notNull(); } -BOOL LLToolSelect::handleDoubleClick(S32 x, S32 y, MASK mask) -{ - //RN: double click to toggle individual/linked picking??? - return LLTool::handleDoubleClick(x, y, mask); -} // static -LLSafeHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObject *object, MASK mask, BOOL ignore_group, BOOL temp_select) +LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pick, BOOL ignore_group, BOOL temp_select, BOOL select_root) { + LLViewerObject* object = pick.getObject(); + if (select_root) + { + object = object->getRootEdit(); + } BOOL select_owned = gSavedSettings.getBOOL("SelectOwnedOnly"); BOOL select_movable = gSavedSettings.getBOOL("SelectMovableOnly"); @@ -108,14 +93,16 @@ LLSafeHandle<LLObjectSelection> LLToolSelect::handleObjectSelection(LLViewerObje LLSelectMgr::getInstance()->setForceSelection(TRUE); } - BOOL extend_select = (mask == MASK_SHIFT) || (mask == MASK_CONTROL); + BOOL extend_select = (pick.mKeyMask == MASK_SHIFT) || (pick.mKeyMask == MASK_CONTROL); // If no object, check for icon, then just deselect if (!object) { - if (gLastHitHUDIcon && gLastHitHUDIcon->getSourceObject()) + LLHUDIcon* last_hit_hud_icon = pick.mHUDIcon; + + if (last_hit_hud_icon && last_hit_hud_icon->getSourceObject()) { - LLFloaterScriptDebug::show(gLastHitHUDIcon->getSourceObject()->getID()); + LLFloaterScriptDebug::show(last_hit_hud_icon->getSourceObject()->getID()); } else if (!extend_select) { @@ -240,8 +227,7 @@ BOOL LLToolSelect::handleMouseUp(S32 x, S32 y, MASK mask) { mIgnoreGroup = gSavedSettings.getBOOL("EditLinkedParts"); - LLViewerObject* object = gObjectList.findObject(mSelectObjectID); - LLToolSelect::handleObjectSelection(object, mask, mIgnoreGroup, FALSE); + handleObjectSelection(mPick, mIgnoreGroup, FALSE); return LLTool::handleMouseUp(x, y, mask); } @@ -275,3 +261,4 @@ void LLToolSelect::onMouseCaptureLost() + |