Refining the behavior of the pathing test tool behavior with regards to mouse clicks.

meow-7.2.2
Todd Stinson 2012-04-11 13:20:54 -07:00
parent c7df83c77d
commit 6aeb2c68b9
6 changed files with 60 additions and 14 deletions

View File

@ -70,6 +70,7 @@ ECursorType getCursorFromString(const std::string& cursor_string)
cursor_string_table["UI_CURSOR_TOOLBUY"] = UI_CURSOR_TOOLBUY;
cursor_string_table["UI_CURSOR_TOOLOPEN"] = UI_CURSOR_TOOLOPEN;
cursor_string_table["UI_CURSOR_TOOLPATHFINDING"] = UI_CURSOR_TOOLPATHFINDING;
cursor_string_table["UI_CURSOR_TOOLNO"] = UI_CURSOR_TOOLNO;
}
std::map<std::string,U32>::const_iterator iter = cursor_string_table.find(cursor_string);

View File

@ -66,6 +66,7 @@ enum ECursorType {
UI_CURSOR_TOOLBUY,
UI_CURSOR_TOOLOPEN,
UI_CURSOR_TOOLPATHFINDING,
UI_CURSOR_TOOLNO,
UI_CURSOR_COUNT // Number of elements in this enum (NOT a cursor)
};

View File

@ -1698,6 +1698,7 @@ void LLWindowWin32::initCursors()
mCursor[ UI_CURSOR_TOOLBUY ] = LoadCursor(module, TEXT("TOOLBUY"));
mCursor[ UI_CURSOR_TOOLOPEN ] = LoadCursor(module, TEXT("TOOLOPEN"));
mCursor[ UI_CURSOR_TOOLPATHFINDING ] = LoadCursor(module, TEXT("TOOLPATHFINDING"));
mCursor[ UI_CURSOR_TOOLNO ] = LoadCursor(module, TEXT("TOOLNO"));
// Color cursors
mCursor[ UI_CURSOR_TOOLPLAY ] = loadColorCursor(TEXT("TOOLPLAY"));

View File

