summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
index a9c5844b48..498586a9f2 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControllerEmu.cpp
@@ -44,6 +44,8 @@ void EmulatedController::UpdateReferences(const ControllerInterface& devi)
ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars);
UpdateReferences(env);
+
+ env.CleanUnusedVariables();
}
void EmulatedController::UpdateReferences(ciface::ExpressionParser::ControlEnvironment& env)
@@ -75,7 +77,27 @@ void EmulatedController::UpdateSingleControlReference(const ControllerInterface&
ControlReference* ref)
{
ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars);
+
ref->UpdateReference(env);
+
+ env.CleanUnusedVariables();
+}
+
+const ciface::ExpressionParser::ControlEnvironment::VariableContainer&
+EmulatedController::GetExpressionVariables() const
+{
+ return m_expression_vars;
+}
+
+void EmulatedController::ResetExpressionVariables()
+{
+ for (auto& var : m_expression_vars)
+ {
+ if (var.second)
+ {
+ *var.second = 0;
+ }
+ }
}
bool EmulatedController::IsDefaultDeviceConnected() const