diff --git a/gui/src/components/tracker/TrackerCard.tsx b/gui/src/components/tracker/TrackerCard.tsx index a5e63d0a1..995abb56f 100644 --- a/gui/src/components/tracker/TrackerCard.tsx +++ b/gui/src/components/tracker/TrackerCard.tsx @@ -100,7 +100,9 @@ function TrackerSmol({ 'border-[3px] border-opacity-80 rounded-md overflow-clip', { 'border-status-warning': warning, - 'border-transparent': !warning, + 'border-transparent': + !warning && !tracker.accelRecordingInProgress, + 'border-status-recording': tracker.accelRecordingInProgress, } )} > diff --git a/gui/src/components/tracker/TrackersTable.tsx b/gui/src/components/tracker/TrackersTable.tsx index b8ef08d0c..45ece341d 100644 --- a/gui/src/components/tracker/TrackersTable.tsx +++ b/gui/src/components/tracker/TrackersTable.tsx @@ -60,7 +60,9 @@ export function TrackerNameCell({ 'border-[2px] border-opacity-80 rounded-md overflow-clip', { 'border-status-warning': warning, - 'border-transparent': !warning, + 'border-transparent': + !warning && !tracker.accelRecordingInProgress, + 'border-status-recording': tracker.accelRecordingInProgress, } )} > diff --git a/gui/src/hooks/datafeed-config.ts b/gui/src/hooks/datafeed-config.ts index 0bf7337b9..4e807b02d 100644 --- a/gui/src/hooks/datafeed-config.ts +++ b/gui/src/hooks/datafeed-config.ts @@ -19,6 +19,7 @@ export function useDataFeedConfig() { trackerData.tps = true; trackerData.rawMagneticVector = true; trackerData.stayAligned = true; + trackerData.accelRecordingInProgress = true; const dataMask = new DeviceDataMaskT(); dataMask.deviceData = true; diff --git a/gui/src/index.scss b/gui/src/index.scss index cdfad8519..6360c9cbb 100644 --- a/gui/src/index.scss +++ b/gui/src/index.scss @@ -95,6 +95,7 @@ body { --warning: 255, 225, 53; --critical: 223, 109, 140; --special: 164, 79, 237; + --recording: 255, 84, 84; --window-icon-stroke: 192, 161, 216; --default-color: 255, 255, 255; diff --git a/gui/tailwind.config.ts b/gui/tailwind.config.ts index 07004e88c..05200fae4 100644 --- a/gui/tailwind.config.ts +++ b/gui/tailwind.config.ts @@ -191,6 +191,7 @@ const config = { warning: 'rgb(var(--warning), )', critical: 'rgb(var(--critical), )', special: 'rgb(var(--special), )', + recording: 'rgb(var(--recording), )', }, window: { icon: 'rgb(var(--window-icon-stroke), )', diff --git a/server/core/src/main/java/dev/slimevr/protocol/datafeed/DataFeedBuilder.kt b/server/core/src/main/java/dev/slimevr/protocol/datafeed/DataFeedBuilder.kt index 8d1f2cb67..652d1f53e 100644 --- a/server/core/src/main/java/dev/slimevr/protocol/datafeed/DataFeedBuilder.kt +++ b/server/core/src/main/java/dev/slimevr/protocol/datafeed/DataFeedBuilder.kt @@ -275,6 +275,9 @@ fun createTrackerData( if (mask.stayAligned) { TrackerData.addStayAligned(fbb, stayAlignedOffset) } + if (mask.accelRecordingInProgress) { + TrackerData.addAccelRecordingInProgress(fbb, tracker.accelMountInProgress) + } return TrackerData.endTrackerData(fbb) } diff --git a/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt b/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt index f15a145db..1d5c338ad 100644 --- a/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt +++ b/server/core/src/main/java/dev/slimevr/tracking/trackers/Tracker.kt @@ -296,7 +296,7 @@ class Tracker @JvmOverloads constructor( val lastSamples = CircularArrayList(8) var curTimeline: AccelTimeline? = null - var resetNext = false + var accelMountInProgress = false fun accumSample(accum: AccelAccumulator, sample: AccelSample, lastSampleTime: Long = -1, accelBias: Vector3 = Vector3.NULL): Float { val delta = if (lastSampleTime >= 0) { @@ -356,7 +356,7 @@ class Tracker @JvmOverloads constructor( } fun startMounting() { - resetNext = true + accelMountInProgress = true startTime = System.currentTimeMillis() } @@ -371,7 +371,7 @@ class Tracker @JvmOverloads constructor( filteringHandler.dataTick(getAdjustedRotation()) } - if (resetNext) { + if (accelMountInProgress) { lastFrameRest = curFrameRest val accel = getAcceleration() @@ -447,7 +447,7 @@ class Tracker @JvmOverloads constructor( LogManager.info("[Accel] Tracker $id (${trackerPosition?.designation}):\nTracker: $trackerOff\nHmd: $hmdOff\nErr: ${tracker.len() - hmd.len()}\nResult: $mountVec ($mountText)") resetsHandler.mountRotFix *= mountRot - resetNext = false + accelMountInProgress = false } curTimeline = null } else {