summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2025-06-24 18:22:48 -0400
committerGitHub <noreply@github.com>2025-06-24 18:22:48 -0400
commit43c156084bbeeaa3bd7c06b5e4f3118e335f777d (patch)
treeb62f5bcd114796794d182422569f7f438e631877 /Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
parente9b57393a6531c946f9dd43674559b32465b2727 (diff)
parent6a0963908dbb316f00818822065e26777621bdcc (diff)
Merge pull request #13759 from jordan-woyak/calibrate-autocomplete
DolphinQt: Make Calibration autocomplete when data is "sensible" and stick is returned to neutral position.
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp')
-rw-r--r--Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp b/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
index 2852291021..8b8a22e400 100644
--- a/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
+++ b/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
@@ -5,6 +5,7 @@
#include <algorithm>
#include <chrono>
+#include <cmath>
#include <ranges>
#include <string>
#include <vector>
@@ -277,6 +278,16 @@ bool CalibrationBuilder::IsCalibrationDataSensible() const
return stats.StandardDeviation() < REASONABLE_DEVIATION;
}
+bool CalibrationBuilder::IsComplete() const
+{
+ if (!IsCalibrationDataSensible())
+ return false;
+
+ const auto half_calibration =
+ 0.5 * GetCalibrationRadiusAtAngle(std::atan2(m_prev_point.y, m_prev_point.x) + MathUtil::TAU);
+ return m_prev_point.LengthSquared() < (half_calibration * half_calibration);
+}
+
ControlState CalibrationBuilder::GetCalibrationRadiusAtAngle(double angle) const
{
return ControllerEmu::ReshapableInput::GetCalibrationDataRadiusAtAngle(m_calibration_data, angle);