Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
XDG Integration
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Silent mode is enabled
All outbound communications are blocked.
Learn more
.
Show more breadcrumbs
JennaHuntsman
XDG Integration
Commits
8c782b37
Commit
8c782b37
authored
1 year ago
by
Rye Mutt
Browse files
Options
Downloads
Patches
Plain Diff
Allow runtime toggle of RLVa
parent
6d47f6e8
No related branches found
No related tags found
2 merge requests
!3
Update to main branch
,
!2
Rebase onto current main branch
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
indra/newview/rlvcommon.cpp
+3
-2
3 additions, 2 deletions
indra/newview/rlvcommon.cpp
indra/newview/rlvhandler.cpp
+37
-22
37 additions, 22 deletions
indra/newview/rlvhandler.cpp
indra/newview/rlvhandler.h
+3
-2
3 additions, 2 deletions
indra/newview/rlvhandler.h
with
43 additions
and
26 deletions
indra/newview/rlvcommon.cpp
+
3
−
2
View file @
8c782b37
...
...
@@ -172,8 +172,9 @@ void RlvSettings::onChangedSettingMain(const LLSD& sdValue)
args
[
"[STATE]"
]
=
LLTrans
::
getString
(
(
sdValue
.
asBoolean
())
?
"RLVaToggleEnabled"
:
"RLVaToggleDisabled"
);
// As long as RLVa hasn't been enabled but >can< be enabled all toggles are instant (everything else will require a restart)
bool
fQuickToggle
=
(
!
RlvHandler
::
isEnabled
())
&&
(
RlvHandler
::
canEnable
());
LLNotificationsUtil
::
add
(
"GenericAlert"
,
LLSD
().
with
(
"MESSAGE"
,
LLTrans
::
getString
((
fQuickToggle
)
?
"RLVaToggleMessageLogin"
:
"RLVaToggleMessageRestart"
,
args
)));
LLNotificationsUtil
::
add
(
"GenericAlert"
,
LLSD
().
with
(
"MESSAGE"
,
LLTrans
::
getString
(
"RLVaToggleMessageLogin"
,
args
)));
RlvHandler
::
setEnabled
(
sdValue
.
asBoolean
());
}
void
RlvSettings
::
initCompatibilityMode
(
std
::
string
strCompatList
)
...
...
This diff is collapsed.
Click to expand it.
indra/newview/rlvhandler.cpp
+
37
−
22
View file @
8c782b37
...
...
@@ -82,6 +82,7 @@ extern BOOL gDoDisconnect;
//
bool
RlvHandler
::
m_fEnabled
=
false
;
bool
RlvHandler
::
m_fInitialized
=
false
;
rlv_handler_t
gRlvHandler
;
...
...
@@ -145,8 +146,6 @@ static bool rlvParseGetStatusOption(const std::string& strOption, std::string& s
// Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.0.1d
RlvHandler
::
RlvHandler
()
:
m_fCanCancelTp
(
true
),
m_posSitSource
(),
m_pGCTimer
(
NULL
)
{
gAgent
.
addListener
(
this
,
"new group"
);
// Array auto-initialization to 0 is still not supported in VS2013
memset
(
m_Behaviours
,
0
,
sizeof
(
S16
)
*
RLV_BHVR_COUNT
);
}
...
...
@@ -159,7 +158,7 @@ RlvHandler::~RlvHandler()
void
RlvHandler
::
cleanup
()
{
// Nothing to clean if we're not enabled (or already cleaned up)
if
(
!
m_f
Enabl
ed
)
if
(
!
m_f
Initializ
ed
)
return
;
//
...
...
@@ -197,12 +196,9 @@ void RlvHandler::cleanup()
m_PendingGroupChange
=
std
::
make_pair
(
LLUUID
::
null
,
LLStringUtil
::
null
);
}
for
(
RlvExtCommandHandler
*
pCmdHandler
:
m_CommandHandlers
)
{
delete
pCmdHandler
;
}
m_CommandHandlers
.
clear
();
m_fInitialized
=
false
;
m_fEnabled
=
false
;
}
...
...
@@ -400,39 +396,45 @@ void RlvHandler::getAttachmentResourcesCoro(const std::string strUrl)
//
// Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
void
RlvHandler
::
addCommandHandler
(
RlvExtCommandHandler
*
pCmdHandler
)
void
RlvHandler
::
addCommandHandler
(
std
::
unique_ptr
<
RlvExtCommandHandler
>
pCmdHandler
)
{
if
(
(
pCmdHandler
)
&&
(
std
::
find
(
m_CommandHandlers
.
begin
(),
m_CommandHandlers
.
end
(),
pCmdHandler
)
==
m_CommandHandlers
.
end
())
)
m_CommandHandlers
.
push_back
(
pCmdHandler
);
m_CommandHandlers
.
push_back
(
std
::
move
(
pCmdHandler
)
)
;
}
// Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
void
RlvHandler
::
removeCommandHandler
(
RlvExtCommandHandler
*
pCmdHandler
)
{
if
(
pCmdHandler
)
m_CommandHandlers
.
remove
(
pCmdHandler
);
{
for
(
auto
it
=
m_CommandHandlers
.
begin
();
it
!=
m_CommandHandlers
.
end
();
)
{
if
(
pCmdHandler
==
it
->
get
())
{
m_CommandHandlers
.
erase
(
it
);
break
;
}
else
++
it
;
}
}
}
// Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0a
void
RlvHandler
::
clearCommandHandlers
()
{
std
::
list
<
RlvExtCommandHandler
*>::
const_iterator
itHandler
=
m_CommandHandlers
.
begin
();
while
(
itHandler
!=
m_CommandHandlers
.
end
())
{
delete
*
itHandler
;
++
itHandler
;
}
m_CommandHandlers
.
clear
();
}
// Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
bool
RlvHandler
::
notifyCommandHandlers
(
rlvExtCommandHandler
f
,
const
RlvCommand
&
rlvCmd
,
ERlvCmdRet
&
eRet
,
bool
fNotifyAll
)
const
{
std
::
list
<
RlvExtCommandHandler
*>::
const_iter
ato
r
itHandler
=
m_CommandHandlers
.
begin
();
bool
fContinue
=
true
;
eRet
=
RLV_RET_UNKNOWN
;
a
u
to
itHandler
=
m_CommandHandlers
.
begin
();
bool
fContinue
=
true
;
eRet
=
RLV_RET_UNKNOWN
;
while
(
(
itHandler
!=
m_CommandHandlers
.
end
())
&&
((
fContinue
)
||
(
fNotifyAll
))
)
{
ERlvCmdRet
eCmdRet
=
RLV_RET_UNKNOWN
;
if
((
fContinue
=
!
(
(
*
itHandler
)
->*
f
)(
rlvCmd
,
eCmdRet
))
==
false
)
if
((
fContinue
=
!
(
itHandler
->
get
(
)
->*
f
)(
rlvCmd
,
eCmdRet
))
==
false
)
eRet
=
eCmdRet
;
++
itHandler
;
}
...
...
@@ -1533,17 +1535,21 @@ bool RlvHandler::setEnabled(bool fEnable)
if
(
m_fEnabled
==
fEnable
)
return
fEnable
;
if
(
(
fEnable
)
&&
(
canEnable
())
)
m_fEnabled
=
fEnable
;
if
(
m_fEnabled
&&
!
m_fInitialized
)
{
m_fInitialized
=
true
;
RLV_INFOS
<<
"Enabling Restrained Love API support - "
<<
RlvStrings
::
getVersionAbout
()
<<
RLV_ENDL
;
m_fEnabled
=
true
;
gAgent
.
addListener
(
RlvHandler
::
getInstance
(),
"new group"
);
// Initialize static classes
RlvSettings
::
initClass
();
RlvStrings
::
initClass
();
RlvHandler
::
instance
().
addCommandHandler
(
new
RlvEnvironment
());
RlvHandler
::
instance
().
addCommandHandler
(
new
RlvExtGetSet
());
RlvHandler
::
instance
().
addCommandHandler
(
std
::
make_unique
<
RlvEnvironment
>
());
RlvHandler
::
instance
().
addCommandHandler
(
std
::
make_unique
<
RlvExtGetSet
>
());
// Make sure we get notified when login is successful
if
(
LLStartUp
::
getStartupState
()
<
STATE_STARTED
)
...
...
@@ -1559,7 +1565,10 @@ bool RlvHandler::setEnabled(bool fEnable)
gSavedSettings
.
set
<
bool
>
(
RlvSettingNames
::
ShowAssertionFail
,
TRUE
);
// Set up camera debug controls
static
bool
controls_init
=
false
;
if
(
!
controls_init
)
{
controls_init
=
true
;
LLControlVariable
*
pCameraOffsetRLVaView
=
gSavedSettings
.
declareVec3
(
"CameraOffsetRLVaView"
,
LLVector3
::
zero
,
"Declared in code"
,
LLControlVariable
::
PERSIST_NO
);
pCameraOffsetRLVaView
->
setHiddenFromSettingsEditor
(
true
);
LLControlVariable
*
pCameraOffsetScaleRLVa
=
gSavedSettings
.
declareF32
(
"CameraOffsetScaleRLVa"
,
0.0
f
,
"Declared in code"
,
LLControlVariable
::
PERSIST_NO
);
...
...
@@ -1568,6 +1577,12 @@ bool RlvHandler::setEnabled(bool fEnable)
pFocusOffsetRLVaView
->
setHiddenFromSettingsEditor
(
true
);
}
}
else
if
(
!
m_fEnabled
)
{
RlvHandler
::
instance
().
cleanup
();
}
rlvMenuToggleVisible
();
return
m_fEnabled
;
}
...
...
This diff is collapsed.
Click to expand it.
indra/newview/rlvhandler.h
+
3
−
2
View file @
8c782b37
...
...
@@ -161,7 +161,7 @@ class RlvHandler : public LLOldEvents::LLSimpleListener, public LLParticularGrou
typedef
boost
::
signals2
::
signal
<
void
(
const
RlvCommand
&
,
ERlvCmdRet
,
bool
)
>
rlv_command_signal_t
;
boost
::
signals2
::
connection
setCommandCallback
(
const
rlv_command_signal_t
::
slot_type
&
cb
)
{
return
m_OnCommand
.
connect
(
cb
);
}
void
addCommandHandler
(
RlvExtCommandHandler
*
pHandler
);
void
addCommandHandler
(
std
::
unique_ptr
<
RlvExtCommandHandler
>
pHandler
);
void
removeCommandHandler
(
RlvExtCommandHandler
*
pHandler
);
protected
:
void
clearCommandHandlers
();
...
...
@@ -258,12 +258,13 @@ class RlvHandler : public LLOldEvents::LLSimpleListener, public LLParticularGrou
rlv_behaviour_signal_t
m_OnBehaviour
;
rlv_behaviour_signal_t
m_OnBehaviourToggle
;
rlv_command_signal_t
m_OnCommand
;
mutable
std
::
list
<
RlvExtCommandHandler
*
>
m_CommandHandlers
;
mutable
std
::
list
<
std
::
unique_ptr
<
RlvExtCommandHandler
>
>
m_CommandHandlers
;
boost
::
signals2
::
scoped_connection
m_ExperienceEventConn
;
boost
::
signals2
::
scoped_connection
m_TeleportFailedConn
;
boost
::
signals2
::
scoped_connection
m_TeleportFinishedConn
;
static
bool
m_fEnabled
;
// Use setEnabled() to toggle this
static
bool
m_fInitialized
;
// Use setEnabled() to toggle this
bool
m_fCanCancelTp
;
// @accepttp=n and @tpto=force
mutable
LLVector3d
m_posSitSource
;
// @standtp=n (mutable because onForceXXX handles are all declared as const)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment