Merged in RLVa. Viewer broken!
This commit is contained in:
@@ -69,6 +69,10 @@
|
||||
#include "llui.h"
|
||||
#include "llweb.h"
|
||||
|
||||
// [RLVa:KB]
|
||||
#include "rlvhandler.h"
|
||||
// [/RLVa:KB]
|
||||
|
||||
extern void handle_buy(void*);
|
||||
|
||||
extern BOOL gDebugClicks;
|
||||
@@ -124,6 +128,7 @@ void LLToolPie::rightMouseCallback(const LLPickInfo& pick_info)
|
||||
LLToolPie::getInstance()->pickAndShowMenu(TRUE);
|
||||
}
|
||||
|
||||
|
||||
// True if you selected an object.
|
||||
BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
{
|
||||
@@ -168,14 +173,21 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
parent = object->getRootEdit();
|
||||
}
|
||||
|
||||
|
||||
BOOL touchable = (object && object->flagHandleTouch())
|
||||
|| (parent && parent->flagHandleTouch());
|
||||
|
||||
|
||||
// If it's a left-click, and we have a special action, do it.
|
||||
if (useClickAction(always_show, mask, object, parent))
|
||||
{
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Block left-click special actions when fartouch restricted
|
||||
if ( (rlv_handler_t::isEnabled()) &&
|
||||
(gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) && (!gRlvHandler.canTouch(object, mPick.mObjectOffset)) )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
mClickAction = 0;
|
||||
if (object && object->getClickAction())
|
||||
{
|
||||
@@ -264,6 +276,14 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
((object->usePhysics() || (parent && !parent->isAvatar() && parent->usePhysics())) || touchable) &&
|
||||
!always_show)
|
||||
{
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Triggered by left-clicking on a touchable object
|
||||
if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canTouch(object, mPick.mObjectOffset)) )
|
||||
{
|
||||
return LLTool::handleMouseDown(x, y, mask);
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
gGrabTransientTool = this;
|
||||
LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolGrab::getInstance() );
|
||||
return LLToolGrab::getInstance()->handleObjectHit( mPick );
|
||||
@@ -302,7 +322,10 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
gViewerWindow->hideCursor();
|
||||
LLToolCamera::getInstance()->setMouseCapture(TRUE);
|
||||
LLToolCamera::getInstance()->pickCallback(mPick);
|
||||
gAgent.setFocusOnAvatar(TRUE, TRUE);
|
||||
if(gSavedSettings.getBOOL("ResetFocusOnSelfClick"))
|
||||
{
|
||||
gAgent.setFocusOnAvatar(TRUE, TRUE);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -380,11 +403,35 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
//gMutePieMenu->setLabel("Mute");
|
||||
}
|
||||
|
||||
gPieAvatar->show(x, y, mPieMouseButtonDown);
|
||||
//gPieAvatar->show(x, y, mPieMouseButtonDown);
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Don't show the pie menu on empty selection when fartouch/interaction restricted [see LLToolSelect::handleObjectSelection()]
|
||||
if ( (!rlv_handler_t::isEnabled()) || (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) ||
|
||||
(!gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) )
|
||||
{
|
||||
gPieAvatar->show(x, y, mPieMouseButtonDown);
|
||||
}
|
||||
else
|
||||
{
|
||||
make_ui_sound("UISndInvalidOp");
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
else if (object->isAttachment())
|
||||
{
|
||||
gPieAttachment->show(x, y, mPieMouseButtonDown);
|
||||
//gPieAttachment->show(x, y, mPieMouseButtonDown);
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Don't show the pie menu on empty selection when fartouch/interaction restricted [see LLToolSelect::handleObjectSelection()]
|
||||
if ( (!rlv_handler_t::isEnabled()) || (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) ||
|
||||
(!gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) )
|
||||
{
|
||||
gPieAttachment->show(x, y, mPieMouseButtonDown);
|
||||
}
|
||||
else
|
||||
{
|
||||
make_ui_sound("UISndInvalidOp");
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -406,22 +453,37 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
//gMuteObjectPieMenu->setLabel("Mute");
|
||||
}
|
||||
|
||||
gPieObject->show(x, y, mPieMouseButtonDown);
|
||||
|
||||
// <edit>
|
||||
if(!gSavedSettings.getBOOL("DisablePointAtAndBeam"))
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Don't show the pie menu on empty selection when fartouch/interaction restricted
|
||||
// (not entirely accurate in case of Tools / Select Only XXX [see LLToolSelect::handleObjectSelection()]
|
||||
if ( (!rlv_handler_t::isEnabled()) || (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) ||
|
||||
(!gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH)) )
|
||||
{
|
||||
// </edit>
|
||||
// VEFFECT: ShowPie object
|
||||
// Don't show when you click on someone else, it freaks them
|
||||
// out.
|
||||
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_SPHERE, TRUE);
|
||||
effectp->setPositionGlobal(mPick.mPosGlobal);
|
||||
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
|
||||
effectp->setDuration(0.25f);
|
||||
// [/RLVa:KB]
|
||||
gPieObject->show(x, y, mPieMouseButtonDown);
|
||||
|
||||
// <edit>
|
||||
if(!gSavedSettings.getBOOL("DisablePointAtAndBeam"))
|
||||
{
|
||||
// </edit>
|
||||
// VEFFECT: ShowPie object
|
||||
// Don't show when you click on someone else, it freaks them
|
||||
// out.
|
||||
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(
|
||||
LLHUDObject::LL_HUD_EFFECT_SPHERE, TRUE);
|
||||
effectp->setPositionGlobal(mPick.mPosGlobal);
|
||||
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
|
||||
effectp->setDuration(0.25f);
|
||||
// <edit>
|
||||
}
|
||||
// </edit>
|
||||
// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-0.2.0f
|
||||
}
|
||||
// </edit>
|
||||
else
|
||||
{
|
||||
make_ui_sound("UISndInvalidOp");
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,6 +502,7 @@ BOOL LLToolPie::pickAndShowMenu(BOOL always_show)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOL LLToolPie::useClickAction(BOOL always_show,
|
||||
MASK mask,
|
||||
LLViewerObject* object,
|
||||
@@ -489,7 +552,11 @@ ECursorType cursor_from_object(LLViewerObject* object)
|
||||
switch(click_action)
|
||||
{
|
||||
case CLICK_ACTION_SIT:
|
||||
if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // not already sitting?
|
||||
// if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) // not already sitting?
|
||||
// [RLVa:KB] - Checked: 2009-12-22 (RLVa-1.1.0k) | Added: RLVa-1.1.0j
|
||||
if ( ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->mIsSitting)) && // not already sitting?
|
||||
((!rlv_handler_t::isEnabled()) || (gRlvHandler.canSit(object, gViewerWindow->getHoverPick().mObjectOffset))) )
|
||||
// [/RLVa:KB]
|
||||
{
|
||||
cursor = UI_CURSOR_TOOLSIT;
|
||||
}
|
||||
@@ -595,7 +662,21 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
|
||||
LLViewerObject *object = NULL;
|
||||
LLViewerObject *parent = NULL;
|
||||
object = gViewerWindow->getHoverPick().getObject();
|
||||
// object = gViewerWindow->getHoverPick().getObject();
|
||||
// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2010-01-02 (RLVa-1.1.0l) | Modified: RLVa-1.1.0l
|
||||
// Block all special click action cursors when:
|
||||
// - @fartouch=n restricted and the object is out of range
|
||||
// - @interact=n restricted and the object isn't a HUD attachment
|
||||
const LLPickInfo& pick = gViewerWindow->getHoverPick();
|
||||
object = pick.getObject();
|
||||
if ( (object) && (rlv_handler_t::isEnabled()) &&
|
||||
( ((gRlvHandler.hasBehaviour(RLV_BHVR_FARTOUCH))) && (!gRlvHandler.canTouch(object, pick.mObjectOffset)) ||
|
||||
((gRlvHandler.hasBehaviour(RLV_BHVR_INTERACT)) && (!object->isHUDAttachment())) ) )
|
||||
{
|
||||
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
|
||||
return TRUE;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
|
||||
if (object)
|
||||
{
|
||||
@@ -610,6 +691,13 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
// cursor set by media object
|
||||
}
|
||||
// [RLVa:KB] - Checked: 2010-01-02 (RLVa-1.1.0l) | Added: RLVa-1.1.0l
|
||||
else if ( (rlv_handler_t::isEnabled()) && (!gRlvHandler.canTouch(object)) )
|
||||
{
|
||||
// Block showing the "grab" or "touch" cursor if we can't touch the object (@fartouch=n is handled above)
|
||||
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
else if ((object && !object->isAvatar() && object->usePhysics())
|
||||
|| (parent && !parent->isAvatar() && parent->usePhysics()))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user