diff --git a/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt b/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt index c90414dd65..1bf177967c 100644 --- a/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt +++ b/server/core/src/main/java/dev/slimevr/tracking/trackers/TrackerResetsHandler.kt @@ -215,14 +215,17 @@ class TrackerResetsHandler(val tracker: Tracker) { */ fun resetFull(reference: Quaternion) { if (tracker.trackerDataType == TrackerDataType.FLEX_RESISTANCE) { + tracker.resetFilteringQuats() tracker.trackerFlexHandler.resetMin() - postProcessResetFull() + clearRequireResetStatus() return } else if (tracker.trackerDataType == TrackerDataType.FLEX_ANGLE) { - postProcessResetFull() return } + // Reset the tracking of temporality before the reset + tracker.resetFilteringQuats() + // Adjust for T-Pose (down) tposeDownFix = if (((isLeftArmTracker() || isLeftFingerTracker()) && armsResetMode == ArmsResetModes.TPOSE_DOWN)) { EulerAngles(EulerOrder.YZX, 0f, 0f, -FastMath.HALF_PI).toQuaternion() @@ -286,16 +289,14 @@ class TrackerResetsHandler(val tracker: Tracker) { calculateDrift(oldRot) - postProcessResetFull() + clearRequireResetStatus() } - private fun postProcessResetFull() { + private fun clearRequireResetStatus() { if (this.tracker.lastResetStatus != 0u) { VRServer.instance.statusSystem.removeStatus(this.tracker.lastResetStatus) this.tracker.lastResetStatus = 0u } - - tracker.resetFilteringQuats() } /** @@ -311,6 +312,9 @@ class TrackerResetsHandler(val tracker: Tracker) { return } + // Reset the tracking of temporality before the reset + tracker.resetFilteringQuats() + // Old rot for drift compensation val oldRot = adjustToReference(tracker.getRawRotation()) lastResetQuaternion = oldRot @@ -336,8 +340,6 @@ class TrackerResetsHandler(val tracker: Tracker) { this.tracker.statusResetRecently = false this.tracker.lastResetStatus = 0u } - - tracker.resetFilteringQuats() } /** @@ -347,11 +349,8 @@ class TrackerResetsHandler(val tracker: Tracker) { fun resetMounting(reference: Quaternion) { if (tracker.trackerDataType == TrackerDataType.FLEX_RESISTANCE) { tracker.trackerFlexHandler.resetMax() - tracker.resetFilteringQuats() return - } else if (tracker.trackerDataType == TrackerDataType.FLEX_ANGLE) { - return - } else if (!resetMountingFeet && isFootTracker()) { + } else if (tracker.trackerDataType == TrackerDataType.FLEX_ANGLE || (!resetMountingFeet && isFootTracker())) { return } @@ -399,8 +398,6 @@ class TrackerResetsHandler(val tracker: Tracker) { // save mounting reset if (saveMountingReset) tracker.saveMountingResetOrientation(mountRotFix) - - tracker.resetFilteringQuats() } fun clearMounting() {