diff options
Diffstat (limited to 'indra/newview/lltoolselectland.cpp')
-rw-r--r-- | indra/newview/lltoolselectland.cpp | 268 |
1 files changed, 134 insertions, 134 deletions
diff --git a/indra/newview/lltoolselectland.cpp b/indra/newview/lltoolselectland.cpp index ff991dc9fd..04fe837d2b 100644 --- a/indra/newview/lltoolselectland.cpp +++ b/indra/newview/lltoolselectland.cpp @@ -1,25 +1,25 @@ -/** +/** * @file lltoolselectland.cpp * @brief LLToolSelectLand class implementation * * $LicenseInfo:firstyear=2002&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -44,17 +44,17 @@ // LLToolSelectLand::LLToolSelectLand( ) -: LLTool( std::string("Parcel") ), - mDragStartGlobal(), - mDragEndGlobal(), - mDragEndValid(FALSE), - mDragStartX(0), - mDragStartY(0), - mDragEndX(0), - mDragEndY(0), - mMouseOutsideSlop(FALSE), - mWestSouthBottom(), - mEastNorthTop() +: LLTool( std::string("Parcel") ), + mDragStartGlobal(), + mDragEndGlobal(), + mDragEndValid(FALSE), + mDragStartX(0), + mDragStartY(0), + mDragEndX(0), + mDragEndY(0), + mMouseOutsideSlop(FALSE), + mWestSouthBottom(), + mEastNorthTop() { } LLToolSelectLand::~LLToolSelectLand() @@ -64,171 +64,171 @@ LLToolSelectLand::~LLToolSelectLand() BOOL LLToolSelectLand::handleMouseDown(S32 x, S32 y, MASK mask) { - BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &mDragStartGlobal); - if (hit_land) - { - setMouseCapture( TRUE ); + BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &mDragStartGlobal); + if (hit_land) + { + setMouseCapture( TRUE ); - mDragStartX = x; - mDragStartY = y; - mDragEndX = x; - mDragEndY = y; + mDragStartX = x; + mDragStartY = y; + mDragEndX = x; + mDragEndY = y; - mDragEndValid = TRUE; - mDragEndGlobal = mDragStartGlobal; + mDragEndValid = TRUE; + mDragEndGlobal = mDragStartGlobal; - sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); + sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); - mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - roundXY(mWestSouthBottom); - roundXY(mEastNorthTop); + roundXY(mWestSouthBottom); + roundXY(mEastNorthTop); - mMouseOutsideSlop = TRUE; //FALSE; + mMouseOutsideSlop = TRUE; //FALSE; - LLViewerParcelMgr::getInstance()->deselectLand(); - } + LLViewerParcelMgr::getInstance()->deselectLand(); + } - return hit_land; + return hit_land; } BOOL LLToolSelectLand::handleDoubleClick(S32 x, S32 y, MASK mask) { - LLVector3d pos_global; - BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &pos_global); - if (hit_land) - { - // Auto-select this parcel - LLViewerParcelMgr::getInstance()->selectParcelAt( pos_global ); - return TRUE; - } - return FALSE; + LLVector3d pos_global; + BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &pos_global); + if (hit_land) + { + // Auto-select this parcel + LLViewerParcelMgr::getInstance()->selectParcelAt( pos_global ); + return TRUE; + } + return FALSE; } BOOL LLToolSelectLand::handleMouseUp(S32 x, S32 y, MASK mask) { - if( hasMouseCapture() ) - { - setMouseCapture( FALSE ); - - if (mMouseOutsideSlop && mDragEndValid) - { - // Take the drag start and end locations, then map the southwest - // point down to the next grid location, and the northeast point up - // to the next grid location. - - sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); - - mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - - roundXY(mWestSouthBottom); - roundXY(mEastNorthTop); - - // Don't auto-select entire parcel. - mSelection = LLViewerParcelMgr::getInstance()->selectLand( mWestSouthBottom, mEastNorthTop, FALSE ); - } - - mMouseOutsideSlop = FALSE; - mDragEndValid = FALSE; - - return TRUE; - } - return FALSE; + if( hasMouseCapture() ) + { + setMouseCapture( FALSE ); + + if (mMouseOutsideSlop && mDragEndValid) + { + // Take the drag start and end locations, then map the southwest + // point down to the next grid location, and the northeast point up + // to the next grid location. + + sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); + + mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + + roundXY(mWestSouthBottom); + roundXY(mEastNorthTop); + + // Don't auto-select entire parcel. + mSelection = LLViewerParcelMgr::getInstance()->selectLand( mWestSouthBottom, mEastNorthTop, FALSE ); + } + + mMouseOutsideSlop = FALSE; + mDragEndValid = FALSE; + + return TRUE; + } + return FALSE; } BOOL LLToolSelectLand::handleHover(S32 x, S32 y, MASK mask) { - if( hasMouseCapture() ) - { - if (mMouseOutsideSlop || outsideSlop(x, y, mDragStartX, mDragStartY)) - { - mMouseOutsideSlop = TRUE; - - // Must do this every frame, in case the camera moved or the land moved - // since last frame. - - // If doesn't hit land, doesn't change old value - LLVector3d land_global; - BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &land_global); - if (hit_land) - { - mDragEndValid = TRUE; - mDragEndGlobal = land_global; - - sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); - - mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); - - roundXY(mWestSouthBottom); - roundXY(mEastNorthTop); - - LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, land)" << LL_ENDL; - gViewerWindow->setCursor(UI_CURSOR_ARROW); - } - else - { - mDragEndValid = FALSE; - LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, no land)" << LL_ENDL; - gViewerWindow->setCursor(UI_CURSOR_NO); - } - - mDragEndX = x; - mDragEndY = y; - } - else - { - LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, in slop)" << LL_ENDL; - gViewerWindow->setCursor(UI_CURSOR_ARROW); - } - } - else - { - LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (inactive)" << LL_ENDL; - gViewerWindow->setCursor(UI_CURSOR_ARROW); - } - - return TRUE; + if( hasMouseCapture() ) + { + if (mMouseOutsideSlop || outsideSlop(x, y, mDragStartX, mDragStartY)) + { + mMouseOutsideSlop = TRUE; + + // Must do this every frame, in case the camera moved or the land moved + // since last frame. + + // If doesn't hit land, doesn't change old value + LLVector3d land_global; + BOOL hit_land = gViewerWindow->mousePointOnLandGlobal(x, y, &land_global); + if (hit_land) + { + mDragEndValid = TRUE; + mDragEndGlobal = land_global; + + sanitize_corners(mDragStartGlobal, mDragEndGlobal, mWestSouthBottom, mEastNorthTop); + + mWestSouthBottom -= LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + mEastNorthTop += LLVector3d( PARCEL_GRID_STEP_METERS/2, PARCEL_GRID_STEP_METERS/2, 0 ); + + roundXY(mWestSouthBottom); + roundXY(mEastNorthTop); + + LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, land)" << LL_ENDL; + gViewerWindow->setCursor(UI_CURSOR_ARROW); + } + else + { + mDragEndValid = FALSE; + LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, no land)" << LL_ENDL; + gViewerWindow->setCursor(UI_CURSOR_NO); + } + + mDragEndX = x; + mDragEndY = y; + } + else + { + LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (active, in slop)" << LL_ENDL; + gViewerWindow->setCursor(UI_CURSOR_ARROW); + } + } + else + { + LL_DEBUGS("UserInput") << "hover handled by LLToolSelectLand (inactive)" << LL_ENDL; + gViewerWindow->setCursor(UI_CURSOR_ARROW); + } + + return TRUE; } void LLToolSelectLand::render() { - if( hasMouseCapture() && /*mMouseOutsideSlop &&*/ mDragEndValid) - { - LLViewerParcelMgr::getInstance()->renderRect( mWestSouthBottom, mEastNorthTop ); - } + if( hasMouseCapture() && /*mMouseOutsideSlop &&*/ mDragEndValid) + { + LLViewerParcelMgr::getInstance()->renderRect( mWestSouthBottom, mEastNorthTop ); + } } void LLToolSelectLand::handleSelect() { - gFloaterTools->setStatusText("selectland"); + gFloaterTools->setStatusText("selectland"); } void LLToolSelectLand::handleDeselect() { - mSelection = NULL; + mSelection = NULL; } void LLToolSelectLand::roundXY(LLVector3d &vec) { - vec.mdV[VX] = ll_round( vec.mdV[VX], (F64)PARCEL_GRID_STEP_METERS ); - vec.mdV[VY] = ll_round( vec.mdV[VY], (F64)PARCEL_GRID_STEP_METERS ); + vec.mdV[VX] = ll_round( vec.mdV[VX], (F64)PARCEL_GRID_STEP_METERS ); + vec.mdV[VY] = ll_round( vec.mdV[VY], (F64)PARCEL_GRID_STEP_METERS ); } // true if x,y outside small box around start_x,start_y BOOL LLToolSelectLand::outsideSlop(S32 x, S32 y, S32 start_x, S32 start_y) { - S32 dx = x - start_x; - S32 dy = y - start_y; + S32 dx = x - start_x; + S32 dy = y - start_y; - return (dx <= -2 || 2 <= dx || dy <= -2 || 2 <= dy); + return (dx <= -2 || 2 <= dx || dy <= -2 || 2 <= dy); } |