From c1e8671e7ce24eef0c839e664e3e9df39c9900ed Mon Sep 17 00:00:00 2001 From: Kitty Barnett <develop@catznip.com> Date: Mon, 30 Mar 2015 23:12:44 +0200 Subject: [PATCH] - changed : reimplemented the @adjustheight command using LL's new hover functionality --HG-- branch : RLVa --- indra/newview/rlvhandler.cpp | 22 ++++++++++++++++++++-- indra/newview/rlvhelper.cpp | 19 +++++++++++++++++++ indra/newview/rlvhelper.h | 9 +++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index a89aa9f720..f6f1735d8f 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -1627,8 +1627,26 @@ ERlvCmdRet RlvHandler::processForceCommand(const RlvCommand& rlvCmd) const case RLV_BHVR_SIT: // @sit:<option>=force eRet = onForceSit(rlvCmd); break; - case RLV_BHVR_ADJUSTHEIGHT: // @adjustheight:<options>=force - eRet = RLV_RET_DEPRECATED; + case RLV_BHVR_ADJUSTHEIGHT: // @adjustheight:<options>=force - Checked: 2015-03-30 (RLVa-1.5.0) + { + RlvCommandOptionAdjustHeight rlvCmdOption(rlvCmd); + VERIFY_OPTION(rlvCmdOption.isValid()); + if (isAgentAvatarValid()) + { + F32 nValue = (rlvCmdOption.m_nPelvisToFoot - gAgentAvatarp->getPelvisToFoot()) * rlvCmdOption.m_nPelvisToFootDeltaMult; + nValue += rlvCmdOption.m_nPelvisToFootOffset; + if (gAgentAvatarp->getRegion()->avatarHoverHeightEnabled()) + { + LLVector3 avOffset(0.0, 0.0, llclamp<F32>(nValue, MIN_HOVER_Z, MAX_HOVER_Z)); + gSavedPerAccountSettings.setF32("AvatarHoverOffsetZ", avOffset.mV[VZ]); + gAgentAvatarp->setHoverOffset(avOffset, true); + } + else + { + eRet = RLV_RET_FAILED_DISABLED; + } + } + } break; case RLV_BHVR_TPTO: // @tpto:<option>=force - Checked: 2011-03-28 (RLVa-1.3.0f) | Modified: RLVa-1.3.0f { diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp index c36a5f0fc3..4488ec030a 100644 --- a/indra/newview/rlvhelper.cpp +++ b/indra/newview/rlvhelper.cpp @@ -333,6 +333,25 @@ bool RlvCommandOptionGetPath::getItemIDs(LLWearableType::EType wtType, uuid_vec_ return (cntItemsPrev != idItems.size()); } +// Checked: 2015-03-30 (RLVa-1.5.0) +RlvCommandOptionAdjustHeight::RlvCommandOptionAdjustHeight(const RlvCommand& rlvCmd) + : m_nPelvisToFoot(0.0f), m_nPelvisToFootDeltaMult(0.0f), m_nPelvisToFootOffset(0.0f) +{ + std::vector<std::string> cmdTokens; + boost::split(cmdTokens, rlvCmd.getOption(), boost::is_any_of(std::string(";"))); + if (1 == cmdTokens.size()) + { + m_fValid = (LLStringUtil::convertToF32(cmdTokens[0], m_nPelvisToFootOffset)); + m_nPelvisToFootOffset /= 100; + } + else if ( (2 <= cmdTokens.size()) && (cmdTokens.size() <= 3) ) + { + m_fValid = (LLStringUtil::convertToF32(cmdTokens[0], m_nPelvisToFoot)) && + (LLStringUtil::convertToF32(cmdTokens[1], m_nPelvisToFootDeltaMult)) && + ( (2 == cmdTokens.size()) || (LLStringUtil::convertToF32(cmdTokens[2], m_nPelvisToFootOffset)) ); + } +} + // Checked: 2011-03-28 (RLVa-1.3.0f) | Added: RLVa-1.3.0f RlvCommandOptionTpTo::RlvCommandOptionTpTo(const RlvCommand &rlvCmd) { diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h index 2d935f80e8..0187ab494e 100644 --- a/indra/newview/rlvhelper.h +++ b/indra/newview/rlvhelper.h @@ -153,6 +153,15 @@ protected: uuid_vec_t m_idItems; }; +struct RlvCommandOptionAdjustHeight : public RlvCommandOption +{ + RlvCommandOptionAdjustHeight(const RlvCommand& rlvCmd); + + F32 m_nPelvisToFoot; + F32 m_nPelvisToFootDeltaMult; + F32 m_nPelvisToFootOffset; +}; + struct RlvCommandOptionTpTo : public RlvCommandOption { RlvCommandOptionTpTo(const RlvCommand& rlvCmd); -- GitLab