diff options
Diffstat (limited to 'indra/newview/llfloatercamera.cpp')
-rw-r--r-- | indra/newview/llfloatercamera.cpp | 724 |
1 files changed, 362 insertions, 362 deletions
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 7985ce447f..4b91ff6881 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -1,25 +1,25 @@ -/** +/** * @file llfloatercamera.cpp * @brief Container for camera control buttons (zoom, pan, orbit) * * $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$ */ @@ -49,7 +49,7 @@ static LLDefaultChildRegistry::Register<LLPanelCameraItem> r("panel_camera_item"); -const F32 NUDGE_TIME = 0.25f; // in seconds +const F32 NUDGE_TIME = 0.25f; // in seconds const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed // constants @@ -63,102 +63,102 @@ bool LLFloaterCamera::sAppearanceEditing = false; // Zoom the camera in and out class LLPanelCameraZoom -: public LLPanel +: public LLPanel { - LOG_CLASS(LLPanelCameraZoom); + LOG_CLASS(LLPanelCameraZoom); public: - struct Params : public LLInitParam::Block<Params, LLPanel::Params> {}; + struct Params : public LLInitParam::Block<Params, LLPanel::Params> {}; - LLPanelCameraZoom() { onCreate(); } + LLPanelCameraZoom() { onCreate(); } - /* virtual */ BOOL postBuild(); - /* virtual */ void draw(); + /* virtual */ BOOL postBuild(); + /* virtual */ void draw(); protected: - LLPanelCameraZoom(const Params& p) { onCreate(); } + LLPanelCameraZoom(const Params& p) { onCreate(); } - void onCreate(); - void onZoomPlusHeldDown(); - void onZoomMinusHeldDown(); - void onSliderValueChanged(); - void onCameraTrack(); - void onCameraRotate(); - F32 getOrbitRate(F32 time); + void onCreate(); + void onZoomPlusHeldDown(); + void onZoomMinusHeldDown(); + void onSliderValueChanged(); + void onCameraTrack(); + void onCameraRotate(); + F32 getOrbitRate(F32 time); private: - LLButton* mPlusBtn { nullptr }; - LLButton* mMinusBtn{ nullptr }; - LLSlider* mSlider{ nullptr }; + LLButton* mPlusBtn { nullptr }; + LLButton* mMinusBtn{ nullptr }; + LLSlider* mSlider{ nullptr }; - friend class LLUICtrlFactory; + friend class LLUICtrlFactory; }; LLPanelCameraItem::Params::Params() -: icon_over("icon_over"), - icon_selected("icon_selected"), - picture("picture"), - text("text"), - selected_picture("selected_picture"), - mousedown_callback("mousedown_callback") +: icon_over("icon_over"), + icon_selected("icon_selected"), + picture("picture"), + text("text"), + selected_picture("selected_picture"), + mousedown_callback("mousedown_callback") { } LLPanelCameraItem::LLPanelCameraItem(const LLPanelCameraItem::Params& p) -: LLPanel(p) +: LLPanel(p) { - LLIconCtrl::Params icon_params = p.picture; - mPicture = LLUICtrlFactory::create<LLIconCtrl>(icon_params); - addChild(mPicture); + LLIconCtrl::Params icon_params = p.picture; + mPicture = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mPicture); - icon_params = p.icon_over; - mIconOver = LLUICtrlFactory::create<LLIconCtrl>(icon_params); - addChild(mIconOver); + icon_params = p.icon_over; + mIconOver = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mIconOver); - icon_params = p.icon_selected; - mIconSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); - addChild(mIconSelected); + icon_params = p.icon_selected; + mIconSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mIconSelected); - icon_params = p.selected_picture; - mPictureSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); - addChild(mPictureSelected); + icon_params = p.selected_picture; + mPictureSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mPictureSelected); - LLTextBox::Params text_params = p.text; - mText = LLUICtrlFactory::create<LLTextBox>(text_params); - addChild(mText); + LLTextBox::Params text_params = p.text; + mText = LLUICtrlFactory::create<LLTextBox>(text_params); + addChild(mText); - if (p.mousedown_callback.isProvided()) - { - setCommitCallback(initCommitCallback(p.mousedown_callback)); - } + if (p.mousedown_callback.isProvided()) + { + setCommitCallback(initCommitCallback(p.mousedown_callback)); + } } void set_view_visible(LLView* parent, const std::string& name, bool visible) { - parent->getChildView(name)->setVisible(visible); + parent->getChildView(name)->setVisible(visible); } BOOL LLPanelCameraItem::postBuild() { - setMouseEnterCallback(boost::bind(set_view_visible, this, "hovered_icon", true)); - setMouseLeaveCallback(boost::bind(set_view_visible, this, "hovered_icon", false)); - setMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); - setRightMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); - return TRUE; + setMouseEnterCallback(boost::bind(set_view_visible, this, "hovered_icon", true)); + setMouseLeaveCallback(boost::bind(set_view_visible, this, "hovered_icon", false)); + setMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); + setRightMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); + return TRUE; } void LLPanelCameraItem::onAnyMouseClick() { - if (mCommitSignal) (*mCommitSignal)(this, LLSD()); + if (mCommitSignal) (*mCommitSignal)(this, LLSD()); } void LLPanelCameraItem::setValue(const LLSD& value) { - if (!value.isMap()) return;; - if (!value.has("selected")) return; - getChildView("selected_icon")->setVisible( value["selected"]); - getChildView("picture")->setVisible( !value["selected"]); - getChildView("selected_picture")->setVisible( value["selected"]); + if (!value.isMap()) return;; + if (!value.has("selected")) return; + getChildView("selected_icon")->setVisible( value["selected"]); + getChildView("picture")->setVisible( !value["selected"]); + getChildView("selected_picture")->setVisible( value["selected"]); } static LLPanelInjector<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel"); @@ -169,81 +169,81 @@ static LLPanelInjector<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel void LLPanelCameraZoom::onCreate() { - mCommitCallbackRegistrar.add("Zoom.minus", boost::bind(&LLPanelCameraZoom::onZoomMinusHeldDown, this)); - mCommitCallbackRegistrar.add("Zoom.plus", boost::bind(&LLPanelCameraZoom::onZoomPlusHeldDown, this)); - mCommitCallbackRegistrar.add("Slider.value_changed", boost::bind(&LLPanelCameraZoom::onSliderValueChanged, this)); - mCommitCallbackRegistrar.add("Camera.track", boost::bind(&LLPanelCameraZoom::onCameraTrack, this)); - mCommitCallbackRegistrar.add("Camera.rotate", boost::bind(&LLPanelCameraZoom::onCameraRotate, this)); + mCommitCallbackRegistrar.add("Zoom.minus", boost::bind(&LLPanelCameraZoom::onZoomMinusHeldDown, this)); + mCommitCallbackRegistrar.add("Zoom.plus", boost::bind(&LLPanelCameraZoom::onZoomPlusHeldDown, this)); + mCommitCallbackRegistrar.add("Slider.value_changed", boost::bind(&LLPanelCameraZoom::onSliderValueChanged, this)); + mCommitCallbackRegistrar.add("Camera.track", boost::bind(&LLPanelCameraZoom::onCameraTrack, this)); + mCommitCallbackRegistrar.add("Camera.rotate", boost::bind(&LLPanelCameraZoom::onCameraRotate, this)); } BOOL LLPanelCameraZoom::postBuild() { - mPlusBtn = getChild<LLButton>("zoom_plus_btn"); - mMinusBtn = getChild<LLButton>("zoom_minus_btn"); - mSlider = getChild<LLSlider>("zoom_slider"); - return LLPanel::postBuild(); + mPlusBtn = getChild<LLButton>("zoom_plus_btn"); + mMinusBtn = getChild<LLButton>("zoom_minus_btn"); + mSlider = getChild<LLSlider>("zoom_slider"); + return LLPanel::postBuild(); } void LLPanelCameraZoom::draw() { - mSlider->setValue(gAgentCamera.getCameraZoomFraction()); - LLPanel::draw(); + mSlider->setValue(gAgentCamera.getCameraZoomFraction()); + LLPanel::draw(); } void LLPanelCameraZoom::onZoomPlusHeldDown() { - F32 val = mSlider->getValueF32(); - F32 inc = mSlider->getIncrement(); - mSlider->setValue(val - inc); - F32 time = mPlusBtn->getHeldDownTime(); - gAgentCamera.unlockView(); - gAgentCamera.setOrbitInKey(getOrbitRate(time)); + F32 val = mSlider->getValueF32(); + F32 inc = mSlider->getIncrement(); + mSlider->setValue(val - inc); + F32 time = mPlusBtn->getHeldDownTime(); + gAgentCamera.unlockView(); + gAgentCamera.setOrbitInKey(getOrbitRate(time)); } void LLPanelCameraZoom::onZoomMinusHeldDown() { - F32 val = mSlider->getValueF32(); - F32 inc = mSlider->getIncrement(); - mSlider->setValue(val + inc); - F32 time = mMinusBtn->getHeldDownTime(); - gAgentCamera.unlockView(); - gAgentCamera.setOrbitOutKey(getOrbitRate(time)); + F32 val = mSlider->getValueF32(); + F32 inc = mSlider->getIncrement(); + mSlider->setValue(val + inc); + F32 time = mMinusBtn->getHeldDownTime(); + gAgentCamera.unlockView(); + gAgentCamera.setOrbitOutKey(getOrbitRate(time)); } void LLPanelCameraZoom::onCameraTrack() { - // EXP-202 when camera panning activated, remove the hint - LLFirstUse::viewPopup( false ); + // EXP-202 when camera panning activated, remove the hint + LLFirstUse::viewPopup( false ); } void LLPanelCameraZoom::onCameraRotate() { - // EXP-202 when camera rotation activated, remove the hint - LLFirstUse::viewPopup( false ); + // EXP-202 when camera rotation activated, remove the hint + LLFirstUse::viewPopup( false ); } F32 LLPanelCameraZoom::getOrbitRate(F32 time) { - if( time < NUDGE_TIME ) - { - F32 rate = ORBIT_NUDGE_RATE + time * (1 - ORBIT_NUDGE_RATE)/ NUDGE_TIME; - return rate; - } - else - { - return 1; - } + if( time < NUDGE_TIME ) + { + F32 rate = ORBIT_NUDGE_RATE + time * (1 - ORBIT_NUDGE_RATE)/ NUDGE_TIME; + return rate; + } + else + { + return 1; + } } void LLPanelCameraZoom::onSliderValueChanged() { - F32 zoom_level = mSlider->getValueF32(); - gAgentCamera.setCameraZoomFraction(zoom_level); + F32 zoom_level = mSlider->getValueF32(); + gAgentCamera.setCameraZoomFraction(zoom_level); } void activate_camera_tool() { - LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); + LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); }; class LLCameraInfoPanel : public LLPanel @@ -321,29 +321,29 @@ private: // static bool LLFloaterCamera::inFreeCameraMode() { - LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera && floater_camera->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK) - { - return true; - } - return false; + LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); + if (floater_camera && floater_camera->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK) + { + return true; + } + return false; } // static void LLFloaterCamera::resetCameraMode() { - LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (!floater_camera) return; - floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); + LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); + if (!floater_camera) return; + floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); } // static void LLFloaterCamera::onAvatarEditingAppearance(bool editing) { - sAppearanceEditing = editing; - LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (!floater_camera) return; - floater_camera->handleAvatarEditingAppearance(editing); + sAppearanceEditing = editing; + LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); + if (!floater_camera) return; + floater_camera->handleAvatarEditingAppearance(editing); } // static @@ -381,358 +381,358 @@ void LLFloaterCamera::handleAvatarEditingAppearance(bool editing) void LLFloaterCamera::update() { - ECameraControlMode mode = determineMode(); - if (mode != mCurrMode) - { - setMode(mode); - } + ECameraControlMode mode = determineMode(); + if (mode != mCurrMode) + { + setMode(mode); + } } void LLFloaterCamera::toPrevMode() { - switchMode(mPrevMode); + switchMode(mPrevMode); } // static void LLFloaterCamera::onLeavingMouseLook() { - LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera) - { - floater_camera->updateItemsSelection(); - if(floater_camera->inFreeCameraMode()) - { - activate_camera_tool(); - } - } + LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); + if (floater_camera) + { + floater_camera->updateItemsSelection(); + if(floater_camera->inFreeCameraMode()) + { + activate_camera_tool(); + } + } } LLFloaterCamera* LLFloaterCamera::findInstance() { - return LLFloaterReg::findTypedInstance<LLFloaterCamera>("camera"); + return LLFloaterReg::findTypedInstance<LLFloaterCamera>("camera"); } void LLFloaterCamera::onOpen(const LLSD& key) { - LLFirstUse::viewPopup(); + LLFirstUse::viewPopup(); - mZoom->onOpen(key); + mZoom->onOpen(key); - // Returns to previous mode, see EXT-2727(View tool should remember state). - // In case floater was just hidden and it isn't reset the mode - // just update state to current one. Else go to previous. - if ( !mClosed ) - updateState(); - else - toPrevMode(); - mClosed = FALSE; + // Returns to previous mode, see EXT-2727(View tool should remember state). + // In case floater was just hidden and it isn't reset the mode + // just update state to current one. Else go to previous. + if ( !mClosed ) + updateState(); + else + toPrevMode(); + mClosed = FALSE; - populatePresetCombo(); + populatePresetCombo(); - showDebugInfo(LLView::sDebugCamera); + showDebugInfo(LLView::sDebugCamera); } void LLFloaterCamera::onClose(bool app_quitting) { - //We don't care of camera mode if app is quitting - if (app_quitting) - return; - // It is necessary to reset mCurrMode to CAMERA_CTRL_MODE_PAN so - // to avoid seeing an empty floater when reopening the control. - if (mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA) - mCurrMode = CAMERA_CTRL_MODE_PAN; - // When mCurrMode is in CAMERA_CTRL_MODE_PAN - // switchMode won't modify mPrevMode, so force it here. - // It is needed to correctly return to previous mode on open, see EXT-2727. - if (mCurrMode == CAMERA_CTRL_MODE_PAN) - mPrevMode = CAMERA_CTRL_MODE_PAN; + //We don't care of camera mode if app is quitting + if (app_quitting) + return; + // It is necessary to reset mCurrMode to CAMERA_CTRL_MODE_PAN so + // to avoid seeing an empty floater when reopening the control. + if (mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA) + mCurrMode = CAMERA_CTRL_MODE_PAN; + // When mCurrMode is in CAMERA_CTRL_MODE_PAN + // switchMode won't modify mPrevMode, so force it here. + // It is needed to correctly return to previous mode on open, see EXT-2727. + if (mCurrMode == CAMERA_CTRL_MODE_PAN) + mPrevMode = CAMERA_CTRL_MODE_PAN; - switchMode(CAMERA_CTRL_MODE_PAN); - mClosed = TRUE; + switchMode(CAMERA_CTRL_MODE_PAN); + mClosed = TRUE; - gAgent.setMovementLocked(FALSE); + gAgent.setMovementLocked(FALSE); } LLFloaterCamera::LLFloaterCamera(const LLSD& val) -: LLFloater(val), - mClosed(FALSE), - mCurrMode(CAMERA_CTRL_MODE_PAN), - mPrevMode(CAMERA_CTRL_MODE_PAN) +: LLFloater(val), + mClosed(FALSE), + mCurrMode(CAMERA_CTRL_MODE_PAN), + mPrevMode(CAMERA_CTRL_MODE_PAN) { - LLHints::getInstance()->registerHintTarget("view_popup", getHandle()); - mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2)); - mCommitCallbackRegistrar.add("CameraPresets.Save", boost::bind(&LLFloaterCamera::onSavePreset, this)); - mCommitCallbackRegistrar.add("CameraPresets.ShowPresetsList", boost::bind(&LLFloaterReg::showInstance, "camera_presets", LLSD(), FALSE)); + LLHints::getInstance()->registerHintTarget("view_popup", getHandle()); + mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2)); + mCommitCallbackRegistrar.add("CameraPresets.Save", boost::bind(&LLFloaterCamera::onSavePreset, this)); + mCommitCallbackRegistrar.add("CameraPresets.ShowPresetsList", boost::bind(&LLFloaterReg::showInstance, "camera_presets", LLSD(), FALSE)); } // virtual BOOL LLFloaterCamera::postBuild() { - updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) + updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730) - mControls = getChild<LLPanel>("controls"); - mAgentCameraInfo = getChild<LLPanel>("agent_camera_info"); - mViewerCameraInfo = getChild<LLPanel>("viewer_camera_info"); - mRotate = getChild<LLJoystickCameraRotate>(ORBIT); - mZoom = getChild<LLPanelCameraZoom>(ZOOM); - mTrack = getChild<LLJoystickCameraTrack>(PAN); - mPresetCombo = getChild<LLComboBox>("preset_combo"); - mPreciseCtrls = getChild<LLTextBox>("precise_ctrs_label"); + mControls = getChild<LLPanel>("controls"); + mAgentCameraInfo = getChild<LLPanel>("agent_camera_info"); + mViewerCameraInfo = getChild<LLPanel>("viewer_camera_info"); + mRotate = getChild<LLJoystickCameraRotate>(ORBIT); + mZoom = getChild<LLPanelCameraZoom>(ZOOM); + mTrack = getChild<LLJoystickCameraTrack>(PAN); + mPresetCombo = getChild<LLComboBox>("preset_combo"); + mPreciseCtrls = getChild<LLTextBox>("precise_ctrs_label"); - mPreciseCtrls->setShowCursorHand(false); - mPreciseCtrls->setSoundFlags(LLView::MOUSE_UP); - mPreciseCtrls->setClickedCallback(boost::bind(&LLFloaterReg::showInstance, "prefs_view_advanced", LLSD(), FALSE)); + mPreciseCtrls->setShowCursorHand(false); + mPreciseCtrls->setSoundFlags(LLView::MOUSE_UP); + mPreciseCtrls->setClickedCallback(boost::bind(&LLFloaterReg::showInstance, "prefs_view_advanced", LLSD(), FALSE)); - mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this)); - LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this)); + mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this)); + LLPresetsManager::getInstance()->setPresetListChangeCameraCallback(boost::bind(&LLFloaterCamera::populatePresetCombo, this)); - update(); + update(); - // ensure that appearance mode is handled while building. See EXT-7796. - handleAvatarEditingAppearance(sAppearanceEditing); + // ensure that appearance mode is handled while building. See EXT-7796. + handleAvatarEditingAppearance(sAppearanceEditing); - return LLFloater::postBuild(); + return LLFloater::postBuild(); } -F32 LLFloaterCamera::getCurrentTransparency() +F32 LLFloaterCamera::getCurrentTransparency() { - static LLCachedControl<F32> camera_opacity(gSavedSettings, "CameraOpacity"); - static LLCachedControl<F32> active_floater_transparency(gSavedSettings, "ActiveFloaterTransparency"); - return llmin(camera_opacity(), active_floater_transparency()); + static LLCachedControl<F32> camera_opacity(gSavedSettings, "CameraOpacity"); + static LLCachedControl<F32> active_floater_transparency(gSavedSettings, "ActiveFloaterTransparency"); + return llmin(camera_opacity(), active_floater_transparency()); } void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel) { - // copying child list and then iterating over a copy, because list itself - // is changed in process - const child_list_t child_list = *panel->getChildList(); - child_list_t::const_reverse_iterator iter = child_list.rbegin(); - child_list_t::const_reverse_iterator end = child_list.rend(); - for ( ; iter != end; ++iter) - { - LLView* view = *iter; - LLPanel* item = dynamic_cast<LLPanel*>(view); - if (panel) - list->addItem(item); - } + // copying child list and then iterating over a copy, because list itself + // is changed in process + const child_list_t child_list = *panel->getChildList(); + child_list_t::const_reverse_iterator iter = child_list.rbegin(); + child_list_t::const_reverse_iterator end = child_list.rend(); + for ( ; iter != end; ++iter) + { + LLView* view = *iter; + LLPanel* item = dynamic_cast<LLPanel*>(view); + if (panel) + list->addItem(item); + } } ECameraControlMode LLFloaterCamera::determineMode() { - if (sAppearanceEditing) - { - // this is the only enabled camera mode while editing agent appearance. - return CAMERA_CTRL_MODE_PAN; - } + if (sAppearanceEditing) + { + // this is the only enabled camera mode while editing agent appearance. + return CAMERA_CTRL_MODE_PAN; + } - LLTool* curr_tool = LLToolMgr::getInstance()->getCurrentTool(); - if (curr_tool == LLToolCamera::getInstance()) - { - return CAMERA_CTRL_MODE_FREE_CAMERA; - } + LLTool* curr_tool = LLToolMgr::getInstance()->getCurrentTool(); + if (curr_tool == LLToolCamera::getInstance()) + { + return CAMERA_CTRL_MODE_FREE_CAMERA; + } - if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) - { - return CAMERA_CTRL_MODE_PRESETS; - } + if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) + { + return CAMERA_CTRL_MODE_PRESETS; + } - return CAMERA_CTRL_MODE_PAN; + return CAMERA_CTRL_MODE_PAN; } void clear_camera_tool() { - LLToolMgr* tool_mgr = LLToolMgr::getInstance(); - if (tool_mgr->usingTransientTool() && - tool_mgr->getCurrentTool() == LLToolCamera::getInstance()) - { - tool_mgr->clearTransientTool(); - } + LLToolMgr* tool_mgr = LLToolMgr::getInstance(); + if (tool_mgr->usingTransientTool() && + tool_mgr->getCurrentTool() == LLToolCamera::getInstance()) + { + tool_mgr->clearTransientTool(); + } } void LLFloaterCamera::setMode(ECameraControlMode mode) { - if (mode != mCurrMode) - { - mPrevMode = mCurrMode; - mCurrMode = mode; - } - - updateState(); + if (mode != mCurrMode) + { + mPrevMode = mCurrMode; + mCurrMode = mode; + } + + updateState(); } void LLFloaterCamera::switchMode(ECameraControlMode mode) { - switch (mode) - { - case CAMERA_CTRL_MODE_PRESETS: - case CAMERA_CTRL_MODE_PAN: - sFreeCamera = false; - setMode(mode); // depends onto sFreeCamera - clear_camera_tool(); - break; - - case CAMERA_CTRL_MODE_FREE_CAMERA: - sFreeCamera = true; - setMode(mode); - activate_camera_tool(); - break; - - default: - //normally we won't occur here - llassert_always(FALSE); - } + switch (mode) + { + case CAMERA_CTRL_MODE_PRESETS: + case CAMERA_CTRL_MODE_PAN: + sFreeCamera = false; + setMode(mode); // depends onto sFreeCamera + clear_camera_tool(); + break; + + case CAMERA_CTRL_MODE_FREE_CAMERA: + sFreeCamera = true; + setMode(mode); + activate_camera_tool(); + break; + + default: + //normally we won't occur here + llassert_always(FALSE); + } } void LLFloaterCamera::updateState() { - updateItemsSelection(); + updateItemsSelection(); - if (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode) - { - return; - } + if (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode) + { + return; + } - //updating buttons - std::map<ECameraControlMode, LLButton*>::const_iterator iter = mMode2Button.begin(); - for (; iter != mMode2Button.end(); ++iter) - { - iter->second->setToggleState(iter->first == mCurrMode); - } + //updating buttons + std::map<ECameraControlMode, LLButton*>::const_iterator iter = mMode2Button.begin(); + for (; iter != mMode2Button.end(); ++iter) + { + iter->second->setToggleState(iter->first == mCurrMode); + } } void LLFloaterCamera::updateItemsSelection() { - ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPresetType"); - LLSD argument; - argument["selected"] = (preset == CAMERA_PRESET_REAR_VIEW) && !sFreeCamera; - getChild<LLPanelCameraItem>("rear_view")->setValue(argument); - argument["selected"] = (preset == CAMERA_PRESET_GROUP_VIEW) && !sFreeCamera; - getChild<LLPanelCameraItem>("group_view")->setValue(argument); - argument["selected"] = (preset == CAMERA_PRESET_FRONT_VIEW) && !sFreeCamera; - getChild<LLPanelCameraItem>("front_view")->setValue(argument); - argument["selected"] = gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK; - getChild<LLPanelCameraItem>("mouselook_view")->setValue(argument); - argument["selected"] = mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA; - getChild<LLPanelCameraItem>("object_view")->setValue(argument); + ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPresetType"); + LLSD argument; + argument["selected"] = (preset == CAMERA_PRESET_REAR_VIEW) && !sFreeCamera; + getChild<LLPanelCameraItem>("rear_view")->setValue(argument); + argument["selected"] = (preset == CAMERA_PRESET_GROUP_VIEW) && !sFreeCamera; + getChild<LLPanelCameraItem>("group_view")->setValue(argument); + argument["selected"] = (preset == CAMERA_PRESET_FRONT_VIEW) && !sFreeCamera; + getChild<LLPanelCameraItem>("front_view")->setValue(argument); + argument["selected"] = gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK; + getChild<LLPanelCameraItem>("mouselook_view")->setValue(argument); + argument["selected"] = mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA; + getChild<LLPanelCameraItem>("object_view")->setValue(argument); } // static void LLFloaterCamera::onClickCameraItem(const LLSD& param) { - std::string name = param.asString(); - - if ("mouselook_view" == name) - { - gAgentCamera.changeCameraToMouselook(); - } - else if ("object_view" == name) - { - LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); - if (camera_floater) - { - camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); - camera_floater->updateItemsSelection(); - } - } - else - { - LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); - if (camera_floater) - camera_floater->switchMode(CAMERA_CTRL_MODE_PAN); - switchToPreset(name); - } + std::string name = param.asString(); + + if ("mouselook_view" == name) + { + gAgentCamera.changeCameraToMouselook(); + } + else if ("object_view" == name) + { + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + { + camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + camera_floater->updateItemsSelection(); + } + } + else + { + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + camera_floater->switchMode(CAMERA_CTRL_MODE_PAN); + switchToPreset(name); + } } // static void LLFloaterCamera::switchToPreset(const std::string& name) { - sFreeCamera = false; - clear_camera_tool(); - if (PRESETS_REAR_VIEW == name) - { - gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); - } - else if (PRESETS_SIDE_VIEW == name) - { - gAgentCamera.switchCameraPreset(CAMERA_PRESET_GROUP_VIEW); - } - else if (PRESETS_FRONT_VIEW == name) - { - gAgentCamera.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW); - } - else - { - gAgentCamera.switchCameraPreset(CAMERA_PRESET_CUSTOM); - } - - if (gSavedSettings.getString("PresetCameraActive") != name) - { - LLPresetsManager::getInstance()->loadPreset(PRESETS_CAMERA, name); - } - - if (isAgentAvatarValid() && gAgentAvatarp->getParent()) - { - LLQuaternion sit_rot(gSavedSettings.getLLSD("AvatarSitRotation")); - if (sit_rot != LLQuaternion()) - { - gAgent.rotate(~gAgent.getFrameAgent().getQuaternion()); - gAgent.rotate(sit_rot); - } - else - { - gAgentCamera.rotateToInitSitRot(); - } - } - gAgentCamera.resetCameraZoomFraction(); - - LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); - if (camera_floater) - { - camera_floater->updateItemsSelection(); - camera_floater->switchMode(CAMERA_CTRL_MODE_PRESETS); - } + sFreeCamera = false; + clear_camera_tool(); + if (PRESETS_REAR_VIEW == name) + { + gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); + } + else if (PRESETS_SIDE_VIEW == name) + { + gAgentCamera.switchCameraPreset(CAMERA_PRESET_GROUP_VIEW); + } + else if (PRESETS_FRONT_VIEW == name) + { + gAgentCamera.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW); + } + else + { + gAgentCamera.switchCameraPreset(CAMERA_PRESET_CUSTOM); + } + + if (gSavedSettings.getString("PresetCameraActive") != name) + { + LLPresetsManager::getInstance()->loadPreset(PRESETS_CAMERA, name); + } + + if (isAgentAvatarValid() && gAgentAvatarp->getParent()) + { + LLQuaternion sit_rot(gSavedSettings.getLLSD("AvatarSitRotation")); + if (sit_rot != LLQuaternion()) + { + gAgent.rotate(~gAgent.getFrameAgent().getQuaternion()); + gAgent.rotate(sit_rot); + } + else + { + gAgentCamera.rotateToInitSitRot(); + } + } + gAgentCamera.resetCameraZoomFraction(); + + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + { + camera_floater->updateItemsSelection(); + camera_floater->switchMode(CAMERA_CTRL_MODE_PRESETS); + } } void LLFloaterCamera::populatePresetCombo() { - LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_CAMERA, mPresetCombo, EDefaultOptions::DEFAULT_HIDE); - std::string active_preset_name = gSavedSettings.getString("PresetCameraActive"); - if (active_preset_name.empty()) - { - gSavedSettings.setU32("CameraPresetType", CAMERA_PRESET_CUSTOM); - updateItemsSelection(); - mPresetCombo->setLabel(getString("inactive_combo_text")); - } - else if ((ECameraPreset)gSavedSettings.getU32("CameraPresetType") == CAMERA_PRESET_CUSTOM) - { - mPresetCombo->selectByValue(active_preset_name); - } - else - { - mPresetCombo->setLabel(getString("inactive_combo_text")); - } - updateItemsSelection(); + LLPresetsManager::getInstance()->setPresetNamesInComboBox(PRESETS_CAMERA, mPresetCombo, EDefaultOptions::DEFAULT_HIDE); + std::string active_preset_name = gSavedSettings.getString("PresetCameraActive"); + if (active_preset_name.empty()) + { + gSavedSettings.setU32("CameraPresetType", CAMERA_PRESET_CUSTOM); + updateItemsSelection(); + mPresetCombo->setLabel(getString("inactive_combo_text")); + } + else if ((ECameraPreset)gSavedSettings.getU32("CameraPresetType") == CAMERA_PRESET_CUSTOM) + { + mPresetCombo->selectByValue(active_preset_name); + } + else + { + mPresetCombo->setLabel(getString("inactive_combo_text")); + } + updateItemsSelection(); } void LLFloaterCamera::onSavePreset() { - LLFloaterReg::hideInstance("delete_pref_preset", PRESETS_CAMERA); - LLFloaterReg::hideInstance("load_pref_preset", PRESETS_CAMERA); - - LLFloaterReg::showInstance("save_camera_preset"); + LLFloaterReg::hideInstance("delete_pref_preset", PRESETS_CAMERA); + LLFloaterReg::hideInstance("load_pref_preset", PRESETS_CAMERA); + + LLFloaterReg::showInstance("save_camera_preset"); } void LLFloaterCamera::onCustomPresetSelected() { - std::string selected_preset = mPresetCombo->getSelectedItemLabel(); - if (getString("inactive_combo_text") != selected_preset) - { - switchToPreset(selected_preset); - } + std::string selected_preset = mPresetCombo->getSelectedItemLabel(); + if (getString("inactive_combo_text") != selected_preset) + { + switchToPreset(selected_preset); + } } |