Skip to content

Commit 3b53e18

Browse files
committed
Add accelDataTick
1 parent 18fbe15 commit 3b53e18

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ class Tracker @JvmOverloads constructor(
176176
val stayAligned = StayAlignedTrackerState(this)
177177
val yawResetSmoothing = InterpolationHandler()
178178

179+
// Currently only used for accel resets, to add anything else, consider using a
180+
// subscribable event listener instead
181+
var accelTickCallback: ((tracker: Tracker) -> Unit)? = null
182+
179183
init {
180184
// IMPORTANT: Look here for the required states of inputs
181185
require(!allowReset || (hasRotation && allowReset)) {
@@ -485,6 +489,13 @@ class Tracker @JvmOverloads constructor(
485489
}
486490
}
487491

492+
/**
493+
* Tells the tracker that it received new accel data
494+
* Accel may be (and usually is) desynced from rotation data, so if we want the
495+
* latest, we need to process it here
496+
*/
497+
fun accelDataTick() = accelTickCallback?.invoke(this)
498+
488499
/**
489500
* A way to delay the timeout of the tracker
490501
*/

server/core/src/main/java/dev/slimevr/tracking/trackers/hid/HIDCommon.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,9 @@ class HIDCommon {
364364
if (packetType == 1 || packetType == 2 || packetType == 4 || packetType == 7) {
365365
tracker.dataTick() // only data tick if there is rotation data
366366
}
367+
if (packetType == 1 || packetType == 2 || packetType == 7) {
368+
tracker.accelDataTick()
369+
}
367370
}
368371
}
369372
}

server/core/src/main/java/dev/slimevr/tracking/trackers/udp/TrackersUDPServer.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker
420420
// If sensorOffset was applied to accel correctly, the axes will already
421421
// be correct for SlimeVR
422422
tracker.setAcceleration(SENSOR_OFFSET_CORRECTION.sandwich(packet.acceleration))
423+
tracker.accelDataTick()
423424
}
424425
tracker.dataTick()
425426
}
@@ -454,6 +455,7 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker
454455
// If sensorOffset was applied to accel correctly, the axes will already
455456
// be correct for SlimeVR
456457
tracker.setAcceleration(SENSOR_OFFSET_CORRECTION.sandwich(packet.acceleration))
458+
tracker.accelDataTick()
457459
}
458460

459461
is UDPPacket10PingPong -> {

0 commit comments

Comments
 (0)