diff --git a/server/core/src/main/java/dev/slimevr/trackingchecklist/TrackingChecklistManager.kt b/server/core/src/main/java/dev/slimevr/trackingchecklist/TrackingChecklistManager.kt index ebea6b63d..a39ac80a0 100644 --- a/server/core/src/main/java/dev/slimevr/trackingchecklist/TrackingChecklistManager.kt +++ b/server/core/src/main/java/dev/slimevr/trackingchecklist/TrackingChecklistManager.kt @@ -11,6 +11,7 @@ import dev.slimevr.tracking.trackers.Tracker import dev.slimevr.tracking.trackers.TrackerStatus import dev.slimevr.tracking.trackers.TrackerUtils import dev.slimevr.tracking.trackers.udp.TrackerDataType +import io.github.axisangles.ktmath.Quaternion import solarxr_protocol.datatypes.DeviceIdT import solarxr_protocol.datatypes.TrackerIdT import solarxr_protocol.rpc.* @@ -199,7 +200,8 @@ class TrackingChecklistManager(private val vrServer: VRServer) : VRCConfigListen } // We ask for a full reset if you need to do mounting calibration but cant because you haven't done full reset in a while // or if you have trackers that need reset after re-assigning - val needFullReset = (!resetMountingCompleted && !vrServer.serverGuards.canDoMounting) || trackerRequireReset.isNotEmpty() + val usingSavedCalibration = vrServer.configManager.vrConfig.resetsConfig.saveMountingReset && imuTrackers.all { it.resetsHandler.mountRotFix != Quaternion.IDENTITY } + val needFullReset = (vrServer.configManager.vrConfig.resetsConfig.lastMountingMethod == MountingMethods.AUTOMATIC && !usingSavedCalibration && !resetMountingCompleted && !vrServer.serverGuards.canDoMounting) || trackerRequireReset.isNotEmpty() updateValidity(TrackingChecklistStepId.FULL_RESET, !needFullReset) { it.enabled = imuTrackers.isNotEmpty() if (trackerRequireReset.isNotEmpty()) {