diff --git a/doc/contributions.txt b/doc/contributions.txt index 9df072e937ebdcaa8f7d86199cb7ab46abf6701e..7bdd287fb1c2ba6b9fc9d31b4d624b2c0cbf6730 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -127,6 +127,8 @@ Asuka Neely VWR-8179 Balp Allen VWR-4157 +Be Holder + SNOW-397 Benja Kepler VWR-746 Biancaluce Robbiani @@ -153,6 +155,7 @@ Boroondas Gupte SNOW-503 SNOW-510 SNOW-527 + SNOW-610 SNOW-624 VWR-233 WEB-262 diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 42b78a84af2557bc0917ef90edf502441e0db610..b78ebc69695da5eb6b424fa1a4859cab34ef596e 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -827,6 +827,11 @@ LLVector3d LLAgent::getPosGlobalFromAgent(const LLVector3 &pos_agent) const return pos_agent_d + mAgentOriginGlobal; } +void LLAgent::sitDown() +{ + setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); +} + //----------------------------------------------------------------------------- // resetAxes() diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 0d95683a9837c60a731af0e3a8a1fbd752a5c7db..c643cef78fffcae33a5027bc09745986037b12b8 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -345,6 +345,8 @@ private: //-------------------------------------------------------------------- public: void standUp(); + /// @brief ground-sit at agent's current position + void sitDown(); //-------------------------------------------------------------------- // Busy diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 476e761c280ab58a8c70349bd666441e972b2a4c..d02e1fdc8f3ec8808fce18958abad8d091332ffc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -3381,8 +3381,21 @@ class LLSelfStandUp : public view_listener_t bool enable_standup_self() { - bool new_value = isAgentAvatarValid() && gAgentAvatarp->isSitting(); - return new_value; + return isAgentAvatarValid() && gAgentAvatarp->isSitting(); +} + +class LLSelfSitDown : public view_listener_t + { + bool handleEvent(const LLSD& userdata) + { + gAgent.sitDown(); + return true; + } + }; + +bool enable_sitdown_self() +{ + return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying(); } // Used from the login screen to aid in UI work on side tray @@ -8037,11 +8050,13 @@ void initialize_menus() // Admin top level view_listener_t::addMenu(new LLAdminOnSaveState(), "Admin.OnSaveState"); - // Self pie menu + // Self context menu view_listener_t::addMenu(new LLSelfStandUp(), "Self.StandUp"); + enable.add("Self.EnableStandUp", boost::bind(&enable_standup_self)); + view_listener_t::addMenu(new LLSelfSitDown(), "Self.SitDown"); + enable.add("Self.EnableSitDown", boost::bind(&enable_sitdown_self)); view_listener_t::addMenu(new LLSelfRemoveAllAttachments(), "Self.RemoveAllAttachments"); - enable.add("Self.EnableStandUp", boost::bind(&enable_standup_self)); view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments"); // we don't use boost::bind directly to delay side tray construction diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml index e2348375d55b7a25b67a7a7ec1a0794315cfce77..84e81397beb465b0df1b180f7cd845ab60decc93 100644 --- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -23,7 +23,7 @@ <menu_item_call.on_enable function="Self.EnableStandUp" /> </menu_item_call--> - <menu_item_call + <menu_item_call enabled="false" label="Edit" layout="topleft" @@ -46,6 +46,17 @@ <menu_item_separator layout="topleft" /> + <menu_item_call + label="Sit Down" + layout="topleft" + name="Sit Down Here"> + <menu_item_call.on_click + function="Self.SitDown" + parameter="" /> + <menu_item_call.on_enable + function="Self.EnableSitDown" /> + </menu_item_call> + <menu_item_call label="Stand Up" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index d5b993152a5374bbfafe973e9b8ebbd5e789abc8..9059745f4602ea858e08caafb28ce06a4d992cfa 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -2,7 +2,17 @@ <context_menu layout="topleft" name="Self Pie"> - <menu_item_call + <menu_item_call + label="Sit Down" + layout="topleft" + name="Sit Down Here"> + <menu_item_call.on_click + function="Self.SitDown" + parameter="" /> + <menu_item_call.on_enable + function="Self.EnableSitDown" /> + </menu_item_call> + <menu_item_call label="Stand Up" layout="topleft" name="Stand Up"> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml index ea18e02ca1e770c2d7d29da9e48d5f2ba3c0721f..30c2cde552d3f83777b0bc60daf2b96404e8ec6a 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml @@ -5,6 +5,16 @@ mouse_opaque="false" visible="false" name="Gear Menu"> + <menu_item_call + label="Sit Down" + enabled="true" + name="sit_down_here"> + <menu_item_call.on_click + function="Self.SitDown" + parameter="" /> + <menu_item_call.on_visible + function="Self.EnableSitDown" /> + </menu_item_call> <menu_item_call label="Stand Up" enabled="true"