summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2019-10-17 17:35:30 -0400
committerGitHub <noreply@github.com>2019-10-17 17:35:30 -0400
commit8bc0a92f2cbf7bd7683bd95cb7c92e0e97287faf (patch)
tree181d622aa609748673e4533d674ca487f1eb6f6f /Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
parentacf9bd5ebeadfa7f1b11d39e0384a78093c43f27 (diff)
parent7295458c11e1465c9e0a823620ea935396c4ea39 (diff)
Merge pull request #7663 from jordan-woyak/expression-parser-improve
Expression parser improvements
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
index de0579a2b2..c5ff0705a2 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
@@ -38,23 +38,38 @@ std::unique_lock<std::recursive_mutex> EmulatedController::GetStateLock()
void EmulatedController::UpdateReferences(const ControllerInterface& devi)
{
- const auto lock = GetStateLock();
m_default_device_is_connected = devi.HasConnectedDevice(m_default_device);
+ ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars);
+
+ UpdateReferences(env);
+}
+
+void EmulatedController::UpdateReferences(ciface::ExpressionParser::ControlEnvironment& env)
+{
+ const auto lock = GetStateLock();
+
for (auto& ctrlGroup : groups)
{
for (auto& control : ctrlGroup->controls)
- control->control_ref.get()->UpdateReference(devi, GetDefaultDevice());
+ control->control_ref->UpdateReference(env);
// Attachments:
if (ctrlGroup->type == GroupType::Attachments)
{
for (auto& attachment : static_cast<Attachments*>(ctrlGroup.get())->GetAttachmentList())
- attachment->UpdateReferences(devi);
+ attachment->UpdateReferences(env);
}
}
}
+void EmulatedController::UpdateSingleControlReference(const ControllerInterface& devi,
+ ControlReference* ref)
+{
+ ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars);
+ ref->UpdateReference(env);
+}
+
bool EmulatedController::IsDefaultDeviceConnected() const
{
return m_default_device_is_connected;