Skip to content

Commit 5ff2677

Browse files
committed
Add Velocity data send via ProtobufBridge. Update ProtobufMessages to latest definition from the Driver's main branch.
1 parent 1ba2bca commit 5ff2677

2 files changed

Lines changed: 446 additions & 41 deletions

File tree

server/desktop/src/main/java/dev/slimevr/desktop/platform/ProtobufBridge.kt

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ abstract class ProtobufBridge(@JvmField protected val bridgeName: String) : ISte
8282
target.position = source.position
8383
target.setRotation(source.getRotation())
8484
target.status = source.status
85+
target.setVelocity(source.getVelocity())
8586
target.batteryLevel = source.batteryLevel
8687
target.batteryVoltage = source.batteryVoltage
8788
target.dataTick()
@@ -103,23 +104,38 @@ abstract class ProtobufBridge(@JvmField protected val bridgeName: String) : ISte
103104

104105
@VRServerThread
105106
protected fun writeTrackerUpdate(localTracker: Tracker?) {
106-
val builder = ProtobufMessages.Position.newBuilder().setTrackerId(
107-
localTracker!!.id,
108-
)
109-
if (localTracker.hasPosition) {
110-
val pos = localTracker.position
107+
val tracker = localTracker ?: return
108+
109+
val builder = ProtobufMessages.Position.newBuilder()
110+
.setTrackerId(tracker.id)
111+
112+
if (tracker.hasPosition) {
113+
val pos = tracker.position
111114
builder.setX(pos.x)
112115
builder.setY(pos.y)
113116
builder.setZ(pos.z)
114117
}
115-
if (localTracker.hasRotation) {
116-
val rot = localTracker.getRotation()
118+
119+
if (tracker.hasRotation) {
120+
val rot = tracker.getRotation()
117121
builder.setQx(rot.x)
118122
builder.setQy(rot.y)
119123
builder.setQz(rot.z)
120124
builder.setQw(rot.w)
121125
}
122-
sendMessage(ProtobufMessage.newBuilder().setPosition(builder).build())
126+
127+
if (tracker.allowVelocity) {
128+
val vel = tracker.getVelocity()
129+
builder.setVx(vel.x)
130+
builder.setVy(vel.y)
131+
builder.setVz(vel.z)
132+
}
133+
134+
sendMessage(
135+
ProtobufMessage.newBuilder()
136+
.setPosition(builder)
137+
.build(),
138+
)
123139
}
124140

125141
@VRServerThread
@@ -169,6 +185,16 @@ abstract class ProtobufBridge(@JvmField protected val bridgeName: String) : ISte
169185
),
170186

171187
)
188+
if (positionMessage.hasVx()) {
189+
tracker
190+
.setVelocity(
191+
Vector3(
192+
positionMessage.vx,
193+
positionMessage.vy,
194+
positionMessage.vz,
195+
),
196+
)
197+
}
172198
tracker.dataTick()
173199
}
174200
}

0 commit comments

Comments
 (0)