Merged in RLVa. Viewer broken!

This commit is contained in:
Siana Gearz
2010-11-07 05:05:47 +01:00
parent ae4a9521af
commit 740b570168
94 changed files with 11249 additions and 503 deletions

View File

@@ -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()))
{