diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 9b381c8056..8a93e6c377 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -145,6 +145,28 @@ Value 1 + RLVaExperimentalCommands + + Comment + Enables the experimental command set + Persist + 1 + Type + Boolean + Value + 1 + + RLVaExtendedCommands + + Comment + Enables the extended command set + Persist + 1 + Type + Boolean + Value + 1 + RLVaHideLockedLayers Comment diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 67e2b43a0a..e37216403c 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -585,7 +585,7 @@ bool rlvMenuEnableIfNot(const LLSD& sdParam) bool fEnable = true; if (rlv_handler_t::isEnabled()) { - ERlvBehaviour eBhvr = RlvCommand::getBehaviourFromString(sdParam.asString()); + ERlvBehaviour eBhvr = RlvBehaviourDictionary::instance().getBehaviourFromString(sdParam.asString(), RLV_TYPE_ADDREM); fEnable = (eBhvr != RLV_BHVR_UNKNOWN) ? !gRlvHandler.hasBehaviour(eBhvr) : true; } return fEnable; diff --git a/indra/newview/rlvdefines.h b/indra/newview/rlvdefines.h index 8650aa55da..1829dec818 100644 --- a/indra/newview/rlvdefines.h +++ b/indra/newview/rlvdefines.h @@ -114,7 +114,7 @@ const S32 RLVa_VERSION_BUILD = 0; // Enumeration declarations // -// NOTE: any changes to this enumeration should be reflected in RlvCommand::initLookupTable() +// NOTE: any changes to this enumeration should be reflected in the RlvBehaviourDictionary constructor enum ERlvBehaviour { RLV_BHVR_DETACH = 0, // "detach" RLV_BHVR_ATTACH, // "attach" @@ -234,12 +234,13 @@ enum ERlvBehaviour { }; enum ERlvParamType { - RLV_TYPE_UNKNOWN, - RLV_TYPE_ADD, // == "n"|"add" - RLV_TYPE_REMOVE, // == "y"|"rem" - RLV_TYPE_FORCE, // == "force" - RLV_TYPE_REPLY, // == - RLV_TYPE_CLEAR + RLV_TYPE_UNKNOWN = 0x00, + RLV_TYPE_ADD = 0x01, // == "n"|"add" + RLV_TYPE_REMOVE = 0x02, // == "y"|"rem" + RLV_TYPE_FORCE = 0x04, // == "force" + RLV_TYPE_REPLY = 0x08, // == + RLV_TYPE_CLEAR = 0x10, + RLV_TYPE_ADDREM = RLV_TYPE_ADD | RLV_TYPE_REMOVE }; enum ERlvCmdRet { diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index f8241d6a79..a1db184188 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -187,7 +187,7 @@ bool RlvHandler::isException(ERlvBehaviour eBhvr, const RlvExceptionOption& varO // Checked: 2009-10-04 (RLVa-1.0.4a) | Modified: RLVa-1.0.4a bool RlvHandler::isPermissive(ERlvBehaviour eBhvr) const { - return (RlvCommand::hasStrictVariant(eBhvr)) + return (RlvBehaviourDictionary::instance().getHasStrict(eBhvr)) ? !((hasBehaviour(RLV_BHVR_PERMISSIVE)) || (isException(RLV_BHVR_PERMISSIVE, eBhvr, RLV_CHECK_PERMISSIVE))) : true; } @@ -1059,9 +1059,6 @@ BOOL RlvHandler::setEnabled(BOOL fEnable) RLV_INFOS << "Enabling Restrained Love API support - " << RlvStrings::getVersion() << RLV_ENDL; m_fEnabled = TRUE; - // Initialize the command lookup table - RlvCommand::initLookupTable(); - // Initialize static classes RlvSettings::initClass(); RlvStrings::initClass(); @@ -1938,10 +1935,10 @@ ERlvCmdRet RlvHandler::processReplyCommand(const RlvCommand& rlvCmd) const #ifdef RLV_EXTENSION_CMD_GETCOMMAND case RLV_BHVR_GETCOMMAND: // @getcommand: