Skip to content

Commit 18f7d44

Browse files
committed
Add accelDataTick
1 parent cec9711 commit 18f7d44

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
@@ -418,6 +418,7 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker
418418
// If sensorOffset was applied to accel correctly, the axes will already
419419
// be correct for SlimeVR
420420
tracker.setAcceleration(SENSOR_OFFSET_CORRECTION.sandwich(packet.acceleration))
421+
tracker.accelDataTick()
421422
}
422423
tracker.dataTick()
423424
}
@@ -452,6 +453,7 @@ class TrackersUDPServer(private val port: Int, name: String, private val tracker
452453
// If sensorOffset was applied to accel correctly, the axes will already
453454
// be correct for SlimeVR
454455
tracker.setAcceleration(SENSOR_OFFSET_CORRECTION.sandwich(packet.acceleration))
456+
tracker.accelDataTick()
455457
}
456458

457459
is UDPPacket10PingPong -> {

0 commit comments

Comments
 (0)