summaryrefslogtreecommitdiff
path: root/indra/newview/lltoolselect.cpp
diff options
context:
space:
mode:
authorKarl Steifvater <qarl@lindenlab.com>2008-07-22 20:12:37 +0000
committerKarl Steifvater <qarl@lindenlab.com>2008-07-22 20:12:37 +0000
commitdf4f20d4f51e41355e876f734527b4245543415c (patch)
tree36aaf66ddb96b27fb9701764153cd7d17add275a /indra/newview/lltoolselect.cpp
parent0c0391cc7114bd2e9e4462c40e88814326f61bc2 (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.cpp45
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()
+