Skip to content

Commit

Permalink
don't toggle trackers if tracking is paused (#1013)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erimelowo committed Apr 29, 2024
1 parent 046be5f commit 18fcb80
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 5 deletions.
18 changes: 16 additions & 2 deletions server/core/src/main/java/dev/slimevr/VRServer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -308,12 +308,26 @@ class VRServer @JvmOverloads constructor(
queueTask { humanPoseManager.clearTrackersMounting(resetSourceName) }
}

fun getPauseTracking(): Boolean = humanPoseManager.getPauseTracking()

fun setPauseTracking(pauseTracking: Boolean, sourceName: String?) {
queueTask { humanPoseManager.setPauseTracking(pauseTracking, sourceName) }
queueTask {
humanPoseManager.setPauseTracking(pauseTracking, sourceName)
// Toggle trackers as they don't toggle when tracking is paused
if (this.getVRBridge(ISteamVRBridge::class.java)?.updateShareSettingsAutomatically() == true) {
RPCSettingsHandler.sendSteamVRUpdatedSettings(protocolAPI, protocolAPI.rpcHandler)
}
}
}

fun togglePauseTracking(sourceName: String?) {
queueTask { humanPoseManager.togglePauseTracking(sourceName) }
queueTask {
humanPoseManager.togglePauseTracking(sourceName)
// Toggle trackers as they don't toggle when tracking is paused
if (this.getVRBridge(ISteamVRBridge::class.java)?.updateShareSettingsAutomatically() == true) {
RPCSettingsHandler.sendSteamVRUpdatedSettings(protocolAPI, protocolAPI.rpcHandler)
}
}
}

fun scheduleResetTrackersFull(resetSourceName: String?, delay: Long) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ class RPCHandler(private val api: ProtocolAPI) : ProtocolHandler<RpcMessageHeade
val req = messageHeader
.message(SetPauseTrackingRequest()) as? SetPauseTrackingRequest ?: return

api.server.humanPoseManager.setPauseTracking(req.pauseTracking(), RESET_SOURCE_NAME)
api.server.setPauseTracking(req.pauseTracking(), RESET_SOURCE_NAME)
}

fun onHeightRequest(conn: GenericConnection, messageHeader: RpcMessageHeader?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,8 @@ class HumanPoseManager(val server: VRServer?) {
get() = skeletonConfigManager.userHeightFromOffsets

// #endregion
fun getPauseTracking(): Boolean = skeleton.getPauseTracking()

fun setPauseTracking(pauseTracking: Boolean, sourceName: String?) {
skeleton.setPauseTracking(pauseTracking, sourceName)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import solarxr_protocol.rpc.StatusDataUnion
import solarxr_protocol.rpc.StatusSteamVRDisconnectedT

abstract class SteamVRBridge(
server: VRServer,
protected val server: VRServer,
threadName: String,
bridgeName: String,
protected val bridgeSettingsKey: String,
Expand Down Expand Up @@ -53,7 +53,9 @@ abstract class SteamVRBridge(
}

override fun updateShareSettingsAutomatically(): Boolean {
if (!config.automaticSharedTrackersToggling) return false
// Return false if automatic trackers is disabled or if tracking is paused
if (!config.automaticSharedTrackersToggling || server.getPauseTracking()) return false

val skeleton = instance.humanPoseManager.skeleton
val isWaistSteamVr = skeleton.hipTracker?.device?.isOpenVrDevice == true ||
skeleton.waistTracker?.device?.isOpenVrDevice == true
Expand Down Expand Up @@ -110,6 +112,7 @@ abstract class SteamVRBridge(
changeShareSettings(TrackerRole.RIGHT_ELBOW, hasRightElbow && !isRightElbowSteamVr)

// Hands aren't touched as they will override the controller's tracking
// Return true to say that trackers were successfully toggled automatically
return true
}

Expand Down

0 comments on commit 18fcb80

Please sign in to comment.