summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2025-05-29 23:28:16 -0500
committerJordan Woyak <jordan.woyak@gmail.com>2025-06-24 02:18:25 -0500
commit6a0963908dbb316f00818822065e26777621bdcc (patch)
tree44674635dc36ed3d1fc69f0877883a5d86130f2a /Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
parentfa9f71e48232e054605e721266c90cb106ca6924 (diff)
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);