From da2a9a5bf54615ada208b23990f33a14318fa32e Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 10 Jan 2019 17:42:59 -0500 Subject: [PATCH] Add Typing AO Like scripted AOs, this works whenever you type and AO is ON Even if the Linden typing animation is not playing. --- indra/newview/app_settings/ao_template.ini | 1 + .../app_settings/settings_per_account.xml | 11 +++++ indra/newview/floaterao.cpp | 41 +++++++++++++++++++ indra/newview/floaterao.h | 3 ++ indra/newview/llagent.cpp | 8 ++-- .../skins/default/xui/en-us/floater_ao.xml | 7 ++++ 6 files changed, 66 insertions(+), 5 deletions(-) diff --git a/indra/newview/app_settings/ao_template.ini b/indra/newview/app_settings/ao_template.ini index 03f02e305..ab4c68cac 100644 --- a/indra/newview/app_settings/ao_template.ini +++ b/indra/newview/app_settings/ao_template.ini @@ -63,6 +63,7 @@ [ Running ] [ Turning Right ] [ Turning Left ] +[ Typing ] [ Floating ] [ Swimming Forward ] [ Swimming Up ] diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml index 97a898662..021563d5a 100644 --- a/indra/newview/app_settings/settings_per_account.xml +++ b/indra/newview/app_settings/settings_per_account.xml @@ -186,6 +186,17 @@ Value + AODefaultTyping + + Comment + Default typing anim + Persist + 1 + Type + String + Value + + AODefaultFloat Comment diff --git a/indra/newview/floaterao.cpp b/indra/newview/floaterao.cpp index 8be8323b7..d42d62769 100644 --- a/indra/newview/floaterao.cpp +++ b/indra/newview/floaterao.cpp @@ -168,6 +168,7 @@ LLComboBox* mcomboBox_flyslows; LLComboBox* mcomboBox_flyups; LLComboBox* mcomboBox_flydowns; LLComboBox* mcomboBox_lands; +LLComboBox* mcomboBox_typings; LLComboBox* mcomboBox_floats; LLComboBox* mcomboBox_swims; LLComboBox* mcomboBox_swimups; @@ -226,6 +227,7 @@ LLFloaterAO::~LLFloaterAO() mcomboBox_flyups = 0; mcomboBox_flydowns = 0; mcomboBox_lands = 0; + mcomboBox_typings = 0; mcomboBox_floats = 0; mcomboBox_swims = 0; mcomboBox_swimups = 0; @@ -286,6 +288,7 @@ BOOL LLFloaterAO::postBuild() mcomboBox_flyups = getChild("flyups"); mcomboBox_flydowns = getChild("flydowns"); mcomboBox_lands = getChild("lands"); + mcomboBox_typings = getChild("typings"); mcomboBox_floats = getChild("floats"); mcomboBox_swims = getChild("swims"); mcomboBox_swimups = getChild("swimups"); @@ -307,6 +310,7 @@ BOOL LLFloaterAO::postBuild() getChild("flyups")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit,_1)); getChild("flydowns")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit,_1)); getChild("lands")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit,_1)); + getChild("typings")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit, _1)); getChild("floats")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit, _1)); getChild("swims")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit, _1)); getChild("swimups")->setCommitCallback(boost::bind(&LLFloaterAO::onComboBoxCommit, _1)); @@ -446,6 +450,12 @@ void LLFloaterAO::onComboBoxCommit(LLUICtrl* ctrl) gSavedPerAccountSettings.setString("AODefaultLand",stranim); state = STATE_AGENT_LAND; } + else if (box->getName() == "typings") + { + gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_TYPE), ANIM_REQUEST_STOP); + gSavedPerAccountSettings.setString("AODefaultTyping",stranim); + state = STATE_AGENT_TYPING; + } else if (box->getName() == "floats") { gAgent.sendAnimationRequest(GetAnimID(ANIM_AGENT_HOVER), ANIM_REQUEST_STOP); @@ -520,6 +530,7 @@ void LLFloaterAO::updateLayout(LLFloaterAO* floater) floater->childSetVisible("textdefaultflyup", advanced); floater->childSetVisible("textdefaultflydown", advanced); floater->childSetVisible("textdefaultland", advanced); + floater->childSetVisible("textdefaulttyping", advanced); floater->childSetVisible("textdefaultfloat", advanced); floater->childSetVisible("textdefaultswim", advanced); floater->childSetVisible("textdefaultswimup", advanced); @@ -541,6 +552,7 @@ void LLFloaterAO::updateLayout(LLFloaterAO* floater) floater->childSetVisible("flyups", advanced); floater->childSetVisible("flydowns", advanced); floater->childSetVisible("lands", advanced); + floater->childSetVisible("typing", advanced); floater->childSetVisible("floats", advanced); floater->childSetVisible("swims", advanced); floater->childSetVisible("swimups", advanced); @@ -581,6 +593,7 @@ void LLFloaterAO::init() tokenloader.token = "[ Swimming Up ]"; tokenloader.state = STATE_AGENT_SWIM_UP; mAOTokens.push_back(tokenloader); // 22 tokenloader.token = "[ Swimming Forward ]"; tokenloader.state = STATE_AGENT_SWIM; mAOTokens.push_back(tokenloader); // 23 tokenloader.token = "[ Floating ]"; tokenloader.state = STATE_AGENT_FLOAT; mAOTokens.push_back(tokenloader); // 24 + tokenloader.token = "[ Typing ]"; tokenloader.state = STATE_AGENT_TYPING; mAOTokens.push_back(tokenloader); // 25 struct_overrides overrideloader; overrideloader.orig_id = ANIM_AGENT_WALK; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_WALK; mAOOverrides.push_back(overrideloader); @@ -606,6 +619,7 @@ void LLFloaterAO::init() overrideloader.orig_id = ANIM_AGENT_FALLDOWN; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FALLDOWN; mAOOverrides.push_back(overrideloader); overrideloader.orig_id = ANIM_AGENT_STANDUP; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_STANDUP; mAOOverrides.push_back(overrideloader); overrideloader.orig_id = ANIM_AGENT_LAND; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_LAND; mAOOverrides.push_back(overrideloader); + overrideloader.orig_id = ANIM_AGENT_TYPE; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_TYPING; mAOOverrides.push_back(overrideloader); overrideloader.orig_id = ANIM_AGENT_FLY; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLY; mAOOverrides.push_back(overrideloader); overrideloader.orig_id = ANIM_AGENT_FLYSLOW; overrideloader.ao_id = LLUUID::null; overrideloader.state = STATE_AGENT_FLYSLOW; mAOOverrides.push_back(overrideloader); @@ -708,6 +722,17 @@ void LLFloaterAO::run() } } +void LLFloaterAO::typing(bool start) +{ + uuid_vec_t anims; + // If we're stopping, stop regardless, just in case the setting was toggled during (e.g.: keyboard shortcut) + if (!start || gSavedSettings.getBOOL("PlayTypingAnim")) // Linden typing + anims.push_back(ANIM_AGENT_TYPE); + if (!start || gSavedSettings.getBOOL("AOEnabled")) // Typing override + anims.push_back(GetAnimIDFromState(STATE_AGENT_TYPING)); + gAgent.sendAnimationRequests(anims, start ? ANIM_REQUEST_START : ANIM_REQUEST_STOP); +} + int LLFloaterAO::flyToSwimState(const int state) { switch (state) @@ -1054,6 +1079,7 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA if (mcomboBox_flyups) mcomboBox_flyups->clear(); if (mcomboBox_flydowns) mcomboBox_flydowns->clear(); if (mcomboBox_lands) mcomboBox_lands->clear(); + if (mcomboBox_typings) mcomboBox_typings->clear(); if (mcomboBox_floats) mcomboBox_floats->clear(); if (mcomboBox_swims) mcomboBox_swims->clear(); if (mcomboBox_swimups) mcomboBox_swimups->clear(); @@ -1217,6 +1243,14 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA } } break; + case STATE_AGENT_TYPING: + { + if (sInstance && (mcomboBox_typings != NULL)) + { + if (!(mcomboBox_typings->selectByValue(stranim.c_str()))) mcomboBox_typings->add(stranim.c_str(), ADD_BOTTOM, TRUE); //check if exist + } + } + break; case STATE_AGENT_FLOAT: { if (sInstance && (mcomboBox_floats != NULL)) @@ -1382,6 +1416,13 @@ void LLFloaterAO::onNotecardLoadComplete(LLVFS *vfs,const LLUUID& asset_uuid,LLA if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); } break; + case STATE_AGENT_TYPING: + { + std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultTyping"); + SetDefault(mcomboBox_typings,iter->ao_id,defaultanim); + if (getAssetIDByName(defaultanim) != LLUUID::null) iter->ao_id = getAssetIDByName(defaultanim); + } + break; case STATE_AGENT_FLOAT: { std::string defaultanim = gSavedPerAccountSettings.getString("AODefaultFloating"); diff --git a/indra/newview/floaterao.h b/indra/newview/floaterao.h index a4605692a..047fa69be 100644 --- a/indra/newview/floaterao.h +++ b/indra/newview/floaterao.h @@ -34,6 +34,8 @@ const int STATE_AGENT_LAND = 17; const int STATE_AGENT_FLY = 18; const int STATE_AGENT_FLYSLOW = 19; +const int STATE_AGENT_TYPING = 20; + const int STATE_AGENT_SWIM_DOWN = 21; const int STATE_AGENT_SWIM_UP = 22; const int STATE_AGENT_SWIM = 23; @@ -75,6 +77,7 @@ public: static BOOL loadAnims(); + static void typing(bool start); static int flyToSwimState(const int state); static int swimToFlyState(const int state); static int getAnimationState(); diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 558c9bcf6..bd2c40619 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -103,6 +103,7 @@ #include "lluictrlfactory.h" //For LLUICtrlFactory::getLayeredXMLNode +#include "floaterao.h" // for Typing override #include "hippolimits.h" // for getMaxAgentGroups // [RLVa:KB] - Checked: 2011-11-04 (RLVa-1.4.4a) #include "rlvactions.h" @@ -2004,10 +2005,7 @@ void LLAgent::startTyping() } } - if (gSavedSettings.getBOOL("PlayTypingAnim")) - { - sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_START); - } + LLFloaterAO::typing(true); // Singu Note: Typing anims handled by AO/settings. gChatBar-> sendChatFromViewer("", CHAT_TYPE_START, FALSE); } @@ -2020,7 +2018,7 @@ void LLAgent::stopTyping() if (mRenderState & AGENT_STATE_TYPING) { clearRenderState(AGENT_STATE_TYPING); - sendAnimationRequest(ANIM_AGENT_TYPE, ANIM_REQUEST_STOP); + LLFloaterAO::typing(false); // Singu Note: Typing anims handled by AO/settings. gChatBar-> sendChatFromViewer("", CHAT_TYPE_STOP, FALSE); } diff --git a/indra/newview/skins/default/xui/en-us/floater_ao.xml b/indra/newview/skins/default/xui/en-us/floater_ao.xml index 1b321ee31..2cde81098 100644 --- a/indra/newview/skins/default/xui/en-us/floater_ao.xml +++ b/indra/newview/skins/default/xui/en-us/floater_ao.xml @@ -252,6 +252,13 @@ Default Downward Swim: + + Default Typing: + +