Add extra gyro calibration step, increase calibration time (#1875)

Give players time to place gamepad on a flat surface.
This commit is contained in:
ceski 2024-09-02 00:07:38 -07:00 committed by GitHub
parent 0514102a8d
commit 55a65d98dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 4 deletions

View File

@ -224,7 +224,12 @@ void I_UpdateGyroCalibrationState(void)
switch (cal.state)
{
case GYRO_CALIBRATION_INACTIVE:
if (!motion.calibrating)
cal.state = GYRO_CALIBRATION_STARTING;
cal.start_time = I_GetTimeMS();
break;
case GYRO_CALIBRATION_STARTING:
if (I_GetTimeMS() - cal.start_time > 1500)
{
motion.calibrating = true;
ClearGyroCalibration();
@ -234,7 +239,7 @@ void I_UpdateGyroCalibrationState(void)
break;
case GYRO_CALIBRATION_ACTIVE:
if (I_GetTimeMS() - cal.start_time > 1000)
if (I_GetTimeMS() - cal.start_time > 3000)
{
motion.calibrating = false;
PostProcessCalibration();
@ -244,7 +249,7 @@ void I_UpdateGyroCalibrationState(void)
break;
case GYRO_CALIBRATION_COMPLETE:
if (I_GetTimeMS() - cal.finish_time > 1000)
if (I_GetTimeMS() - cal.finish_time > 1500)
{
cal.state = GYRO_CALIBRATION_INACTIVE;
}

View File

@ -38,6 +38,7 @@ extern float gyro_axes[NUM_GYRO_AXES]; // Calculated gyro values.
typedef enum gyro_calibration_state_e
{
GYRO_CALIBRATION_INACTIVE,
GYRO_CALIBRATION_STARTING,
GYRO_CALIBRATION_ACTIVE,
GYRO_CALIBRATION_COMPLETE,
} gyro_calibration_state_t;

View File

@ -1091,8 +1091,13 @@ static void DrawGyroCalibration(void)
case GYRO_CALIBRATION_INACTIVE:
break;
case GYRO_CALIBRATION_ACTIVE:
case GYRO_CALIBRATION_STARTING:
block_input = true;
DrawNotification("Starting calibration...", CR_GRAY);
I_UpdateGyroCalibrationState();
break;
case GYRO_CALIBRATION_ACTIVE:
DrawNotification("Calibrating, please wait...", CR_GRAY);
I_UpdateGyroCalibrationState();
break;