summaryrefslogtreecommitdiff
path: root/indra/newview/llmoveview.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-05-14 21:02:28 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-05-14 21:02:28 -0400
commit094dcc07f8c1d90ae723dbe60eddacb90a09eae8 (patch)
treee750942e5f22ed677b543bd49509c2a7cdc5ce56 /indra/newview/llmoveview.cpp
parentd4043d3b011c32eb503c43c551872f9c24d7344f (diff)
parent38c2a5bde985a6a8a96d912d432f8bdf7e5b60be (diff)
Merge DRTVWR-591-maint-X to main on promotion of secondlife/viewer #705: Maintenance X
Diffstat (limited to 'indra/newview/llmoveview.cpp')
-rw-r--r--indra/newview/llmoveview.cpp878
1 files changed, 439 insertions, 439 deletions
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 54409a6994..640c7ef766 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file llmoveview.cpp
* @brief Container for movement buttons like forward, left, fly
*
* $LicenseInfo:firstyear=2001&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$
*/
@@ -56,8 +56,8 @@
//
const F32 MOVE_BUTTON_DELAY = 0.0f;
-const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
-const F32 NUDGE_TIME = 0.25f; // in seconds
+const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
+const F32 NUDGE_TIME = 0.25f; // in seconds
//
// Member functions
@@ -65,222 +65,222 @@ const F32 NUDGE_TIME = 0.25f; // in seconds
// protected
LLFloaterMove::LLFloaterMove(const LLSD& key)
-: LLFloater(key),
- mForwardButton(NULL),
- mBackwardButton(NULL),
- mTurnLeftButton(NULL),
- mTurnRightButton(NULL),
- mMoveUpButton(NULL),
- mMoveDownButton(NULL),
- mModeActionsPanel(NULL),
- mCurrentMode(MM_WALK)
+: LLFloater(key),
+ mForwardButton(NULL),
+ mBackwardButton(NULL),
+ mTurnLeftButton(NULL),
+ mTurnRightButton(NULL),
+ mMoveUpButton(NULL),
+ mMoveDownButton(NULL),
+ mModeActionsPanel(NULL),
+ mCurrentMode(MM_WALK)
{
}
LLFloaterMove::~LLFloaterMove()
{
- // Ensure LLPanelStandStopFlying panel is not among floater's children. See EXT-8458.
- setVisible(FALSE);
+ // Ensure LLPanelStandStopFlying panel is not among floater's children. See EXT-8458.
+ setVisible(FALSE);
- // Otherwise it can be destroyed and static pointer in LLPanelStandStopFlying::getInstance() will become invalid.
- // Such situation was possible when LLFloaterReg returns "dead" instance of floater.
- // Should not happen after LLFloater::destroy was modified to remove "dead" instances from LLFloaterReg.
+ // Otherwise it can be destroyed and static pointer in LLPanelStandStopFlying::getInstance() will become invalid.
+ // Such situation was possible when LLFloaterReg returns "dead" instance of floater.
+ // Should not happen after LLFloater::destroy was modified to remove "dead" instances from LLFloaterReg.
}
// virtual
BOOL LLFloaterMove::postBuild()
{
- updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
-
- // Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
+ updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
+
+ // Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
- mForwardButton = getChild<LLJoystickAgentTurn>("forward btn");
- mForwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mForwardButton = getChild<LLJoystickAgentTurn>("forward btn");
+ mForwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mBackwardButton = getChild<LLJoystickAgentTurn>("backward btn");
- mBackwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mBackwardButton = getChild<LLJoystickAgentTurn>("backward btn");
+ mBackwardButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mSlideLeftButton = getChild<LLJoystickAgentSlide>("move left btn");
- mSlideLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mSlideLeftButton = getChild<LLJoystickAgentSlide>("move left btn");
+ mSlideLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mSlideRightButton = getChild<LLJoystickAgentSlide>("move right btn");
- mSlideRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mSlideRightButton = getChild<LLJoystickAgentSlide>("move right btn");
+ mSlideRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mTurnLeftButton = getChild<LLButton>("turn left btn");
- mTurnLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mTurnLeftButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnLeft, this));
- mTurnRightButton = getChild<LLButton>("turn right btn");
- mTurnRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mTurnRightButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnRight, this));
+ mTurnLeftButton = getChild<LLButton>("turn left btn");
+ mTurnLeftButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mTurnLeftButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnLeft, this));
+ mTurnRightButton = getChild<LLButton>("turn right btn");
+ mTurnRightButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mTurnRightButton->setHeldDownCallback(boost::bind(&LLFloaterMove::turnRight, this));
- mMoveUpButton = getChild<LLButton>("move up btn");
- mMoveUpButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mMoveUpButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveUp, this));
+ mMoveUpButton = getChild<LLButton>("move up btn");
+ mMoveUpButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mMoveUpButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveUp, this));
- mMoveDownButton = getChild<LLButton>("move down btn");
- mMoveDownButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
- mMoveDownButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveDown, this));
+ mMoveDownButton = getChild<LLButton>("move down btn");
+ mMoveDownButton->setHeldDownDelay(MOVE_BUTTON_DELAY);
+ mMoveDownButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveDown, this));
- mModeActionsPanel = getChild<LLPanel>("panel_modes");
+ mModeActionsPanel = getChild<LLPanel>("panel_modes");
- LLButton* btn;
- btn = getChild<LLButton>("mode_walk_btn");
- btn->setCommitCallback(boost::bind(&LLFloaterMove::onWalkButtonClick, this));
+ LLButton* btn;
+ btn = getChild<LLButton>("mode_walk_btn");
+ btn->setCommitCallback(boost::bind(&LLFloaterMove::onWalkButtonClick, this));
- btn = getChild<LLButton>("mode_run_btn");
- btn->setCommitCallback(boost::bind(&LLFloaterMove::onRunButtonClick, this));
+ btn = getChild<LLButton>("mode_run_btn");
+ btn->setCommitCallback(boost::bind(&LLFloaterMove::onRunButtonClick, this));
- btn = getChild<LLButton>("mode_fly_btn");
- btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this));
+ btn = getChild<LLButton>("mode_fly_btn");
+ btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this));
- initModeTooltips();
+ initModeTooltips();
- initModeButtonMap();
+ initModeButtonMap();
- initMovementMode();
+ initMovementMode();
- gAgent.addParcelChangedCallback(LLFloaterMove::sUpdateFlyingStatus);
+ gAgent.addParcelChangedCallback(LLFloaterMove::sUpdateFlyingStatus);
- return TRUE;
+ return TRUE;
}
// *NOTE: we assume that setVisible() is called on floater close.
// virtual
void LLFloaterMove::setVisible(BOOL visible)
{
- // Do nothing with Stand/Stop Flying panel in excessive calls of this method.
- if (getVisible() == visible)
- {
- LLFloater::setVisible(visible);
- return;
- }
-
- if (visible)
- {
- LLFirstUse::notMoving(false);
- // Attach the Stand/Stop Flying panel.
- LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance();
- ssf_panel->reparent(this);
- const LLRect& mode_actions_rect = mModeActionsPanel->getRect();
- ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);
- }
- else
- {
- // Detach the Stand/Stop Flying panel.
- LLPanelStandStopFlying::getInstance()->reparent(NULL);
- }
-
- LLFloater::setVisible(visible);
-}
-
-// static
+ // Do nothing with Stand/Stop Flying panel in excessive calls of this method.
+ if (getVisible() == visible)
+ {
+ LLFloater::setVisible(visible);
+ return;
+ }
+
+ if (visible)
+ {
+ LLFirstUse::notMoving(false);
+ // Attach the Stand/Stop Flying panel.
+ LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance();
+ ssf_panel->reparent(this);
+ const LLRect& mode_actions_rect = mModeActionsPanel->getRect();
+ ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);
+ }
+ else
+ {
+ // Detach the Stand/Stop Flying panel.
+ LLPanelStandStopFlying::getInstance()->reparent(NULL);
+ }
+
+ LLFloater::setVisible(visible);
+}
+
+// static
F32 LLFloaterMove::getYawRate( F32 time )
{
- if( time < NUDGE_TIME )
- {
- F32 rate = YAW_NUDGE_RATE + time * (1 - YAW_NUDGE_RATE)/ NUDGE_TIME;
- return rate;
- }
- else
- {
- return 1.f;
- }
+ if( time < NUDGE_TIME )
+ {
+ F32 rate = YAW_NUDGE_RATE + time * (1 - YAW_NUDGE_RATE)/ NUDGE_TIME;
+ return rate;
+ }
+ else
+ {
+ return 1.f;
+ }
}
-// static
+// static
void LLFloaterMove::setFlyingMode(BOOL fly)
{
- LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
- if (instance)
- {
- instance->setFlyingModeImpl(fly);
- LLVOAvatarSelf* avatar_object = gAgentAvatarp;
- bool is_sitting = avatar_object
- && (avatar_object->getRegion() != NULL)
- && (!avatar_object->isDead())
- && avatar_object->isSitting();
- instance->showModeButtons(!fly && !is_sitting);
- }
- if (fly)
- {
- LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
- }
- else
- {
- LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
- }
+ LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
+ if (instance)
+ {
+ instance->setFlyingModeImpl(fly);
+ LLVOAvatarSelf* avatar_object = gAgentAvatarp;
+ bool is_sitting = avatar_object
+ && (avatar_object->getRegion() != NULL)
+ && (!avatar_object->isDead())
+ && avatar_object->isSitting();
+ instance->showModeButtons(!fly && !is_sitting);
+ }
+ if (fly)
+ {
+ LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
+ }
+ else
+ {
+ LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
+ }
}
//static
void LLFloaterMove::setAlwaysRunMode(bool run)
{
- LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
- if (instance)
- {
- instance->setAlwaysRunModeImpl(run);
- }
+ LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
+ if (instance)
+ {
+ instance->setAlwaysRunModeImpl(run);
+ }
}
void LLFloaterMove::setFlyingModeImpl(BOOL fly)
{
- updateButtonsWithMovementMode(fly ? MM_FLY : (gAgent.getAlwaysRun() ? MM_RUN : MM_WALK));
+ updateButtonsWithMovementMode(fly ? MM_FLY : (gAgent.getAlwaysRun() ? MM_RUN : MM_WALK));
}
void LLFloaterMove::setAlwaysRunModeImpl(bool run)
{
- if (!gAgent.getFlying())
- {
- updateButtonsWithMovementMode(run ? MM_RUN : MM_WALK);
- }
+ if (!gAgent.getFlying())
+ {
+ updateButtonsWithMovementMode(run ? MM_RUN : MM_WALK);
+ }
}
//static
void LLFloaterMove::setSittingMode(BOOL bSitting)
{
- if (bSitting)
- {
- LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND);
- }
- else
- {
- LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND);
+ if (bSitting)
+ {
+ LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND);
+ }
+ else
+ {
+ LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND);
- // show "Stop Flying" button if needed. EXT-871
- if (gAgent.getFlying())
- {
- LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
- }
- }
- enableInstance();
+ // show "Stop Flying" button if needed. EXT-871
+ if (gAgent.getFlying())
+ {
+ LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING);
+ }
+ }
+ enableInstance();
}
-// protected
+// protected
void LLFloaterMove::turnLeft()
{
- F32 time = mTurnLeftButton->getHeldDownTime();
- gAgent.moveYaw( getYawRate( time ) );
+ F32 time = mTurnLeftButton->getHeldDownTime();
+ gAgent.moveYaw( getYawRate( time ) );
}
// protected
void LLFloaterMove::turnRight()
{
- F32 time = mTurnRightButton->getHeldDownTime();
- gAgent.moveYaw( -getYawRate( time ) );
+ F32 time = mTurnRightButton->getHeldDownTime();
+ gAgent.moveYaw( -getYawRate( time ) );
}
// protected
void LLFloaterMove::moveUp()
{
- // Jumps or flys up, depending on fly state
- gAgent.moveUp(1);
+ // Jumps or flys up, depending on fly state
+ gAgent.moveUp(1);
}
// protected
void LLFloaterMove::moveDown()
{
- // Crouches or flys down, depending on fly state
- gAgent.moveUp(-1);
+ // Crouches or flys down, depending on fly state
+ gAgent.moveUp(-1);
}
//////////////////////////////////////////////////////////////////////////
@@ -289,220 +289,220 @@ void LLFloaterMove::moveDown()
void LLFloaterMove::onWalkButtonClick()
{
- setMovementMode(MM_WALK);
+ setMovementMode(MM_WALK);
}
void LLFloaterMove::onRunButtonClick()
{
- setMovementMode(MM_RUN);
+ setMovementMode(MM_RUN);
}
void LLFloaterMove::onFlyButtonClick()
{
- setMovementMode(MM_FLY);
+ setMovementMode(MM_FLY);
}
void LLFloaterMove::setMovementMode(const EMovementMode mode)
{
- mCurrentMode = mode;
-
- if(MM_FLY == mode)
- {
- LLAgent::toggleFlying();
- }
- else
- {
- gAgent.setFlying(FALSE);
- }
-
- // attempts to set avatar flying can not set it real flying in some cases.
- // For ex. when avatar fell down & is standing up.
- // So, no need to continue processing FLY mode. See EXT-1079
- if (MM_FLY == mode && !gAgent.getFlying())
- {
- return;
- }
-
- switch (mode)
- {
- case MM_RUN:
- gAgent.setAlwaysRun();
- gAgent.setRunning();
- break;
- case MM_WALK:
- gAgent.clearAlwaysRun();
- gAgent.clearRunning();
- break;
- default:
- //do nothing for other modes (MM_FLY)
- break;
- }
- // tell the simulator.
- gAgent.sendWalkRun(gAgent.getAlwaysRun());
-
- updateButtonsWithMovementMode(mode);
-
- bool bHideModeButtons = MM_FLY == mode
- || (isAgentAvatarValid() && gAgentAvatarp->isSitting());
-
- showModeButtons(!bHideModeButtons);
+ mCurrentMode = mode;
+
+ if(MM_FLY == mode)
+ {
+ LLAgent::toggleFlying();
+ }
+ else
+ {
+ gAgent.setFlying(FALSE);
+ }
+
+ // attempts to set avatar flying can not set it real flying in some cases.
+ // For ex. when avatar fell down & is standing up.
+ // So, no need to continue processing FLY mode. See EXT-1079
+ if (MM_FLY == mode && !gAgent.getFlying())
+ {
+ return;
+ }
+
+ switch (mode)
+ {
+ case MM_RUN:
+ gAgent.setAlwaysRun();
+ gAgent.setRunning();
+ break;
+ case MM_WALK:
+ gAgent.clearAlwaysRun();
+ gAgent.clearRunning();
+ break;
+ default:
+ //do nothing for other modes (MM_FLY)
+ break;
+ }
+ // tell the simulator.
+ gAgent.sendWalkRun(gAgent.getAlwaysRun());
+
+ updateButtonsWithMovementMode(mode);
+
+ bool bHideModeButtons = MM_FLY == mode
+ || (isAgentAvatarValid() && gAgentAvatarp->isSitting());
+
+ showModeButtons(!bHideModeButtons);
}
void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode)
{
- setModeTooltip(newMode);
- setModeButtonToggleState(newMode);
- setModeTitle(newMode);
+ setModeTooltip(newMode);
+ setModeButtonToggleState(newMode);
+ setModeTitle(newMode);
}
void LLFloaterMove::initModeTooltips()
{
- control_tooltip_map_t walkTipMap;
- walkTipMap.insert(std::make_pair(mForwardButton, getString("walk_forward_tooltip")));
- walkTipMap.insert(std::make_pair(mBackwardButton, getString("walk_back_tooltip")));
- walkTipMap.insert(std::make_pair(mSlideLeftButton, getString("walk_left_tooltip")));
- walkTipMap.insert(std::make_pair(mSlideRightButton, getString("walk_right_tooltip")));
- walkTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
- walkTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
- mModeControlTooltipsMap[MM_WALK] = walkTipMap;
-
- control_tooltip_map_t runTipMap;
- runTipMap.insert(std::make_pair(mForwardButton, getString("run_forward_tooltip")));
- runTipMap.insert(std::make_pair(mBackwardButton, getString("run_back_tooltip")));
- runTipMap.insert(std::make_pair(mSlideLeftButton, getString("run_left_tooltip")));
- runTipMap.insert(std::make_pair(mSlideRightButton, getString("run_right_tooltip")));
- runTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
- runTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
- mModeControlTooltipsMap[MM_RUN] = runTipMap;
-
- control_tooltip_map_t flyTipMap;
- flyTipMap.insert(std::make_pair(mForwardButton, getString("fly_forward_tooltip")));
- flyTipMap.insert(std::make_pair(mBackwardButton, getString("fly_back_tooltip")));
- flyTipMap.insert(std::make_pair(mSlideLeftButton, getString("fly_left_tooltip")));
- flyTipMap.insert(std::make_pair(mSlideRightButton, getString("fly_right_tooltip")));
- flyTipMap.insert(std::make_pair(mMoveUpButton, getString("fly_up_tooltip")));
- flyTipMap.insert(std::make_pair(mMoveDownButton, getString("fly_down_tooltip")));
- mModeControlTooltipsMap[MM_FLY] = flyTipMap;
-
- setModeTooltip(MM_WALK);
+ control_tooltip_map_t walkTipMap;
+ walkTipMap.insert(std::make_pair(mForwardButton, getString("walk_forward_tooltip")));
+ walkTipMap.insert(std::make_pair(mBackwardButton, getString("walk_back_tooltip")));
+ walkTipMap.insert(std::make_pair(mSlideLeftButton, getString("walk_left_tooltip")));
+ walkTipMap.insert(std::make_pair(mSlideRightButton, getString("walk_right_tooltip")));
+ walkTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
+ walkTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
+ mModeControlTooltipsMap[MM_WALK] = walkTipMap;
+
+ control_tooltip_map_t runTipMap;
+ runTipMap.insert(std::make_pair(mForwardButton, getString("run_forward_tooltip")));
+ runTipMap.insert(std::make_pair(mBackwardButton, getString("run_back_tooltip")));
+ runTipMap.insert(std::make_pair(mSlideLeftButton, getString("run_left_tooltip")));
+ runTipMap.insert(std::make_pair(mSlideRightButton, getString("run_right_tooltip")));
+ runTipMap.insert(std::make_pair(mMoveUpButton, getString("jump_tooltip")));
+ runTipMap.insert(std::make_pair(mMoveDownButton, getString("crouch_tooltip")));
+ mModeControlTooltipsMap[MM_RUN] = runTipMap;
+
+ control_tooltip_map_t flyTipMap;
+ flyTipMap.insert(std::make_pair(mForwardButton, getString("fly_forward_tooltip")));
+ flyTipMap.insert(std::make_pair(mBackwardButton, getString("fly_back_tooltip")));
+ flyTipMap.insert(std::make_pair(mSlideLeftButton, getString("fly_left_tooltip")));
+ flyTipMap.insert(std::make_pair(mSlideRightButton, getString("fly_right_tooltip")));
+ flyTipMap.insert(std::make_pair(mMoveUpButton, getString("fly_up_tooltip")));
+ flyTipMap.insert(std::make_pair(mMoveDownButton, getString("fly_down_tooltip")));
+ mModeControlTooltipsMap[MM_FLY] = flyTipMap;
+
+ setModeTooltip(MM_WALK);
}
void LLFloaterMove::initModeButtonMap()
{
- mModeControlButtonMap[MM_WALK] = getChild<LLButton>("mode_walk_btn");
- mModeControlButtonMap[MM_RUN] = getChild<LLButton>("mode_run_btn");
- mModeControlButtonMap[MM_FLY] = getChild<LLButton>("mode_fly_btn");
+ mModeControlButtonMap[MM_WALK] = getChild<LLButton>("mode_walk_btn");
+ mModeControlButtonMap[MM_RUN] = getChild<LLButton>("mode_run_btn");
+ mModeControlButtonMap[MM_FLY] = getChild<LLButton>("mode_fly_btn");
}
void LLFloaterMove::initMovementMode()
{
- EMovementMode initMovementMode = gAgent.getAlwaysRun() ? MM_RUN : MM_WALK;
- if (gAgent.getFlying())
- {
- initMovementMode = MM_FLY;
- }
-
- mCurrentMode = initMovementMode;
- bool hide_mode_buttons = (MM_FLY == mCurrentMode) || (isAgentAvatarValid() && gAgentAvatarp->isSitting());
+ EMovementMode initMovementMode = gAgent.getAlwaysRun() ? MM_RUN : MM_WALK;
+ if (gAgent.getFlying())
+ {
+ initMovementMode = MM_FLY;
+ }
+
+ mCurrentMode = initMovementMode;
+ bool hide_mode_buttons = (MM_FLY == mCurrentMode) || (isAgentAvatarValid() && gAgentAvatarp->isSitting());
- updateButtonsWithMovementMode(mCurrentMode);
- showModeButtons(!hide_mode_buttons);
+ updateButtonsWithMovementMode(mCurrentMode);
+ showModeButtons(!hide_mode_buttons);
}
void LLFloaterMove::setModeTooltip(const EMovementMode mode)
{
- llassert_always(mModeControlTooltipsMap.end() != mModeControlTooltipsMap.find(mode));
- control_tooltip_map_t controlsTipMap = mModeControlTooltipsMap[mode];
- control_tooltip_map_t::const_iterator it = controlsTipMap.begin();
- for (; it != controlsTipMap.end(); ++it)
- {
- LLView* ctrl = it->first;
- std::string tooltip = it->second;
- ctrl->setToolTip(tooltip);
- }
+ llassert_always(mModeControlTooltipsMap.end() != mModeControlTooltipsMap.find(mode));
+ control_tooltip_map_t controlsTipMap = mModeControlTooltipsMap[mode];
+ control_tooltip_map_t::const_iterator it = controlsTipMap.begin();
+ for (; it != controlsTipMap.end(); ++it)
+ {
+ LLView* ctrl = it->first;
+ std::string tooltip = it->second;
+ ctrl->setToolTip(tooltip);
+ }
}
void LLFloaterMove::setModeTitle(const EMovementMode mode)
{
- std::string title;
- switch(mode)
- {
- case MM_WALK:
- title = getString("walk_title");
- break;
- case MM_RUN:
- title = getString("run_title");
- break;
- case MM_FLY:
- title = getString("fly_title");
- break;
- default:
- // title should be provided for all modes
- llassert(false);
- break;
- }
- setTitle(title);
+ std::string title;
+ switch(mode)
+ {
+ case MM_WALK:
+ title = getString("walk_title");
+ break;
+ case MM_RUN:
+ title = getString("run_title");
+ break;
+ case MM_FLY:
+ title = getString("fly_title");
+ break;
+ default:
+ // title should be provided for all modes
+ llassert(false);
+ break;
+ }
+ setTitle(title);
}
//static
void LLFloaterMove::sUpdateFlyingStatus()
{
- LLFloaterMove *floater = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
- if (floater) floater->mModeControlButtonMap[MM_FLY]->setEnabled(gAgent.canFly());
-
+ LLFloaterMove *floater = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
+ if (floater) floater->mModeControlButtonMap[MM_FLY]->setEnabled(gAgent.canFly());
+
}
void LLFloaterMove::showModeButtons(BOOL bShow)
{
- if (mModeActionsPanel->getVisible() == bShow)
- return;
- mModeActionsPanel->setVisible(bShow);
+ if (mModeActionsPanel->getVisible() == bShow)
+ return;
+ mModeActionsPanel->setVisible(bShow);
}
//static
void LLFloaterMove::enableInstance()
{
- LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
- if (instance)
- {
- if (gAgent.getFlying())
- {
- instance->showModeButtons(FALSE);
- }
- else
- {
+ LLFloaterMove* instance = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
+ if (instance)
+ {
+ if (gAgent.getFlying())
+ {
+ instance->showModeButtons(FALSE);
+ }
+ else
+ {
instance->showModeButtons(isAgentAvatarValid() && !gAgentAvatarp->isSitting());
- }
- }
+ }
+ }
}
void LLFloaterMove::onOpen(const LLSD& key)
{
- if (gAgent.getFlying())
- {
- setFlyingMode(TRUE);
- showModeButtons(FALSE);
- }
+ if (gAgent.getFlying())
+ {
+ setFlyingMode(TRUE);
+ showModeButtons(FALSE);
+ }
- if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
- {
- setSittingMode(TRUE);
- showModeButtons(FALSE);
- }
+ if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
+ {
+ setSittingMode(TRUE);
+ showModeButtons(FALSE);
+ }
- sUpdateFlyingStatus();
+ sUpdateFlyingStatus();
}
void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
{
- llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode));
+ llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode));
- mode_control_button_map_t::const_iterator it = mModeControlButtonMap.begin();
- for (; it != mModeControlButtonMap.end(); ++it)
- {
- it->second->setToggleState(FALSE);
- }
+ mode_control_button_map_t::const_iterator it = mModeControlButtonMap.begin();
+ for (; it != mModeControlButtonMap.end(); ++it)
+ {
+ it->second->setToggleState(FALSE);
+ }
- mModeControlButtonMap[mode]->setToggleState(TRUE);
+ mModeControlButtonMap[mode]->setToggleState(TRUE);
}
@@ -511,154 +511,154 @@ void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
/* LLPanelStandStopFlying */
/************************************************************************/
LLPanelStandStopFlying::LLPanelStandStopFlying() :
- mStandButton(NULL),
- mStopFlyingButton(NULL),
- mAttached(false)
+ mStandButton(NULL),
+ mStopFlyingButton(NULL),
+ mAttached(false)
{
- // make sure we have the only instance of this class
- static bool b = true;
- llassert_always(b);
- b=false;
+ // make sure we have the only instance of this class
+ static bool b = true;
+ llassert_always(b);
+ b=false;
}
// static
LLPanelStandStopFlying* LLPanelStandStopFlying::getInstance()
{
- static LLPanelStandStopFlying* panel = getStandStopFlyingPanel();
- return panel;
+ static LLPanelStandStopFlying* panel = getStandStopFlyingPanel();
+ return panel;
}
//static
void LLPanelStandStopFlying::setStandStopFlyingMode(EStandStopFlyingMode mode)
{
- LLPanelStandStopFlying* panel = getInstance();
+ LLPanelStandStopFlying* panel = getInstance();
- if (mode == SSFM_STAND)
- {
- LLFirstUse::sit();
- LLFirstUse::notMoving(false);
- }
- panel->mStandButton->setVisible(SSFM_STAND == mode);
- panel->mStopFlyingButton->setVisible(SSFM_STOP_FLYING == mode);
+ if (mode == SSFM_STAND)
+ {
+ LLFirstUse::sit();
+ LLFirstUse::notMoving(false);
+ }
+ panel->mStandButton->setVisible(SSFM_STAND == mode);
+ panel->mStopFlyingButton->setVisible(SSFM_STOP_FLYING == mode);
- //visibility of it should be updated after updating visibility of the buttons
- panel->setVisible(TRUE);
+ //visibility of it should be updated after updating visibility of the buttons
+ panel->setVisible(TRUE);
}
//static
void LLPanelStandStopFlying::clearStandStopFlyingMode(EStandStopFlyingMode mode)
{
- LLPanelStandStopFlying* panel = getInstance();
- switch(mode) {
- case SSFM_STAND:
- panel->mStandButton->setVisible(FALSE);
- break;
- case SSFM_STOP_FLYING:
- panel->mStopFlyingButton->setVisible(FALSE);
- break;
- default:
- LL_ERRS() << "Unexpected EStandStopFlyingMode is passed: " << mode << LL_ENDL;
- }
+ LLPanelStandStopFlying* panel = getInstance();
+ switch(mode) {
+ case SSFM_STAND:
+ panel->mStandButton->setVisible(FALSE);
+ break;
+ case SSFM_STOP_FLYING:
+ panel->mStopFlyingButton->setVisible(FALSE);
+ break;
+ default:
+ LL_ERRS() << "Unexpected EStandStopFlyingMode is passed: " << mode << LL_ENDL;
+ }
}
BOOL LLPanelStandStopFlying::postBuild()
{
- mStandButton = getChild<LLButton>("stand_btn");
- mStandButton->setCommitCallback(boost::bind(&LLPanelStandStopFlying::onStandButtonClick, this));
- mStandButton->setCommitCallback(boost::bind(&LLFloaterMove::enableInstance));
- mStandButton->setVisible(FALSE);
- LLHints::getInstance()->registerHintTarget("stand_btn", mStandButton->getHandle());
-
- mStopFlyingButton = getChild<LLButton>("stop_fly_btn");
- //mStopFlyingButton->setCommitCallback(boost::bind(&LLFloaterMove::setFlyingMode, FALSE));
- mStopFlyingButton->setCommitCallback(boost::bind(&LLPanelStandStopFlying::onStopFlyingButtonClick, this));
- mStopFlyingButton->setVisible(FALSE);
+ mStandButton = getChild<LLButton>("stand_btn");
+ mStandButton->setCommitCallback(boost::bind(&LLPanelStandStopFlying::onStandButtonClick, this));
+ mStandButton->setCommitCallback(boost::bind(&LLFloaterMove::enableInstance));
+ mStandButton->setVisible(FALSE);
+ LLHints::getInstance()->registerHintTarget("stand_btn", mStandButton->getHandle());
+
+ mStopFlyingButton = getChild<LLButton>("stop_fly_btn");
+ //mStopFlyingButton->setCommitCallback(boost::bind(&LLFloaterMove::setFlyingMode, FALSE));
+ mStopFlyingButton->setCommitCallback(boost::bind(&LLPanelStandStopFlying::onStopFlyingButtonClick, this));
+ mStopFlyingButton->setVisible(FALSE);
+
+ gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLPanelStandStopFlying::updatePosition, this));
- gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLPanelStandStopFlying::updatePosition, this));
-
- return TRUE;
+ return TRUE;
}
//virtual
void LLPanelStandStopFlying::setVisible(BOOL visible)
{
- //we dont need to show the panel if these buttons are not activated
- if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) visible = false;
+ //we dont need to show the panel if these buttons are not activated
+ if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) visible = false;
- if (visible)
- {
- updatePosition();
- }
+ if (visible)
+ {
+ updatePosition();
+ }
- // do not change parent visibility in case panel is attached into Move Floater: EXT-3632, EXT-4646
- if (!mAttached)
- {
- //change visibility of parent layout_panel to animate in/out. EXT-2504
- if (getParent()) getParent()->setVisible(visible);
- }
+ // do not change parent visibility in case panel is attached into Move Floater: EXT-3632, EXT-4646
+ if (!mAttached)
+ {
+ //change visibility of parent layout_panel to animate in/out. EXT-2504
+ if (getParent()) getParent()->setVisible(visible);
+ }
- // also change own visibility to avoid displaying the panel in mouselook (broken when EXT-2504 was implemented).
- // See EXT-4718.
- LLPanel::setVisible(visible);
+ // also change own visibility to avoid displaying the panel in mouselook (broken when EXT-2504 was implemented).
+ // See EXT-4718.
+ LLPanel::setVisible(visible);
}
BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)
{
- LLToolTipMgr::instance().unblockToolTips();
+ LLToolTipMgr::instance().unblockToolTips();
- if (mStandButton->getVisible())
- {
- LLToolTipMgr::instance().show(mStandButton->getToolTip());
- }
- else if (mStopFlyingButton->getVisible())
- {
- LLToolTipMgr::instance().show(mStopFlyingButton->getToolTip());
- }
+ if (mStandButton->getVisible())
+ {
+ LLToolTipMgr::instance().show(mStandButton->getToolTip());
+ }
+ else if (mStopFlyingButton->getVisible())
+ {
+ LLToolTipMgr::instance().show(mStopFlyingButton->getToolTip());
+ }
- return LLPanel::handleToolTip(x, y, mask);
+ return LLPanel::handleToolTip(x, y, mask);
}
void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view)
{
- LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
- if (!parent)
- {
- LL_WARNS() << "Stand/stop flying panel parent is unset, already attached?: " << mAttached << ", new parent: " << (move_view == NULL ? "NULL" : "Move Floater") << LL_ENDL;
- return;
- }
-
- if (move_view != NULL)
- {
- llassert(move_view != parent); // sanity check
-
- // Save our original container.
- if (!mOriginalParent.get())
- mOriginalParent = parent->getHandle();
-
- // Attach to movement controls.
- parent->removeChild(this);
- move_view->addChild(this);
- // Origin must be set by movement controls.
- mAttached = true;
- }
- else
- {
- if (!mOriginalParent.get())
- {
- LL_WARNS() << "Original parent of the stand / stop flying panel not found" << LL_ENDL;
- return;
- }
-
- // Detach from movement controls.
- parent->removeChild(this);
- mOriginalParent.get()->addChild(this);
- // update parent with self visibility (it is changed in setVisible()). EXT-4743
- mOriginalParent.get()->setVisible(getVisible());
-
- mAttached = false;
- updatePosition(); // don't defer until next draw() to avoid flicker
- }
+ LLPanel* parent = dynamic_cast<LLPanel*>(getParent());
+ if (!parent)
+ {
+ LL_WARNS() << "Stand/stop flying panel parent is unset, already attached?: " << mAttached << ", new parent: " << (move_view == NULL ? "NULL" : "Move Floater") << LL_ENDL;
+ return;
+ }
+
+ if (move_view != NULL)
+ {
+ llassert(move_view != parent); // sanity check
+
+ // Save our original container.
+ if (!mOriginalParent.get())
+ mOriginalParent = parent->getHandle();
+
+ // Attach to movement controls.
+ parent->removeChild(this);
+ move_view->addChild(this);
+ // Origin must be set by movement controls.
+ mAttached = true;
+ }
+ else
+ {
+ if (!mOriginalParent.get())
+ {
+ LL_WARNS() << "Original parent of the stand / stop flying panel not found" << LL_ENDL;
+ return;
+ }
+
+ // Detach from movement controls.
+ parent->removeChild(this);
+ mOriginalParent.get()->addChild(this);
+ // update parent with self visibility (it is changed in setVisible()). EXT-4743
+ mOriginalParent.get()->setVisible(getVisible());
+
+ mAttached = false;
+ updatePosition(); // don't defer until next draw() to avoid flicker
+ }
}
//////////////////////////////////////////////////////////////////////////
@@ -668,33 +668,33 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view)
//static
LLPanelStandStopFlying* LLPanelStandStopFlying::getStandStopFlyingPanel()
{
- LLPanelStandStopFlying* panel = new LLPanelStandStopFlying();
- panel->buildFromFile("panel_stand_stop_flying.xml");
+ LLPanelStandStopFlying* panel = new LLPanelStandStopFlying();
+ panel->buildFromFile("panel_stand_stop_flying.xml");
- panel->setVisible(FALSE);
- //LLUI::getInstance()->getRootView()->addChild(panel);
+ panel->setVisible(FALSE);
+ //LLUI::getInstance()->getRootView()->addChild(panel);
- LL_INFOS() << "Build LLPanelStandStopFlying panel" << LL_ENDL;
+ LL_INFOS() << "Build LLPanelStandStopFlying panel" << LL_ENDL;
- panel->updatePosition();
- return panel;
+ panel->updatePosition();
+ return panel;
}
void LLPanelStandStopFlying::onStandButtonClick()
{
- LLFirstUse::sit(false);
+ LLFirstUse::sit(false);
- LLSelectMgr::getInstance()->deselectAllForStandingUp();
- gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
+ LLSelectMgr::getInstance()->deselectAllForStandingUp();
+ gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
- setFocus(FALSE);
+ setFocus(FALSE);
}
void LLPanelStandStopFlying::onStopFlyingButtonClick()
{
- gAgent.setFlying(FALSE);
+ gAgent.setFlying(FALSE);
- setFocus(FALSE); // EXT-482
+ setFocus(FALSE); // EXT-482
}
/**
@@ -702,30 +702,30 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
*/
void LLPanelStandStopFlying::updatePosition()
{
- if (mAttached) return;
-
- S32 bottom_tb_center = 0;
- if (LLToolBar* toolbar_bottom = gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_BOTTOM))
- {
- bottom_tb_center = toolbar_bottom->getRect().getCenterX();
- }
-
- S32 left_tb_width = 0;
- if (LLToolBar* toolbar_left = gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_LEFT))
- {
- left_tb_width = toolbar_left->getRect().getWidth();
- }
-
- if (gToolBarView != NULL && gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_LEFT)->hasButtons())
- {
- S32 x_pos = bottom_tb_center - getRect().getWidth() / 2 - left_tb_width;
- setOrigin( x_pos, 0);
- }
- else
- {
- S32 x_pos = bottom_tb_center - getRect().getWidth() / 2;
- setOrigin( x_pos, 0);
- }
+ if (mAttached) return;
+
+ S32 bottom_tb_center = 0;
+ if (LLToolBar* toolbar_bottom = gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_BOTTOM))
+ {
+ bottom_tb_center = toolbar_bottom->getRect().getCenterX();
+ }
+
+ S32 left_tb_width = 0;
+ if (LLToolBar* toolbar_left = gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_LEFT))
+ {
+ left_tb_width = toolbar_left->getRect().getWidth();
+ }
+
+ if (gToolBarView != NULL && gToolBarView->getToolbar(LLToolBarEnums::TOOLBAR_LEFT)->hasButtons())
+ {
+ S32 x_pos = bottom_tb_center - getRect().getWidth() / 2 - left_tb_width;
+ setOrigin( x_pos, 0);
+ }
+ else
+ {
+ S32 x_pos = bottom_tb_center - getRect().getWidth() / 2;
+ setOrigin( x_pos, 0);
+ }
}
// EOF