aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llagent.cpp
diff options
context:
space:
mode:
authorJacek Antonelli2009-05-30 17:16:26 -0500
committerJacek Antonelli2009-05-30 19:12:37 -0500
commit499afbab7be4c4136eea0e1897319c3ac4e9799d (patch)
tree95e9de524994eae69b0dd88b8c6608d5f45d030c /linden/indra/newview/llagent.cpp
parentFixed end-of-line style for Info-Imprudence.plist. (diff)
parentSecond Life viewer sources 1.22.11 (diff)
downloadmeta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.zip
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.gz
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.bz2
meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.xz
Merged SL 1.22.11 into Imprudence 1.1 RC2.
Conflicts: linden/doc/contributions.txt linden/indra/cmake/APR.cmake linden/indra/cmake/CopyWinLibs.cmake linden/indra/cmake/LLKDU.cmake (removed) linden/indra/cmake/LLMedia.cmake linden/indra/cmake/OPENAL.cmake linden/indra/cmake/QuickTime.cmake (removed) linden/indra/develop.py linden/indra/lib/python/indra/base/llsd.py linden/indra/lib/python/indra/util/fastest_elementtree.py linden/indra/lib/python/indra/util/llmanifest.py linden/indra/lib/python/indra/util/named_query.py linden/indra/llaudio/CMakeLists.txt linden/indra/llaudio/audioengine.cpp linden/indra/llaudio/audioengine.h linden/indra/llaudio/audioengine_fmod.cpp linden/indra/llaudio/audioengine_fmod.h linden/indra/llaudio/audioengine_openal.cpp linden/indra/llaudio/audioengine_openal.h linden/indra/llaudio/listener_openal.cpp linden/indra/llaudio/listener_openal.h linden/indra/llaudio/windgen.h linden/indra/llcrashlogger/llcrashlogger.cpp linden/indra/llmedia/llmediaimplgstreamer.cpp linden/indra/llmedia/llmediaimplgstreamer_syms.cpp (removed) linden/indra/llmedia/llmediaimplgstreamer_syms.h (removed) linden/indra/llmessage/llcircuit.h linden/indra/llrender/llgl.cpp linden/indra/llrender/llrender.h linden/indra/llui/llfloater.cpp linden/indra/llui/lltexteditor.cpp linden/indra/llwindow/llwindowsdl.cpp linden/indra/mac_crash_logger/CMakeLists.txt linden/indra/mac_updater/CMakeLists.txt linden/indra/newview/CMakeLists.txt linden/indra/newview/English.lproj/InfoPlist.strings linden/indra/newview/Info-Imprudence.plist linden/indra/newview/installers/windows/installer_template.nsi linden/indra/newview/installers/windows/lang_de.nsi linden/indra/newview/installers/windows/lang_en-us.nsi linden/indra/newview/installers/windows/lang_ja.nsi linden/indra/newview/installers/windows/lang_ko.nsi linden/indra/newview/llappviewer.cpp linden/indra/newview/llaudiosourcevo.cpp linden/indra/newview/llfloaterabout.cpp linden/indra/newview/llfloaterhtml.cpp linden/indra/newview/llfloaterhtml.h linden/indra/newview/llfloaterinspect.cpp linden/indra/newview/llfloatersnapshot.cpp linden/indra/newview/llpanelgeneral.cpp linden/indra/newview/llpanelgeneral.h linden/indra/newview/llpanellogin.cpp linden/indra/newview/llpanelobject.cpp linden/indra/newview/llurlhistory.cpp linden/indra/newview/llviewermenu.cpp linden/indra/newview/llviewernetwork.cpp linden/indra/newview/llviewernetwork.h linden/indra/newview/llviewerobject.cpp linden/indra/newview/llviewerwindow.cpp linden/indra/newview/llvoavatar.cpp linden/indra/newview/res/viewerRes.rc linden/indra/newview/skins/default/xui/de/floater_env_settings.xml linden/indra/newview/skins/default/xui/de/floater_html.xml linden/indra/newview/skins/default/xui/de/floater_inspect.xml linden/indra/newview/skins/default/xui/de/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml linden/indra/newview/skins/default/xui/de/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/de/floater_url_entry.xml linden/indra/newview/skins/default/xui/de/floater_water.xml linden/indra/newview/skins/default/xui/de/mime_types.xml linden/indra/newview/skins/default/xui/de/need_to_long.xml linden/indra/newview/skins/default/xui/de/need_to_translate.xml linden/indra/newview/skins/default/xui/de/need_to_update.xml linden/indra/newview/skins/default/xui/de/panel_friends.xml linden/indra/newview/skins/default/xui/de/panel_media_remote_expanded.xml linden/indra/newview/skins/default/xui/de/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/de/panel_voice_controls.xml linden/indra/newview/skins/default/xui/de/panel_voice_enable.xml linden/indra/newview/skins/default/xui/de/panel_voice_options.xml linden/indra/newview/skins/default/xui/de/strings.xml linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml linden/indra/newview/skins/default/xui/en-us/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/en-us/floater_lagmeter.xml linden/indra/newview/skins/default/xui/en-us/menu_pie_object.xml linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml linden/indra/newview/skins/default/xui/en-us/panel_audio_device.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/en-us/panel_voice_remote.xml linden/indra/newview/skins/default/xui/en-us/panel_voice_remote_expanded.xml linden/indra/newview/skins/default/xui/es/alerts.xml linden/indra/newview/skins/default/xui/es/floater_about_land.xml linden/indra/newview/skins/default/xui/es/floater_mute.xml linden/indra/newview/skins/default/xui/es/menu_viewer.xml linden/indra/newview/skins/default/xui/es/panel_group_land_money.xml linden/indra/newview/skins/default/xui/es/panel_preferences_general.xml linden/indra/newview/skins/default/xui/fr/alerts.xml linden/indra/newview/skins/default/xui/fr/floater_about.xml linden/indra/newview/skins/default/xui/fr/floater_about_land.xml linden/indra/newview/skins/default/xui/fr/floater_active_speakers.xml linden/indra/newview/skins/default/xui/fr/floater_animation_preview.xml linden/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml linden/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml linden/indra/newview/skins/default/xui/fr/floater_buy_contents.xml linden/indra/newview/skins/default/xui/fr/floater_buy_currency.xml linden/indra/newview/skins/default/xui/fr/floater_buy_land.xml linden/indra/newview/skins/default/xui/fr/floater_buy_object.xml linden/indra/newview/skins/default/xui/fr/floater_chat_history.xml linden/indra/newview/skins/default/xui/fr/floater_color_picker.xml linden/indra/newview/skins/default/xui/fr/floater_customize.xml linden/indra/newview/skins/default/xui/fr/floater_directory.xml linden/indra/newview/skins/default/xui/fr/floater_env_settings.xml linden/indra/newview/skins/default/xui/fr/floater_god_tools.xml linden/indra/newview/skins/default/xui/fr/floater_group_info.xml linden/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml linden/indra/newview/skins/default/xui/fr/floater_html.xml linden/indra/newview/skins/default/xui/fr/floater_image_preview.xml linden/indra/newview/skins/default/xui/fr/floater_import.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/fr/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/fr/floater_inventory.xml linden/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml linden/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml linden/indra/newview/skins/default/xui/fr/floater_joystick.xml linden/indra/newview/skins/default/xui/fr/floater_lagmeter.xml linden/indra/newview/skins/default/xui/fr/floater_land_holdings.xml linden/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/fr/floater_media_browser.xml linden/indra/newview/skins/default/xui/fr/floater_moveview.xml linden/indra/newview/skins/default/xui/fr/floater_mute.xml linden/indra/newview/skins/default/xui/fr/floater_mute_object.xml linden/indra/newview/skins/default/xui/fr/floater_name_description.xml linden/indra/newview/skins/default/xui/fr/floater_new_outfit_dialog.xml linden/indra/newview/skins/default/xui/fr/floater_openobject.xml linden/indra/newview/skins/default/xui/fr/floater_pay.xml linden/indra/newview/skins/default/xui/fr/floater_pay_object.xml linden/indra/newview/skins/default/xui/fr/floater_preferences.xml linden/indra/newview/skins/default/xui/fr/floater_preview_animation.xml linden/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml linden/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml linden/indra/newview/skins/default/xui/fr/floater_preview_notecard_keep_discard.xml linden/indra/newview/skins/default/xui/fr/floater_preview_sound.xml linden/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml linden/indra/newview/skins/default/xui/fr/floater_region_info.xml linden/indra/newview/skins/default/xui/fr/floater_report_abuse.xml linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml linden/indra/newview/skins/default/xui/fr/floater_script_ed_panel.xml linden/indra/newview/skins/default/xui/fr/floater_sell_land.xml linden/indra/newview/skins/default/xui/fr/floater_settings_debug.xml linden/indra/newview/skins/default/xui/fr/floater_skin_preview_template.xml linden/indra/newview/skins/default/xui/fr/floater_snapshot.xml linden/indra/newview/skins/default/xui/fr/floater_sound_preview.xml linden/indra/newview/skins/default/xui/fr/floater_telehub.xml linden/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml linden/indra/newview/skins/default/xui/fr/floater_tools.xml linden/indra/newview/skins/default/xui/fr/floater_top_objects.xml linden/indra/newview/skins/default/xui/fr/floater_url_entry.xml linden/indra/newview/skins/default/xui/fr/floater_windlight_options.xml linden/indra/newview/skins/default/xui/fr/floater_world_map.xml linden/indra/newview/skins/default/xui/fr/menu_inventory.xml linden/indra/newview/skins/default/xui/fr/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/fr/menu_pie_land.xml linden/indra/newview/skins/default/xui/fr/menu_pie_self.xml linden/indra/newview/skins/default/xui/fr/menu_viewer.xml linden/indra/newview/skins/default/xui/fr/mime_types.xml linden/indra/newview/skins/default/xui/fr/notify.xml linden/indra/newview/skins/default/xui/fr/panel_audio.xml linden/indra/newview/skins/default/xui/fr/panel_audio_device.xml linden/indra/newview/skins/default/xui/fr/panel_avatar.xml linden/indra/newview/skins/default/xui/fr/panel_avatar_classified.xml linden/indra/newview/skins/default/xui/fr/panel_chat_bar.xml linden/indra/newview/skins/default/xui/fr/panel_classified.xml linden/indra/newview/skins/default/xui/fr/panel_event.xml linden/indra/newview/skins/default/xui/fr/panel_friends.xml linden/indra/newview/skins/default/xui/fr/panel_group.xml linden/indra/newview/skins/default/xui/fr/panel_group_finder.xml linden/indra/newview/skins/default/xui/fr/panel_group_general.xml linden/indra/newview/skins/default/xui/fr/panel_group_invite.xml linden/indra/newview/skins/default/xui/fr/panel_group_land_money.xml linden/indra/newview/skins/default/xui/fr/panel_group_notices.xml linden/indra/newview/skins/default/xui/fr/panel_group_roles.xml linden/indra/newview/skins/default/xui/fr/panel_group_voting.xml linden/indra/newview/skins/default/xui/fr/panel_groups.xml linden/indra/newview/skins/default/xui/fr/panel_login.xml linden/indra/newview/skins/default/xui/fr/panel_master_volume.xml linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml linden/indra/newview/skins/default/xui/fr/panel_media_remote.xml linden/indra/newview/skins/default/xui/fr/panel_media_remote_expanded.xml linden/indra/newview/skins/default/xui/fr/panel_overlaybar.xml linden/indra/newview/skins/default/xui/fr/panel_place.xml linden/indra/newview/skins/default/xui/fr/panel_place_small.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_general.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_input.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_network.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/fr/panel_preferences_web.xml linden/indra/newview/skins/default/xui/fr/panel_region_covenant.xml linden/indra/newview/skins/default/xui/fr/panel_region_debug.xml linden/indra/newview/skins/default/xui/fr/panel_region_estate.xml linden/indra/newview/skins/default/xui/fr/panel_region_general.xml linden/indra/newview/skins/default/xui/fr/panel_region_terrain.xml linden/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml linden/indra/newview/skins/default/xui/fr/panel_speaker_controls.xml linden/indra/newview/skins/default/xui/fr/panel_status_bar.xml linden/indra/newview/skins/default/xui/fr/panel_toolbar.xml linden/indra/newview/skins/default/xui/fr/panel_voice_controls.xml linden/indra/newview/skins/default/xui/fr/panel_voice_enable.xml linden/indra/newview/skins/default/xui/fr/panel_voice_options.xml linden/indra/newview/skins/default/xui/fr/panel_voice_remote_expanded.xml linden/indra/newview/skins/default/xui/fr/role_actions.xml linden/indra/newview/skins/default/xui/fr/strings.xml linden/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml linden/indra/newview/skins/default/xui/ja/floater_inspect.xml linden/indra/newview/skins/default/xui/ja/floater_instant_message_group.xml linden/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml linden/indra/newview/skins/default/xui/ja/floater_mute_object.xml linden/indra/newview/skins/default/xui/ja/floater_url_entry.xml linden/indra/newview/skins/default/xui/ja/need_to_long.xml linden/indra/newview/skins/default/xui/ja/need_to_translate.xml linden/indra/newview/skins/default/xui/ja/need_to_update.xml linden/indra/newview/skins/default/xui/ja/panel_audio.xml linden/indra/newview/skins/default/xui/ja/panel_groups.xml linden/indra/newview/skins/default/xui/ja/panel_preferences_voice.xml linden/indra/newview/skins/default/xui/ja/panel_preferences_web.xml linden/indra/newview/skins/default/xui/ja/strings.xml linden/indra/newview/skins/default/xui/ko/need_to_long.xml linden/indra/newview/skins/default/xui/ko/need_to_translate.xml linden/indra/newview/skins/default/xui/ko/need_to_update.xml linden/indra/newview/skins/default/xui/pt/alerts.xml linden/indra/newview/skins/default/xui/pt/floater_about.xml linden/indra/newview/skins/default/xui/pt/floater_about_land.xml linden/indra/newview/skins/default/xui/pt/floater_animation_preview.xml linden/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml linden/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml linden/indra/newview/skins/default/xui/pt/floater_build_options.xml linden/indra/newview/skins/default/xui/pt/floater_buy_contents.xml linden/indra/newview/skins/default/xui/pt/floater_buy_currency.xml linden/indra/newview/skins/default/xui/pt/floater_buy_land.xml linden/indra/newview/skins/default/xui/pt/floater_buy_object.xml linden/indra/newview/skins/default/xui/pt/floater_chat_history.xml linden/indra/newview/skins/default/xui/pt/floater_color_picker.xml linden/indra/newview/skins/default/xui/pt/floater_customize.xml linden/indra/newview/skins/default/xui/pt/floater_directory.xml linden/indra/newview/skins/default/xui/pt/floater_gesture.xml linden/indra/newview/skins/default/xui/pt/floater_html.xml linden/indra/newview/skins/default/xui/pt/floater_im.xml linden/indra/newview/skins/default/xui/pt/floater_image_preview.xml linden/indra/newview/skins/default/xui/pt/floater_instant_message.xml linden/indra/newview/skins/default/xui/pt/floater_instant_message_ad_hoc.xml linden/indra/newview/skins/default/xui/pt/floater_inventory.xml linden/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml linden/indra/newview/skins/default/xui/pt/floater_joystick.xml linden/indra/newview/skins/default/xui/pt/floater_land_holdings.xml linden/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml linden/indra/newview/skins/default/xui/pt/floater_mute.xml linden/indra/newview/skins/default/xui/pt/floater_new_outfit_dialog.xml linden/indra/newview/skins/default/xui/pt/floater_openobject.xml linden/indra/newview/skins/default/xui/pt/floater_pay.xml linden/indra/newview/skins/default/xui/pt/floater_pay_object.xml linden/indra/newview/skins/default/xui/pt/floater_postcard.xml linden/indra/newview/skins/default/xui/pt/floater_preview_animation.xml linden/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml linden/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml linden/indra/newview/skins/default/xui/pt/floater_preview_notecard_keep_discard.xml linden/indra/newview/skins/default/xui/pt/floater_report_abuse.xml linden/indra/newview/skins/default/xui/pt/floater_report_bug.xml linden/indra/newview/skins/default/xui/pt/floater_script_debug.xml linden/indra/newview/skins/default/xui/pt/floater_script_ed_panel.xml linden/indra/newview/skins/default/xui/pt/floater_snapshot.xml linden/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml linden/indra/newview/skins/default/xui/pt/floater_tools.xml linden/indra/newview/skins/default/xui/pt/floater_top_objects.xml linden/indra/newview/skins/default/xui/pt/floater_tos.xml linden/indra/newview/skins/default/xui/pt/floater_world_map.xml linden/indra/newview/skins/default/xui/pt/menu_inventory.xml linden/indra/newview/skins/default/xui/pt/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/pt/menu_viewer.xml linden/indra/newview/skins/default/xui/pt/notify.xml linden/indra/newview/skins/default/xui/pt/panel_avatar.xml linden/indra/newview/skins/default/xui/pt/panel_avatar_classified.xml linden/indra/newview/skins/default/xui/pt/panel_chat_bar.xml linden/indra/newview/skins/default/xui/pt/panel_classified.xml linden/indra/newview/skins/default/xui/pt/panel_event.xml linden/indra/newview/skins/default/xui/pt/panel_group_general.xml linden/indra/newview/skins/default/xui/pt/panel_group_invite.xml linden/indra/newview/skins/default/xui/pt/panel_group_land_money.xml linden/indra/newview/skins/default/xui/pt/panel_group_notices.xml linden/indra/newview/skins/default/xui/pt/panel_group_roles.xml linden/indra/newview/skins/default/xui/pt/panel_group_voting.xml linden/indra/newview/skins/default/xui/pt/panel_login.xml linden/indra/newview/skins/default/xui/pt/panel_overlaybar.xml linden/indra/newview/skins/default/xui/pt/panel_place.xml linden/indra/newview/skins/default/xui/pt/panel_place_small.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_general.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_im.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_input.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_network.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/pt/panel_preferences_web.xml linden/indra/newview/skins/default/xui/pt/panel_region_covenant.xml linden/indra/newview/skins/default/xui/pt/panel_region_debug.xml linden/indra/newview/skins/default/xui/pt/panel_region_estate.xml linden/indra/newview/skins/default/xui/pt/panel_region_general.xml linden/indra/newview/skins/default/xui/pt/panel_status_bar.xml linden/indra/newview/skins/default/xui/pt/panel_toolbar.xml linden/indra/newview/skins/default/xui/pt/teleport_strings.xml linden/indra/newview/skins/default/xui/zh/floater_account_history.xml linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml linden/indra/newview/skins/default/xui/zh/floater_html.xml linden/indra/newview/skins/default/xui/zh/floater_inspect.xml linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml linden/indra/newview/skins/default/xui/zh/floater_preferences.xml linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml linden/indra/newview/skins/default/xui/zh/floater_settings_debug.xml linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml linden/indra/newview/skins/default/xui/zh/menu_viewer.xml linden/indra/newview/skins/default/xui/zh/need_to_translate.xml linden/indra/newview/skins/default/xui/zh/panel_account_details.xml linden/indra/newview/skins/default/xui/zh/panel_account_planning.xml linden/indra/newview/skins/default/xui/zh/panel_account_transactions.xml linden/indra/newview/skins/default/xui/zh/panel_avatar.xml linden/indra/newview/skins/default/xui/zh/panel_group.xml linden/indra/newview/skins/default/xui/zh/panel_group_finder.xml linden/indra/newview/skins/default/xui/zh/panel_group_general.xml linden/indra/newview/skins/default/xui/zh/panel_group_invite.xml linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml linden/indra/newview/skins/default/xui/zh/panel_group_notices.xml linden/indra/newview/skins/default/xui/zh/panel_group_roles.xml linden/indra/newview/skins/default/xui/zh/panel_group_voting.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml linden/indra/newview/skins/default/xui/zh/panel_region_covenant.xml linden/indra/newview/skins/default/xui/zh/strings.xml linden/indra/newview/skins/default/xui/zh/strings_long.xml linden/indra/newview/skins/silver/xui/en-us/floater_about_land.xml linden/indra/newview/skins/silver/xui/en-us/panel_status_bar.xml linden/indra/newview/viewer_manifest.py linden/indra/win_updater/updater.cpp linden/install.xml
Diffstat (limited to 'linden/indra/newview/llagent.cpp')
-rw-r--r--linden/indra/newview/llagent.cpp280
1 files changed, 176 insertions, 104 deletions
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index d268397..301f00b 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -4,7 +4,7 @@
4 * 4 *
5 * $LicenseInfo:firstyear=2001&license=viewergpl$ 5 * $LicenseInfo:firstyear=2001&license=viewergpl$
6 * 6 *
7 * Copyright (c) 2001-2008, Linden Research, Inc. 7 * Copyright (c) 2001-2009, Linden Research, Inc.
8 * 8 *
9 * Second Life Viewer Source Code 9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab 10 * The source code in this file ("Source Code") is provided by Linden Lab
@@ -80,6 +80,7 @@
80#include "llfloatertools.h" 80#include "llfloatertools.h"
81#include "llfloaterworldmap.h" 81#include "llfloaterworldmap.h"
82#include "llgroupmgr.h" 82#include "llgroupmgr.h"
83#include "llhomelocationresponder.h"
83#include "llhudeffectlookat.h" 84#include "llhudeffectlookat.h"
84#include "llhudmanager.h" 85#include "llhudmanager.h"
85#include "llinventorymodel.h" 86#include "llinventorymodel.h"
@@ -90,6 +91,7 @@
90#include "llmoveview.h" 91#include "llmoveview.h"
91#include "llnotify.h" 92#include "llnotify.h"
92#include "llquantize.h" 93#include "llquantize.h"
94#include "llsdutil.h"
93#include "llselectmgr.h" 95#include "llselectmgr.h"
94#include "llsky.h" 96#include "llsky.h"
95#include "llrendersphere.h" 97#include "llrendersphere.h"
@@ -445,7 +447,7 @@ void LLAgent::init()
445 mCameraFocusOffsetTarget = LLVector4(gSavedSettings.getVector3("CameraOffsetBuild")); 447 mCameraFocusOffsetTarget = LLVector4(gSavedSettings.getVector3("CameraOffsetBuild"));
446 mCameraOffsetDefault = gSavedSettings.getVector3("CameraOffsetDefault"); 448 mCameraOffsetDefault = gSavedSettings.getVector3("CameraOffsetDefault");
447// mCameraOffsetNorm = mCameraOffsetDefault; 449// mCameraOffsetNorm = mCameraOffsetDefault;
448// mCameraOffsetNorm.normVec(); 450// mCameraOffsetNorm.normalize();
449 mCameraCollidePlane.clearVec(); 451 mCameraCollidePlane.clearVec();
450 mCurrentCameraDistance = mCameraOffsetDefault.magVec(); 452 mCurrentCameraDistance = mCameraOffsetDefault.magVec();
451 mTargetCameraDistance = mCurrentCameraDistance; 453 mTargetCameraDistance = mCurrentCameraDistance;
@@ -490,7 +492,7 @@ LLAgent::~LLAgent()
490//----------------------------------------------------------------------------- 492//-----------------------------------------------------------------------------
491// resetView() 493// resetView()
492//----------------------------------------------------------------------------- 494//-----------------------------------------------------------------------------
493void LLAgent::resetView(BOOL reset_camera) 495void LLAgent::resetView(BOOL reset_camera, BOOL change_camera)
494{ 496{
495 if (mAutoPilot) 497 if (mAutoPilot)
496 { 498 {
@@ -515,6 +517,30 @@ void LLAgent::resetView(BOOL reset_camera)
515 gMenuHolder->hideMenus(); 517 gMenuHolder->hideMenus();
516 } 518 }
517 519
520 if (change_camera && !gSavedSettings.getBOOL("FreezeTime"))
521 {
522 changeCameraToDefault();
523
524 if (LLViewerJoystick::getInstance()->getOverrideCamera())
525 {
526 handle_toggle_flycam();
527 }
528
529 // reset avatar mode from eventual residual motion
530 if (LLToolMgr::getInstance()->inBuildMode())
531 {
532 LLViewerJoystick::getInstance()->moveAvatar(true);
533 }
534
535 gFloaterTools->close();
536
537 gViewerWindow->showCursor();
538
539 // Switch back to basic toolset
540 LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
541 }
542
543
518 if (reset_camera && !gSavedSettings.getBOOL("FreezeTime")) 544 if (reset_camera && !gSavedSettings.getBOOL("FreezeTime"))
519 { 545 {
520 if (!gViewerWindow->getLeftMouseDown() && cameraThirdPerson()) 546 if (!gViewerWindow->getLeftMouseDown() && cameraThirdPerson())
@@ -522,7 +548,7 @@ void LLAgent::resetView(BOOL reset_camera)
522 // leaving mouse-steer mode 548 // leaving mouse-steer mode
523 LLVector3 agent_at_axis = getAtAxis(); 549 LLVector3 agent_at_axis = getAtAxis();
524 agent_at_axis -= projected_vec(agent_at_axis, getReferenceUpVector()); 550 agent_at_axis -= projected_vec(agent_at_axis, getReferenceUpVector());
525 agent_at_axis.normVec(); 551 agent_at_axis.normalize();
526 gAgent.resetAxes(lerp(getAtAxis(), agent_at_axis, LLCriticalDamp::getInterpolant(0.3f))); 552 gAgent.resetAxes(lerp(getAtAxis(), agent_at_axis, LLCriticalDamp::getInterpolant(0.3f)));
527 } 553 }
528 554
@@ -1033,7 +1059,7 @@ void LLAgent::slamLookAt(const LLVector3 &look_at)
1033{ 1059{
1034 LLVector3 look_at_norm = look_at; 1060 LLVector3 look_at_norm = look_at;
1035 look_at_norm.mV[VZ] = 0.f; 1061 look_at_norm.mV[VZ] = 0.f;
1036 look_at_norm.normVec(); 1062 look_at_norm.normalize();
1037 resetAxes(look_at_norm); 1063 resetAxes(look_at_norm);
1038} 1064}
1039 1065
@@ -1294,7 +1320,7 @@ LLQuaternion LLAgent::getQuat() const
1294//----------------------------------------------------------------------------- 1320//-----------------------------------------------------------------------------
1295// calcFocusOffset() 1321// calcFocusOffset()
1296//----------------------------------------------------------------------------- 1322//-----------------------------------------------------------------------------
1297LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, S32 x, S32 y) 1323LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, LLVector3 pos_agent, S32 x, S32 y)
1298{ 1324{
1299 // calculate offset based on view direction 1325 // calculate offset based on view direction
1300 BOOL is_avatar = object->isAvatar(); 1326 BOOL is_avatar = object->isAvatar();
@@ -1305,7 +1331,7 @@ LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, S32 x, S32 y)
1305 1331
1306 LLVector3 obj_dir_abs = obj_pos - LLViewerCamera::getInstance()->getOrigin(); 1332 LLVector3 obj_dir_abs = obj_pos - LLViewerCamera::getInstance()->getOrigin();
1307 obj_dir_abs.rotVec(inv_obj_rot); 1333 obj_dir_abs.rotVec(inv_obj_rot);
1308 obj_dir_abs.normVec(); 1334 obj_dir_abs.normalize();
1309 obj_dir_abs.abs(); 1335 obj_dir_abs.abs();
1310 1336
1311 LLVector3 object_extents = object->getScale(); 1337 LLVector3 object_extents = object->getScale();
@@ -1330,7 +1356,7 @@ LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, S32 x, S32 y)
1330 { 1356 {
1331 normal.setVec(obj_matrix.getUpRow4()); 1357 normal.setVec(obj_matrix.getUpRow4());
1332 } 1358 }
1333 normal.normVec(); 1359 normal.normalize();
1334 1360
1335 LLVector3d focus_pt_global; 1361 LLVector3d focus_pt_global;
1336 // RN: should we check return value for valid pick? 1362 // RN: should we check return value for valid pick?
@@ -1397,7 +1423,7 @@ LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, S32 x, S32 y)
1397 if (!is_avatar) 1423 if (!is_avatar)
1398 { 1424 {
1399 //unproject relative clicked coordinate from window coordinate using GL 1425 //unproject relative clicked coordinate from window coordinate using GL
1400 GLint viewport[4]; 1426 /*GLint viewport[4];
1401 GLdouble modelview[16]; 1427 GLdouble modelview[16];
1402 GLdouble projection[16]; 1428 GLdouble projection[16];
1403 GLfloat winX, winY, winZ; 1429 GLfloat winX, winY, winZ;
@@ -1419,11 +1445,9 @@ LLVector3 LLAgent::calcFocusOffset(LLViewerObject *object, S32 x, S32 y)
1419 winY = ((F32)y) * gViewerWindow->getDisplayScale().mV[VY]; 1445 winY = ((F32)y) * gViewerWindow->getDisplayScale().mV[VY];
1420 glReadPixels( llfloor(winX), llfloor(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ ); 1446 glReadPixels( llfloor(winX), llfloor(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ );
1421 1447
1422 gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ); 1448 gluUnProject( winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);*/
1423 1449
1424 LLVector3 obj_rel((F32)posX, (F32)posY, (F32)posZ); 1450 LLVector3 obj_rel = pos_agent - object->getRenderPosition();
1425 obj_rel = obj_rel * object->getRenderMatrix();
1426 obj_rel -= object->getRenderPosition();
1427 1451
1428 LLVector3 obj_center = LLVector3(0, 0, 0) * object->getRenderMatrix(); 1452 LLVector3 obj_center = LLVector3(0, 0, 0) * object->getRenderMatrix();
1429 1453
@@ -1534,7 +1558,7 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance)
1534 camera_offset_target_abs_norm.abs(); 1558 camera_offset_target_abs_norm.abs();
1535 // make sure offset is non-zero 1559 // make sure offset is non-zero
1536 camera_offset_target_abs_norm.clamp(0.001f, F32_MAX); 1560 camera_offset_target_abs_norm.clamp(0.001f, F32_MAX);
1537 camera_offset_target_abs_norm.normVec(); 1561 camera_offset_target_abs_norm.normalize();
1538 1562
1539 // find camera position relative to normalized object extents 1563 // find camera position relative to normalized object extents
1540 LLVector3 camera_offset_target_scaled = camera_offset_target_abs_norm; 1564 LLVector3 camera_offset_target_scaled = camera_offset_target_abs_norm;
@@ -1580,7 +1604,7 @@ BOOL LLAgent::calcCameraMinDistance(F32 &obj_min_distance)
1580 LLVector3 object_split_axis; 1604 LLVector3 object_split_axis;
1581 LLVector3 target_offset_scaled = target_offset_origin; 1605 LLVector3 target_offset_scaled = target_offset_origin;
1582 target_offset_scaled.abs(); 1606 target_offset_scaled.abs();
1583 target_offset_scaled.normVec(); 1607 target_offset_scaled.normalize();
1584 target_offset_scaled.mV[VX] /= object_extents.mV[VX]; 1608 target_offset_scaled.mV[VX] /= object_extents.mV[VX];
1585 target_offset_scaled.mV[VY] /= object_extents.mV[VY]; 1609 target_offset_scaled.mV[VY] /= object_extents.mV[VY];
1586 target_offset_scaled.mV[VZ] /= object_extents.mV[VZ]; 1610 target_offset_scaled.mV[VZ] /= object_extents.mV[VZ];
@@ -1703,7 +1727,7 @@ void LLAgent::setCameraZoomFraction(F32 fraction)
1703 else if (cameraCustomizeAvatar()) 1727 else if (cameraCustomizeAvatar())
1704 { 1728 {
1705 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; 1729 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget;
1706 camera_offset_dir.normVec(); 1730 camera_offset_dir.normalize();
1707 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, APPEARANCE_MAX_ZOOM, APPEARANCE_MIN_ZOOM); 1731 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, APPEARANCE_MAX_ZOOM, APPEARANCE_MIN_ZOOM);
1708 } 1732 }
1709 else 1733 else
@@ -1730,7 +1754,7 @@ void LLAgent::setCameraZoomFraction(F32 fraction)
1730 } 1754 }
1731 1755
1732 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; 1756 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget;
1733 camera_offset_dir.normVec(); 1757 camera_offset_dir.normalize();
1734 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom); 1758 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
1735 } 1759 }
1736 startCameraAnimation(); 1760 startCameraAnimation();
@@ -1777,7 +1801,7 @@ void LLAgent::cameraOrbitOver(const F32 angle)
1777 else 1801 else
1778 { 1802 {
1779 LLVector3 camera_offset_unit(mCameraFocusOffsetTarget); 1803 LLVector3 camera_offset_unit(mCameraFocusOffsetTarget);
1780 camera_offset_unit.normVec(); 1804 camera_offset_unit.normalize();
1781 1805
1782 F32 angle_from_up = acos( camera_offset_unit * getReferenceUpVector() ); 1806 F32 angle_from_up = acos( camera_offset_unit * getReferenceUpVector() );
1783 1807
@@ -1812,7 +1836,7 @@ void LLAgent::cameraZoomIn(const F32 fraction)
1812 LLVector3d camera_offset(mCameraFocusOffsetTarget); 1836 LLVector3d camera_offset(mCameraFocusOffsetTarget);
1813 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); 1837 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
1814 F32 min_zoom = LAND_MIN_ZOOM; 1838 F32 min_zoom = LAND_MIN_ZOOM;
1815 F32 current_distance = (F32)camera_offset_unit.normVec(); 1839 F32 current_distance = (F32)camera_offset_unit.normalize();
1816 F32 new_distance = current_distance * fraction; 1840 F32 new_distance = current_distance * fraction;
1817 1841
1818 // Don't move through focus point 1842 // Don't move through focus point
@@ -1881,7 +1905,7 @@ void LLAgent::cameraOrbitIn(const F32 meters)
1881 { 1905 {
1882 LLVector3d camera_offset(mCameraFocusOffsetTarget); 1906 LLVector3d camera_offset(mCameraFocusOffsetTarget);
1883 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); 1907 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
1884 F32 current_distance = (F32)camera_offset_unit.normVec(); 1908 F32 current_distance = (F32)camera_offset_unit.normalize();
1885 F32 new_distance = current_distance - meters; 1909 F32 new_distance = current_distance - meters;
1886 F32 min_zoom = LAND_MIN_ZOOM; 1910 F32 min_zoom = LAND_MIN_ZOOM;
1887 1911
@@ -1938,6 +1962,8 @@ void LLAgent::cameraPanIn(F32 meters)
1938 mFocusGlobal = mFocusTargetGlobal; 1962 mFocusGlobal = mFocusTargetGlobal;
1939 // don't enforce zoom constraints as this is the only way for users to get past them easily 1963 // don't enforce zoom constraints as this is the only way for users to get past them easily
1940 updateFocusOffset(); 1964 updateFocusOffset();
1965 // NOTE: panning movements expect the camera to move exactly with the focus target, not animated behind -Nyx
1966 mCameraSmoothingLastPositionGlobal = calcCameraPositionTargetGlobal();
1941} 1967}
1942 1968
1943//----------------------------------------------------------------------------- 1969//-----------------------------------------------------------------------------
@@ -1956,6 +1982,8 @@ void LLAgent::cameraPanLeft(F32 meters)
1956 1982
1957 cameraZoomIn(1.f); 1983 cameraZoomIn(1.f);
1958 updateFocusOffset(); 1984 updateFocusOffset();
1985 // NOTE: panning movements expect the camera to move exactly with the focus target, not animated behind - Nyx
1986 mCameraSmoothingLastPositionGlobal = calcCameraPositionTargetGlobal();
1959} 1987}
1960 1988
1961//----------------------------------------------------------------------------- 1989//-----------------------------------------------------------------------------
@@ -1974,6 +2002,8 @@ void LLAgent::cameraPanUp(F32 meters)
1974 2002
1975 cameraZoomIn(1.f); 2003 cameraZoomIn(1.f);
1976 updateFocusOffset(); 2004 updateFocusOffset();
2005 // NOTE: panning movements expect the camera to move exactly with the focus target, not animated behind -Nyx
2006 mCameraSmoothingLastPositionGlobal = calcCameraPositionTargetGlobal();
1977} 2007}
1978 2008
1979//----------------------------------------------------------------------------- 2009//-----------------------------------------------------------------------------
@@ -2246,7 +2276,7 @@ void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::s
2246 mAutoPilotUseRotation = TRUE; 2276 mAutoPilotUseRotation = TRUE;
2247 mAutoPilotTargetFacing = LLVector3::x_axis * *target_rotation; 2277 mAutoPilotTargetFacing = LLVector3::x_axis * *target_rotation;
2248 mAutoPilotTargetFacing.mV[VZ] = 0.f; 2278 mAutoPilotTargetFacing.mV[VZ] = 0.f;
2249 mAutoPilotTargetFacing.normVec(); 2279 mAutoPilotTargetFacing.normalize();
2250 } 2280 }
2251 else 2281 else
2252 { 2282 {
@@ -2369,8 +2399,8 @@ void LLAgent::autoPilot(F32 *delta_yaw)
2369 at.mV[VZ] = 0.f; 2399 at.mV[VZ] = 0.f;
2370 direction.mV[VZ] = 0.f; 2400 direction.mV[VZ] = 0.f;
2371 2401
2372 at.normVec(); 2402 at.normalize();
2373 F32 xy_distance = direction.normVec(); 2403 F32 xy_distance = direction.normalize();
2374 2404
2375 F32 yaw = 0.f; 2405 F32 yaw = 0.f;
2376 if (mAutoPilotTargetDist > mAutoPilotStopDistance) 2406 if (mAutoPilotTargetDist > mAutoPilotStopDistance)
@@ -3529,7 +3559,7 @@ void LLAgent::setupSitCamera()
3529 // slam agent coordinate frame to proper parent local version 3559 // slam agent coordinate frame to proper parent local version
3530 LLVector3 at_axis = mFrameAgent.getAtAxis(); 3560 LLVector3 at_axis = mFrameAgent.getAtAxis();
3531 at_axis.mV[VZ] = 0.f; 3561 at_axis.mV[VZ] = 0.f;
3532 at_axis.normVec(); 3562 at_axis.normalize();
3533 resetAxes(at_axis * ~parent_rot); 3563 resetAxes(at_axis * ~parent_rot);
3534 } 3564 }
3535} 3565}
@@ -3665,7 +3695,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
3665 // slam agent coordinate frame to proper parent local version 3695 // slam agent coordinate frame to proper parent local version
3666 LLVector3 at_axis = mFrameAgent.getAtAxis() * parent_rot; 3696 LLVector3 at_axis = mFrameAgent.getAtAxis() * parent_rot;
3667 at_axis.mV[VZ] = 0.f; 3697 at_axis.mV[VZ] = 0.f;
3668 at_axis.normVec(); 3698 at_axis.normalize();
3669 resetAxes(at_axis * ~parent_rot); 3699 resetAxes(at_axis * ~parent_rot);
3670 3700
3671 local_camera_offset = local_camera_offset * mFrameAgent.getQuaternion() * parent_rot; 3701 local_camera_offset = local_camera_offset * mFrameAgent.getQuaternion() * parent_rot;
@@ -3686,7 +3716,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
3686 offset_dot_norm = 0.001f; 3716 offset_dot_norm = 0.001f;
3687 } 3717 }
3688 3718
3689 camera_distance = local_camera_offset.normVec(); 3719 camera_distance = local_camera_offset.normalize();
3690 3720
3691 F32 pos_dot_norm = getPosAgentFromGlobal(frame_center_global + head_offset) * plane_normal; 3721 F32 pos_dot_norm = getPosAgentFromGlobal(frame_center_global + head_offset) * plane_normal;
3692 3722
@@ -3710,7 +3740,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
3710 } 3740 }
3711 else 3741 else
3712 { 3742 {
3713 camera_distance = local_camera_offset.normVec(); 3743 camera_distance = local_camera_offset.normalize();
3714 } 3744 }
3715 3745
3716 mTargetCameraDistance = llmax(camera_distance, MIN_CAMERA_DISTANCE); 3746 mTargetCameraDistance = llmax(camera_distance, MIN_CAMERA_DISTANCE);
@@ -3745,7 +3775,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit)
3745 { 3775 {
3746 LLVector3 frame_at_axis = mFrameAgent.getAtAxis(); 3776 LLVector3 frame_at_axis = mFrameAgent.getAtAxis();
3747 frame_at_axis -= projected_vec(frame_at_axis, getReferenceUpVector()); 3777 frame_at_axis -= projected_vec(frame_at_axis, getReferenceUpVector());
3748 frame_at_axis.normVec(); 3778 frame_at_axis.normalize();
3749 3779
3750 //transition smoothly in air mode, to avoid camera pop 3780 //transition smoothly in air mode, to avoid camera pop
3751 F32 u = (time_in_air - GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME) / GROUND_TO_AIR_CAMERA_TRANSITION_TIME; 3781 F32 u = (time_in_air - GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME) / GROUND_TO_AIR_CAMERA_TRANSITION_TIME;
@@ -3932,7 +3962,7 @@ void LLAgent::resetCamera()
3932 // Remove any pitch from the avatar 3962 // Remove any pitch from the avatar
3933 LLVector3 at = mFrameAgent.getAtAxis(); 3963 LLVector3 at = mFrameAgent.getAtAxis();
3934 at.mV[VZ] = 0.f; 3964 at.mV[VZ] = 0.f;
3935 at.normVec(); 3965 at.normalize();
3936 gAgent.resetAxes(at); 3966 gAgent.resetAxes(at);
3937 // have to explicitly clear field of view zoom now 3967 // have to explicitly clear field of view zoom now
3938 mCameraFOVZoomFactor = 0.f; 3968 mCameraFOVZoomFactor = 0.f;
@@ -4101,7 +4131,10 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
4101 4131
4102 if (mAvatarObject) 4132 if (mAvatarObject)
4103 { 4133 {
4104 mAvatarObject->mPelvisp->setPosition(LLVector3::zero); 4134 if (!mAvatarObject->mIsSitting)
4135 {
4136 mAvatarObject->mPelvisp->setPosition(LLVector3::zero);
4137 }
4105 mAvatarObject->startMotion( ANIM_AGENT_BODY_NOISE ); 4138 mAvatarObject->startMotion( ANIM_AGENT_BODY_NOISE );
4106 mAvatarObject->startMotion( ANIM_AGENT_BREATHE_ROT ); 4139 mAvatarObject->startMotion( ANIM_AGENT_BREATHE_ROT );
4107 } 4140 }
@@ -4147,14 +4180,14 @@ void LLAgent::changeCameraToThirdPerson(BOOL animate)
4147 LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation(); 4180 LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
4148 at_axis = LLViewerCamera::getInstance()->getAtAxis(); 4181 at_axis = LLViewerCamera::getInstance()->getAtAxis();
4149 at_axis.mV[VZ] = 0.f; 4182 at_axis.mV[VZ] = 0.f;
4150 at_axis.normVec(); 4183 at_axis.normalize();
4151 resetAxes(at_axis * ~obj_rot); 4184 resetAxes(at_axis * ~obj_rot);
4152 } 4185 }
4153 else 4186 else
4154 { 4187 {
4155 at_axis = mFrameAgent.getAtAxis(); 4188 at_axis = mFrameAgent.getAtAxis();
4156 at_axis.mV[VZ] = 0.f; 4189 at_axis.mV[VZ] = 0.f;
4157 at_axis.normVec(); 4190 at_axis.normalize();
4158 resetAxes(at_axis); 4191 resetAxes(at_axis);
4159 } 4192 }
4160 4193
@@ -4201,7 +4234,7 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL camera_ani
4201 // Remove any pitch from the avatar 4234 // Remove any pitch from the avatar
4202 //LLVector3 at = mFrameAgent.getAtAxis(); 4235 //LLVector3 at = mFrameAgent.getAtAxis();
4203 //at.mV[VZ] = 0.f; 4236 //at.mV[VZ] = 0.f;
4204 //at.normVec(); 4237 //at.normalize();
4205 //gAgent.resetAxes(at); 4238 //gAgent.resetAxes(at);
4206 4239
4207 if( mCameraMode != CAMERA_MODE_CUSTOMIZE_AVATAR ) 4240 if( mCameraMode != CAMERA_MODE_CUSTOMIZE_AVATAR )
@@ -4228,7 +4261,7 @@ void LLAgent::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL camera_ani
4228 // Remove any pitch from the avatar 4261 // Remove any pitch from the avatar
4229 LLVector3 at = mFrameAgent.getAtAxis(); 4262 LLVector3 at = mFrameAgent.getAtAxis();
4230 at.mV[VZ] = 0.f; 4263 at.mV[VZ] = 0.f;
4231 at.normVec(); 4264 at.normalize();
4232 gAgent.resetAxes(at); 4265 gAgent.resetAxes(at);
4233 4266
4234 sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START); 4267 sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);
@@ -4508,14 +4541,14 @@ void LLAgent::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)
4508 LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation(); 4541 LLQuaternion obj_rot = ((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
4509 at_axis = LLViewerCamera::getInstance()->getAtAxis(); 4542 at_axis = LLViewerCamera::getInstance()->getAtAxis();
4510 at_axis.mV[VZ] = 0.f; 4543 at_axis.mV[VZ] = 0.f;
4511 at_axis.normVec(); 4544 at_axis.normalize();
4512 resetAxes(at_axis * ~obj_rot); 4545 resetAxes(at_axis * ~obj_rot);
4513 } 4546 }
4514 else 4547 else
4515 { 4548 {
4516 at_axis = LLViewerCamera::getInstance()->getAtAxis(); 4549 at_axis = LLViewerCamera::getInstance()->getAtAxis();
4517 at_axis.mV[VZ] = 0.f; 4550 at_axis.mV[VZ] = 0.f;
4518 at_axis.normVec(); 4551 at_axis.normalize();
4519 resetAxes(at_axis); 4552 resetAxes(at_axis);
4520 } 4553 }
4521 } 4554 }
@@ -4578,7 +4611,7 @@ void LLAgent::lookAtLastChat()
4578 { 4611 {
4579 delta_pos = chatter->getPositionAgent() - getPositionAgent(); 4612 delta_pos = chatter->getPositionAgent() - getPositionAgent();
4580 } 4613 }
4581 delta_pos.normVec(); 4614 delta_pos.normalize();
4582 4615
4583 setControlFlags(AGENT_CONTROL_STOP); 4616 setControlFlags(AGENT_CONTROL_STOP);
4584 4617
@@ -4586,9 +4619,9 @@ void LLAgent::lookAtLastChat()
4586 4619
4587 LLVector3 new_camera_pos = mAvatarObject->mHeadp->getWorldPosition(); 4620 LLVector3 new_camera_pos = mAvatarObject->mHeadp->getWorldPosition();
4588 LLVector3 left = delta_pos % LLVector3::z_axis; 4621 LLVector3 left = delta_pos % LLVector3::z_axis;
4589 left.normVec(); 4622 left.normalize();
4590 LLVector3 up = left % delta_pos; 4623 LLVector3 up = left % delta_pos;
4591 up.normVec(); 4624 up.normalize();
4592 new_camera_pos -= delta_pos * 0.4f; 4625 new_camera_pos -= delta_pos * 0.4f;
4593 new_camera_pos += left * 0.3f; 4626 new_camera_pos += left * 0.3f;
4594 new_camera_pos += up * 0.2f; 4627 new_camera_pos += up * 0.2f;
@@ -4607,7 +4640,7 @@ void LLAgent::lookAtLastChat()
4607 else 4640 else
4608 { 4641 {
4609 delta_pos = chatter->getRenderPosition() - getPositionAgent(); 4642 delta_pos = chatter->getRenderPosition() - getPositionAgent();
4610 delta_pos.normVec(); 4643 delta_pos.normalize();
4611 4644
4612 setControlFlags(AGENT_CONTROL_STOP); 4645 setControlFlags(AGENT_CONTROL_STOP);
4613 4646
@@ -4615,9 +4648,9 @@ void LLAgent::lookAtLastChat()
4615 4648
4616 LLVector3 new_camera_pos = mAvatarObject->mHeadp->getWorldPosition(); 4649 LLVector3 new_camera_pos = mAvatarObject->mHeadp->getWorldPosition();
4617 LLVector3 left = delta_pos % LLVector3::z_axis; 4650 LLVector3 left = delta_pos % LLVector3::z_axis;
4618 left.normVec(); 4651 left.normalize();
4619 LLVector3 up = left % delta_pos; 4652 LLVector3 up = left % delta_pos;
4620 up.normVec(); 4653 up.normalize();
4621 new_camera_pos -= delta_pos * 0.4f; 4654 new_camera_pos -= delta_pos * 0.4f;
4622 new_camera_pos += left * 0.3f; 4655 new_camera_pos += left * 0.3f;
4623 new_camera_pos += up * 0.2f; 4656 new_camera_pos += up * 0.2f;
@@ -4631,68 +4664,107 @@ void LLAgent::lookAtLastChat()
4631 4664
4632const F32 SIT_POINT_EXTENTS = 0.2f; 4665const F32 SIT_POINT_EXTENTS = 0.2f;
4633 4666
4634// Grabs current position 4667void LLAgent::setStartPosition( U32 location_id )
4635void LLAgent::setStartPosition(U32 location_id) 4668{
4636{ 4669 LLViewerObject *object;
4637 LLViewerObject *object; 4670
4638 4671 if ( !(gAgentID == LLUUID::null) )
4639 if ( !(gAgentID == LLUUID::null) ) 4672 {
4640 { 4673 // we've got an ID for an agent viewerobject
4641 // we've got an ID for an agent viewerobject 4674 object = gObjectList.findObject(gAgentID);
4642 object = gObjectList.findObject(gAgentID); 4675 if (object)
4643 if (object) 4676 {
4644 { 4677 // we've got the viewer object
4645 // we've got the viewer object 4678 // Sometimes the agent can be velocity interpolated off of
4646 // Sometimes the agent can be velocity interpolated off of 4679 // this simulator. Clamp it to the region the agent is
4647 // this simulator. Clamp it to the region the agent is 4680 // in, a little bit in on each side.
4648 // in, a little bit in on each side. 4681 const F32 INSET = 0.5f; //meters
4649 const F32 INSET = 0.5f; //meters 4682 const F32 REGION_WIDTH = LLWorld::getInstance()->getRegionWidthInMeters();
4650 const F32 REGION_WIDTH = LLWorld::getInstance()->getRegionWidthInMeters(); 4683
4651 4684 LLVector3 agent_pos = getPositionAgent();
4652 LLVector3 agent_pos = getPositionAgent(); 4685 LLVector3 agent_look_at = mFrameAgent.getAtAxis();
4653 4686
4654 if (mAvatarObject) 4687 if (mAvatarObject)
4655 { 4688 {
4656 // the z height is at the agent's feet 4689 // the z height is at the agent's feet
4657 agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ]; 4690 agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ];
4658 } 4691 }
4659 4692
4660 agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET ); 4693 agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET );
4661 agent_pos.mV[VY] = llclamp( agent_pos.mV[VY], INSET, REGION_WIDTH - INSET ); 4694 agent_pos.mV[VY] = llclamp( agent_pos.mV[VY], INSET, REGION_WIDTH - INSET );
4662 4695
4663 // Don't let them go below ground, or too high. 4696 // Don't let them go below ground, or too high.
4664 agent_pos.mV[VZ] = llclamp( agent_pos.mV[VZ], 4697 agent_pos.mV[VZ] = llclamp( agent_pos.mV[VZ],
4665 mRegionp->getLandHeightRegion( agent_pos ), 4698 mRegionp->getLandHeightRegion( agent_pos ),
4666 LLWorld::getInstance()->getRegionMaxHeight() ); 4699 LLWorld::getInstance()->getRegionMaxHeight() );
4667 4700 // Send the CapReq
4668 LLMessageSystem* msg = gMessageSystem; 4701
4669 msg->newMessageFast(_PREHASH_SetStartLocationRequest); 4702 LLSD body;
4670 msg->nextBlockFast( _PREHASH_AgentData); 4703
4671 msg->addUUIDFast(_PREHASH_AgentID, getID()); 4704 std::string url = gAgent.getRegion()->getCapability("HomeLocation");
4672 msg->addUUIDFast(_PREHASH_SessionID, getSessionID()); 4705 std::ostringstream strBuffer;
4673 msg->nextBlockFast( _PREHASH_StartLocationData); 4706 if( url.empty() )
4674 // corrected by sim 4707 {
4675 msg->addStringFast(_PREHASH_SimName, ""); 4708 LLMessageSystem* msg = gMessageSystem;
4676 msg->addU32Fast(_PREHASH_LocationID, location_id); 4709 msg->newMessageFast(_PREHASH_SetStartLocationRequest);
4677 msg->addVector3Fast(_PREHASH_LocationPos, agent_pos); 4710 msg->nextBlockFast( _PREHASH_AgentData);
4678 msg->addVector3Fast(_PREHASH_LocationLookAt,mFrameAgent.getAtAxis()); 4711 msg->addUUIDFast(_PREHASH_AgentID, getID());
4679 4712 msg->addUUIDFast(_PREHASH_SessionID, getSessionID());
4680 // Reliable only helps when setting home location. Last 4713 msg->nextBlockFast( _PREHASH_StartLocationData);
4681 // location is sent on quit, and we don't have time to ack 4714 // corrected by sim
4682 // the packets. 4715 msg->addStringFast(_PREHASH_SimName, "");
4683 msg->sendReliable(mRegionp->getHost()); 4716 msg->addU32Fast(_PREHASH_LocationID, location_id);
4684 4717 msg->addVector3Fast(_PREHASH_LocationPos, agent_pos);
4685 const U32 HOME_INDEX = 1; 4718 msg->addVector3Fast(_PREHASH_LocationLookAt,mFrameAgent.getAtAxis());
4686 if( HOME_INDEX == location_id ) 4719
4687 { 4720 // Reliable only helps when setting home location. Last
4688 setHomePosRegion( mRegionp->getHandle(), getPositionAgent() ); 4721 // location is sent on quit, and we don't have time to ack
4689 } 4722 // the packets.
4690 } 4723 msg->sendReliable(mRegionp->getHost());
4691 else 4724
4692 { 4725 const U32 HOME_INDEX = 1;
4693 llinfos << "setStartPosition - Can't find agent viewerobject id " << gAgentID << llendl; 4726 if( HOME_INDEX == location_id )
4694 } 4727 {
4695 } 4728 setHomePosRegion( mRegionp->getHandle(), getPositionAgent() );
4729 }
4730 }
4731 else
4732 {
4733 strBuffer << location_id;
4734 body["HomeLocation"]["LocationId"] = strBuffer.str();
4735
4736 strBuffer.str("");
4737 strBuffer << agent_pos.mV[VX];
4738 body["HomeLocation"]["LocationPos"]["X"] = strBuffer.str();
4739
4740 strBuffer.str("");
4741 strBuffer << agent_pos.mV[VY];
4742 body["HomeLocation"]["LocationPos"]["Y"] = strBuffer.str();
4743
4744 strBuffer.str("");
4745 strBuffer << agent_pos.mV[VZ];
4746 body["HomeLocation"]["LocationPos"]["Z"] = strBuffer.str();
4747
4748 strBuffer.str("");
4749 strBuffer << agent_look_at.mV[VX];
4750 body["HomeLocation"]["LocationLookAt"]["X"] = strBuffer.str();
4751
4752 strBuffer.str("");
4753 strBuffer << agent_look_at.mV[VY];
4754 body["HomeLocation"]["LocationLookAt"]["Y"] = strBuffer.str();
4755
4756 strBuffer.str("");
4757 strBuffer << agent_look_at.mV[VZ];
4758 body["HomeLocation"]["LocationLookAt"]["Z"] = strBuffer.str();
4759
4760 LLHTTPClient::post( url, body, new LLHomeLocationResponder() );
4761 }
4762 }
4763 else
4764 {
4765 llinfos << "setStartPosition - Can't find agent viewerobject id " << gAgentID << llendl;
4766 }
4767 }
4696} 4768}
4697 4769
4698void LLAgent::requestStopMotion( LLMotion* motion ) 4770void LLAgent::requestStopMotion( LLMotion* motion )