summaryrefslogtreecommitdiff
path: root/indra/newview/llmoveview.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llmoveview.h')
-rw-r--r--indra/newview/llmoveview.h98
1 files changed, 89 insertions, 9 deletions
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index 250315b9f2..fd9cf9f4c1 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -55,26 +55,106 @@ public:
/*virtual*/ BOOL postBuild();
static F32 getYawRate(F32 time);
+ static void setFlyingMode(BOOL fly);
+ void setFlyingModeImpl(BOOL fly);
+ static void setAlwaysRunMode(bool run);
+ void setAlwaysRunModeImpl(bool run);
+ static void setSittingMode(BOOL bSitting);
+ static void enableInstance(BOOL bEnable);
+ /*virtual*/ void onOpen(const LLSD& key);
+
+ // *HACK: due to hard enough to have this control aligned with "Move" button while resizing
+ // let update its position in each frame
+ /*virtual*/ void draw(){updatePosition(); LLFloater::draw();}
+
protected:
- static void turnLeftNudge(void* userdata);
- static void turnLeft(void* userdata);
-
- static void turnRightNudge(void* userdata);
- static void turnRight(void* userdata);
+ void turnLeft();
+ void turnRight();
- static void moveUp(void* userdata);
- static void moveDown(void* userdata);
+ void moveUp();
+ void moveDown();
+
+private:
+ typedef enum movement_mode_t
+ {
+ MM_WALK,
+ MM_RUN,
+ MM_FLY
+ } EMovementMode;
+ void onWalkButtonClick();
+ void onRunButtonClick();
+ void onFlyButtonClick();
+ void onStopFlyingButtonClick();
+ void initMovementMode();
+ void setMovementMode(const EMovementMode mode);
+ void showFlyControls(bool bShow);
+ void initModeTooltips();
+ void setModeTooltip(const EMovementMode mode);
+ void showQuickTips(const EMovementMode mode);
+ void initModeButtonMap();
+ void setModeButtonToggleState(const EMovementMode mode);
+ void updateButtonsWithMovementMode(const EMovementMode newMode);
+ void updatePosition();
+ void showModeButtons(BOOL bShow);
public:
+
LLJoystickAgentTurn* mForwardButton;
LLJoystickAgentTurn* mBackwardButton;
- LLJoystickAgentSlide* mSlideLeftButton;
- LLJoystickAgentSlide* mSlideRightButton;
LLButton* mTurnLeftButton;
LLButton* mTurnRightButton;
LLButton* mMoveUpButton;
LLButton* mMoveDownButton;
+private:
+ LLButton* mStopFlyingButton;
+ LLPanel* mModeActionsPanel;
+
+ typedef std::map<LLView*, std::string> control_tooltip_map_t;
+ typedef std::map<EMovementMode, control_tooltip_map_t> mode_control_tooltip_map_t;
+ mode_control_tooltip_map_t mModeControlTooltipsMap;
+
+ typedef std::map<EMovementMode, LLButton*> mode_control_button_map_t;
+ mode_control_button_map_t mModeControlButtonMap;
+
+};
+
+
+/**
+ * This class contains Stand Up and Stop Flying buttons displayed above Move button in bottom tray
+ */
+class LLPanelStandStopFlying : public LLPanel
+{
+public:
+ typedef enum stand_stop_flying_mode_t
+ {
+ SSFM_STAND,
+ SSFM_STOP_FLYING
+ } EStandStopFlyingMode;
+
+ static LLPanelStandStopFlying* getInstance();
+ static void setStandStopFlyingMode(EStandStopFlyingMode mode);
+ static void clearStandStopFlyingMode(EStandStopFlyingMode mode);
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void setVisible(BOOL visible);
+
+ // *HACK: due to hard enough to have this control aligned with "Move" button while resizing
+ // let update its position in each frame
+ /*virtual*/ void draw(){updatePosition(); LLPanel::draw();}
+
+
+protected:
+ LLPanelStandStopFlying();
+
+
+private:
+ static LLPanelStandStopFlying* getStandStopFlyingPanel();
+ void onStandButtonClick();
+ void onStopFlyingButtonClick();
+ void updatePosition();
+
+ LLButton* mStandButton;
+ LLButton* mStopFlyingButton;
};