@ -46,7 +46,10 @@ LLPathfindingPathTool::LLPathfindingPathTool()
mTempPathData(),
mPathResult(LLPathingLib::LLPL_NO_PATH),
mCharacterType(kCharacterTypeNone),
mPathEventSignal()
mPathEventSignal(),
mIsLeftMouseButtonHeld(false),
mIsMiddleMouseButtonHeld(false),
mIsRightMouseButtonHeld(false)
{
if (!LLPathingLib::getInstance())
{
@ -65,12 +68,16 @@ BOOL LLPathfindingPathTool::handleMouseDown(S32 pX, S32 pY, MASK pMask)
{
BOOL returnVal = FALSE;
if (isAnyPathToolModKeys(pMask))
llinfos << "STINSON DEBUG: got here" << llendl;
if (!mIsLeftMouseButtonHeld && !mIsMiddleMouseButtonHeld && !mIsRightMouseButtonHeld && isAnyPathToolModKeys(pMask))
{
computeFinalPoints(pX, pY, pMask);
mIsLeftMouseButtonHeld = true;
setMouseCapture(TRUE);
returnVal = TRUE;
}
mIsLeftMouseButtonHeld = true;
return returnVal;
}
@ -79,54 +86,85 @@ BOOL LLPathfindingPathTool::handleMouseUp(S32 pX, S32 pY, MASK pMask)
{
BOOL returnVal = FALSE;
if (isAnyPathToolModKeys(pMask))
llinfos << "STINSON DEBUG: got here" << llendl;
if (mIsLeftMouseButtonHeld && !mIsMiddleMouseButtonHeld && !mIsRightMouseButtonHeld && isAnyPathToolModKeys(pMask))
{
computeFinalPoints(pX, pY, pMask);
setMouseCapture(FALSE);
returnVal = TRUE;
}
mIsLeftMouseButtonHeld = false;
return returnVal;
}
BOOL LLPathfindingPathTool::handleMiddleMouseDown(S32 pX, S32 pY, MASK pMask)
{
setMouseCapture(FALSE);
llinfos << "STINSON DEBUG: got here" << llendl;
setMouseCapture(TRUE);
mIsMiddleMouseButtonHeld = true;
gViewerWindow->setCursor(UI_CURSOR_TOOLNO);
return TRUE;
}
BOOL LLPathfindingPathTool::handleMiddleMouseUp(S32 pX, S32 pY, MASK pMask)
{
setMouseCapture(FALSE);
llinfos << "STINSON DEBUG: got here" << llendl;
if (!mIsLeftMouseButtonHeld && mIsMiddleMouseButtonHeld && !mIsRightMouseButtonHeld)
{
setMouseCapture(FALSE);
}
mIsMiddleMouseButtonHeld = false;
return TRUE;
}
BOOL LLPathfindingPathTool::handleRightMouseDown(S32 pX, S32 pY, MASK pMask)
{
setMouseCapture(FALSE);
llinfos << "STINSON DEBUG: got here" << llendl;
setMouseCapture(TRUE);
mIsRightMouseButtonHeld = true;
gViewerWindow->setCursor(UI_CURSOR_TOOLNO);
return TRUE;
}
BOOL LLPathfindingPathTool::handleRightMouseUp(S32 pX, S32 pY, MASK pMask)
{
setMouseCapture(FALSE);
llinfos << "STINSON DEBUG: got here" << llendl;
if (!mIsLeftMouseButtonHeld && !mIsMiddleMouseButtonHeld && mIsRightMouseButtonHeld)
{
setMouseCapture(FALSE);
}
mIsRightMouseButtonHeld = false;
return TRUE;
}
BOOL LLPathfindingPathTool::handleDoubleClick(S32 pX, S32 pY, MASK pMask)
{
llinfos << "STINSON DEBUG: got here" << llendl;
return TRUE;
}
void LLPathfindingPathTool::onMouseCaptureLost()
{
llinfos << "STINSON DEBUG: got here" << llendl;
}
BOOL LLPathfindingPathTool::handleHover(S32 pX, S32 pY, MASK pMask)
{
BOOL returnVal = FALSE;
llinfos << "STINSON DEBUG: got here" << llendl;
if (isAnyPathToolModKeys(pMask))
if (!mIsMiddleMouseButtonHeld && !mIsRightMouseButtonHeld && isAnyPathToolModKeys(pMask))
{
gViewerWindow->setCursor(UI_CURSOR_TOOLPATHFINDING);
computeTempPoints(pX, pY, pMask);

View File

@ -68,12 +68,13 @@ public:
typedef boost::signals2::connection path_event_slot_t;
virtual BOOL handleMouseDown(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleMiddleMouseDown(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleMiddleMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleRightMouseDown(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleRightMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
virtual BOOL handleMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleMiddleMouseDown(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleMiddleMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleRightMouseDown(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleRightMouseUp(S32 pX, S32 pY, MASK pMask);
virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
virtual void onMouseCaptureLost();
virtual BOOL handleHover(S32 pX, S32 pY, MASK pMask);
@ -128,6 +129,9 @@ private:
LLPathingLib::LLPLResult mPathResult;
ECharacterType mCharacterType;
path_event_signal_t mPathEventSignal;
bool mIsLeftMouseButtonHeld;
bool mIsMiddleMouseButtonHeld;
bool mIsRightMouseButtonHeld;
};
#endif // LL_LLPATHFINDINGPATHTOOL_H

View File

@ -123,6 +123,7 @@ TOOLBUY CURSOR "toolbuy.cur"
TOOLOPEN CURSOR "toolopen.cur"
TOOLSIT CURSOR "toolsit.cur"
TOOLPATHFINDING CURSOR "lltoolpathfinding.cur"
TOOLNO CURSOR "llno.cur"
/////////////////////////////////////////////////////////////////////////////
//