Skip to content

Commit d63c099

Browse files
committed
Sync
1 parent 26871af commit d63c099

32 files changed

+339
-255
lines changed

server/core/src/main/java/dev/slimevr/autobone/errors/BodyProportionError.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class BodyProportionError : IAutoBoneError {
4242

4343
// "Expected" are values from Drillis and Contini (1966)
4444
// Default are values from experimentation by the SlimeVR community
45+
4546
/**
4647
* Proportions are based off the headset height (or eye height), not the total height of the user.
4748
* To use the total height of the user, multiply it by [eyeHeightToHeightRatio] and use that in the limiters.

server/core/src/main/java/dev/slimevr/autobone/errors/SlideError.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ class SlideError : IAutoBoneError {
2020
return (
2121
getSlideError(skeleton1, skeleton2, BoneType.LEFT_LOWER_LEG) +
2222
getSlideError(skeleton1, skeleton2, BoneType.RIGHT_LOWER_LEG)
23-
) / 2f
23+
) /
24+
2f
2425
}
2526

2627
fun getSlideError(

server/core/src/main/java/dev/slimevr/math/Angle.kt

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,38 @@ import kotlin.math.*
1111
@JvmInline
1212
value class Angle(private val rad: Float) {
1313

14-
fun toRad() =
15-
rad
14+
fun toRad() = rad
1615

17-
fun toDeg() =
18-
rad * FastMath.RAD_TO_DEG
16+
fun toDeg() = rad * FastMath.RAD_TO_DEG
1917

20-
operator fun unaryPlus() =
21-
this
18+
operator fun unaryPlus() = this
2219

23-
operator fun unaryMinus() =
24-
Angle(normalize(-rad))
20+
operator fun unaryMinus() = Angle(normalize(-rad))
2521

26-
operator fun plus(other: Angle) =
27-
Angle(normalize(rad + other.rad))
22+
operator fun plus(other: Angle) = Angle(normalize(rad + other.rad))
2823

29-
operator fun minus(other: Angle) =
30-
Angle(normalize(rad - other.rad))
24+
operator fun minus(other: Angle) = Angle(normalize(rad - other.rad))
3125

32-
operator fun times(scale: Float) =
33-
Angle(normalize(rad * scale))
26+
operator fun times(scale: Float) = Angle(normalize(rad * scale))
3427

35-
operator fun div(scale: Float) =
36-
Angle(normalize(rad / scale))
28+
operator fun div(scale: Float) = Angle(normalize(rad / scale))
3729

38-
operator fun compareTo(other: Angle) =
39-
rad.compareTo(other.rad)
30+
operator fun compareTo(other: Angle) = rad.compareTo(other.rad)
4031

41-
override fun toString() =
42-
"${toDeg()} deg"
32+
override fun toString() = "${toDeg()} deg"
4333

4434
companion object {
4535
val ZERO = Angle(0.0f)
4636

47-
fun ofRad(rad: Float) =
48-
Angle(normalize(rad))
37+
fun ofRad(rad: Float) = Angle(normalize(rad))
4938

50-
fun ofDeg(deg: Float) =
51-
Angle(normalize(deg * FastMath.DEG_TO_RAD))
39+
fun ofDeg(deg: Float) = Angle(normalize(deg * FastMath.DEG_TO_RAD))
5240

5341
// Angle between two vectors
54-
fun absBetween(a: Vector3, b: Vector3) =
55-
Angle(normalize(a.angleTo(b)))
42+
fun absBetween(a: Vector3, b: Vector3) = Angle(normalize(a.angleTo(b)))
5643

5744
// Angle between two rotations in rotation space
58-
fun absBetween(a: Quaternion, b: Quaternion) =
59-
Angle(normalize(a.angleToR(b)))
45+
fun absBetween(a: Quaternion, b: Quaternion) = Angle(normalize(a.angleToR(b)))
6046

6147
/**
6248
* Normalizes an angle to [-PI, PI)

server/core/src/main/java/dev/slimevr/math/AngleAverage.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ class AngleAverage {
2323
/**
2424
* Gets the average angle.
2525
*/
26-
fun toAngle(): Angle =
27-
if (isEmpty()) {
28-
Angle.ZERO
29-
} else {
30-
Angle.ofRad(atan2(sumY, sumX))
31-
}
26+
fun toAngle(): Angle = if (isEmpty()) {
27+
Angle.ZERO
28+
} else {
29+
Angle.ofRad(atan2(sumY, sumX))
30+
}
3231

3332
/**
3433
* Whether there are any angles to average.
3534
*/
36-
fun isEmpty() =
37-
sumX == 0.0f && sumY == 0.0f
35+
fun isEmpty() = sumX == 0.0f && sumY == 0.0f
3836
}

server/core/src/main/java/dev/slimevr/math/AngleErrors.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ class AngleErrors {
1010
sumSqrErrors += error.toRad() * error.toRad()
1111
}
1212

13-
fun toL2Norm() =
14-
Angle.ofRad(sqrt(sumSqrErrors))
13+
fun toL2Norm() = Angle.ofRad(sqrt(sumSqrErrors))
1514
}

server/core/src/main/java/dev/slimevr/osc/UnityArmature.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ class UnityArmature(localRot: Boolean) {
216216
val hipsAverage = (
217217
leftHipNode.worldTransform.translation +
218218
rightHipNode.worldTransform.translation
219-
) * 0.5f
219+
) *
220+
0.5f
220221
node.worldTransform.translation * 2f - hipsAverage + rootPosition
221222
} else {
222223
node.worldTransform.translation + rootPosition
@@ -233,7 +234,8 @@ class UnityArmature(localRot: Boolean) {
233234
val hipsAverage = (
234235
leftHipNode.worldTransform.translation +
235236
rightHipNode.worldTransform.translation
236-
) * 0.5f
237+
) *
238+
0.5f
237239
node.worldTransform.translation * 2f - hipsAverage + rootPosition
238240
} else {
239241
node.localTransform.translation

server/core/src/main/java/dev/slimevr/osc/UnityBone.kt

Lines changed: 78 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -244,51 +244,103 @@ enum class UnityBone(
244244
/**
245245
* Returns true if the bone is part of the left arm (incl. fingers, excl. shoulder)
246246
*/
247-
fun isLeftArmBone(bone: UnityBone): Boolean = bone == LEFT_UPPER_ARM || bone == LEFT_LOWER_ARM || bone == LEFT_HAND ||
248-
bone == LEFT_THUMB_PROXIMAL || bone == LEFT_THUMB_INTERMEDIATE || bone == LEFT_THUMB_DISTAL ||
249-
bone == LEFT_INDEX_PROXIMAL || bone == LEFT_INDEX_INTERMEDIATE || bone == LEFT_INDEX_DISTAL ||
250-
bone == LEFT_MIDDLE_PROXIMAL || bone == LEFT_MIDDLE_INTERMEDIATE || bone == LEFT_MIDDLE_DISTAL ||
251-
bone == LEFT_RING_PROXIMAL || bone == LEFT_RING_INTERMEDIATE || bone == LEFT_RING_DISTAL ||
252-
bone == LEFT_LITTLE_PROXIMAL || bone == LEFT_LITTLE_INTERMEDIATE || bone == LEFT_LITTLE_DISTAL
247+
fun isLeftArmBone(bone: UnityBone): Boolean = bone == LEFT_UPPER_ARM ||
248+
bone == LEFT_LOWER_ARM ||
249+
bone == LEFT_HAND ||
250+
bone == LEFT_THUMB_PROXIMAL ||
251+
bone == LEFT_THUMB_INTERMEDIATE ||
252+
bone == LEFT_THUMB_DISTAL ||
253+
bone == LEFT_INDEX_PROXIMAL ||
254+
bone == LEFT_INDEX_INTERMEDIATE ||
255+
bone == LEFT_INDEX_DISTAL ||
256+
bone == LEFT_MIDDLE_PROXIMAL ||
257+
bone == LEFT_MIDDLE_INTERMEDIATE ||
258+
bone == LEFT_MIDDLE_DISTAL ||
259+
bone == LEFT_RING_PROXIMAL ||
260+
bone == LEFT_RING_INTERMEDIATE ||
261+
bone == LEFT_RING_DISTAL ||
262+
bone == LEFT_LITTLE_PROXIMAL ||
263+
bone == LEFT_LITTLE_INTERMEDIATE ||
264+
bone == LEFT_LITTLE_DISTAL
253265

254266
/**
255267
* Returns true if the bone is part of the right arm (incl. fingers, excl. shoulder)
256268
*/
257-
fun isRightArmBone(bone: UnityBone): Boolean = bone == RIGHT_UPPER_ARM || bone == RIGHT_LOWER_ARM || bone == RIGHT_HAND ||
258-
bone == RIGHT_THUMB_PROXIMAL || bone == RIGHT_THUMB_INTERMEDIATE || bone == RIGHT_THUMB_DISTAL ||
259-
bone == RIGHT_INDEX_PROXIMAL || bone == RIGHT_INDEX_INTERMEDIATE || bone == RIGHT_INDEX_DISTAL ||
260-
bone == RIGHT_MIDDLE_PROXIMAL || bone == RIGHT_MIDDLE_INTERMEDIATE || bone == RIGHT_MIDDLE_DISTAL ||
261-
bone == RIGHT_RING_PROXIMAL || bone == RIGHT_RING_INTERMEDIATE || bone == RIGHT_RING_DISTAL ||
262-
bone == RIGHT_LITTLE_PROXIMAL || bone == RIGHT_LITTLE_INTERMEDIATE || bone == RIGHT_LITTLE_DISTAL
269+
fun isRightArmBone(bone: UnityBone): Boolean = bone == RIGHT_UPPER_ARM ||
270+
bone == RIGHT_LOWER_ARM ||
271+
bone == RIGHT_HAND ||
272+
bone == RIGHT_THUMB_PROXIMAL ||
273+
bone == RIGHT_THUMB_INTERMEDIATE ||
274+
bone == RIGHT_THUMB_DISTAL ||
275+
bone == RIGHT_INDEX_PROXIMAL ||
276+
bone == RIGHT_INDEX_INTERMEDIATE ||
277+
bone == RIGHT_INDEX_DISTAL ||
278+
bone == RIGHT_MIDDLE_PROXIMAL ||
279+
bone == RIGHT_MIDDLE_INTERMEDIATE ||
280+
bone == RIGHT_MIDDLE_DISTAL ||
281+
bone == RIGHT_RING_PROXIMAL ||
282+
bone == RIGHT_RING_INTERMEDIATE ||
283+
bone == RIGHT_RING_DISTAL ||
284+
bone == RIGHT_LITTLE_PROXIMAL ||
285+
bone == RIGHT_LITTLE_INTERMEDIATE ||
286+
bone == RIGHT_LITTLE_DISTAL
263287

264288
/**
265289
* Returns true if the bone is the left upper arm or proximal left finger bone
266290
*/
267-
fun isLeftStartOfArmOrFingerBone(bone: UnityBone): Boolean = bone == LEFT_UPPER_ARM || bone == LEFT_THUMB_PROXIMAL ||
268-
bone == LEFT_INDEX_PROXIMAL || bone == LEFT_MIDDLE_PROXIMAL || bone == LEFT_RING_PROXIMAL || bone == LEFT_LITTLE_PROXIMAL
291+
fun isLeftStartOfArmOrFingerBone(bone: UnityBone): Boolean = bone == LEFT_UPPER_ARM ||
292+
bone == LEFT_THUMB_PROXIMAL ||
293+
bone == LEFT_INDEX_PROXIMAL ||
294+
bone == LEFT_MIDDLE_PROXIMAL ||
295+
bone == LEFT_RING_PROXIMAL ||
296+
bone == LEFT_LITTLE_PROXIMAL
269297

270298
/**
271299
* Returns true if the bone is the right upper arm or proximal right finger bone
272300
*/
273-
fun isRightStartOfArmOrFingerBone(bone: UnityBone): Boolean = bone == RIGHT_UPPER_ARM || bone == RIGHT_THUMB_PROXIMAL ||
274-
bone == RIGHT_INDEX_PROXIMAL || bone == RIGHT_MIDDLE_PROXIMAL || bone == RIGHT_RING_PROXIMAL || bone == RIGHT_LITTLE_PROXIMAL
301+
fun isRightStartOfArmOrFingerBone(bone: UnityBone): Boolean = bone == RIGHT_UPPER_ARM ||
302+
bone == RIGHT_THUMB_PROXIMAL ||
303+
bone == RIGHT_INDEX_PROXIMAL ||
304+
bone == RIGHT_MIDDLE_PROXIMAL ||
305+
bone == RIGHT_RING_PROXIMAL ||
306+
bone == RIGHT_LITTLE_PROXIMAL
275307

276308
/**
277309
* Returns true if the bone is part of the left fingers
278310
*/
279-
fun isLeftFingerBone(bone: UnityBone): Boolean = bone == LEFT_THUMB_PROXIMAL || bone == LEFT_THUMB_INTERMEDIATE || bone == LEFT_THUMB_DISTAL ||
280-
bone == LEFT_INDEX_PROXIMAL || bone == LEFT_INDEX_INTERMEDIATE || bone == LEFT_INDEX_DISTAL ||
281-
bone == LEFT_MIDDLE_PROXIMAL || bone == LEFT_MIDDLE_INTERMEDIATE || bone == LEFT_MIDDLE_DISTAL ||
282-
bone == LEFT_RING_PROXIMAL || bone == LEFT_RING_INTERMEDIATE || bone == LEFT_RING_DISTAL ||
283-
bone == LEFT_LITTLE_PROXIMAL || bone == LEFT_LITTLE_INTERMEDIATE || bone == LEFT_LITTLE_DISTAL
311+
fun isLeftFingerBone(bone: UnityBone): Boolean = bone == LEFT_THUMB_PROXIMAL ||
312+
bone == LEFT_THUMB_INTERMEDIATE ||
313+
bone == LEFT_THUMB_DISTAL ||
314+
bone == LEFT_INDEX_PROXIMAL ||
315+
bone == LEFT_INDEX_INTERMEDIATE ||
316+
bone == LEFT_INDEX_DISTAL ||
317+
bone == LEFT_MIDDLE_PROXIMAL ||
318+
bone == LEFT_MIDDLE_INTERMEDIATE ||
319+
bone == LEFT_MIDDLE_DISTAL ||
320+
bone == LEFT_RING_PROXIMAL ||
321+
bone == LEFT_RING_INTERMEDIATE ||
322+
bone == LEFT_RING_DISTAL ||
323+
bone == LEFT_LITTLE_PROXIMAL ||
324+
bone == LEFT_LITTLE_INTERMEDIATE ||
325+
bone == LEFT_LITTLE_DISTAL
284326

285327
/**
286328
* Returns true if the bone part of the right fingers
287329
*/
288-
fun isRightFingerBone(bone: UnityBone): Boolean = bone == RIGHT_THUMB_PROXIMAL || bone == RIGHT_THUMB_INTERMEDIATE || bone == RIGHT_THUMB_DISTAL ||
289-
bone == RIGHT_INDEX_PROXIMAL || bone == RIGHT_INDEX_INTERMEDIATE || bone == RIGHT_INDEX_DISTAL ||
290-
bone == RIGHT_MIDDLE_PROXIMAL || bone == RIGHT_MIDDLE_INTERMEDIATE || bone == RIGHT_MIDDLE_DISTAL ||
291-
bone == RIGHT_RING_PROXIMAL || bone == RIGHT_RING_INTERMEDIATE || bone == RIGHT_RING_DISTAL ||
292-
bone == RIGHT_LITTLE_PROXIMAL || bone == RIGHT_LITTLE_INTERMEDIATE || bone == RIGHT_LITTLE_DISTAL
330+
fun isRightFingerBone(bone: UnityBone): Boolean = bone == RIGHT_THUMB_PROXIMAL ||
331+
bone == RIGHT_THUMB_INTERMEDIATE ||
332+
bone == RIGHT_THUMB_DISTAL ||
333+
bone == RIGHT_INDEX_PROXIMAL ||
334+
bone == RIGHT_INDEX_INTERMEDIATE ||
335+
bone == RIGHT_INDEX_DISTAL ||
336+
bone == RIGHT_MIDDLE_PROXIMAL ||
337+
bone == RIGHT_MIDDLE_INTERMEDIATE ||
338+
bone == RIGHT_MIDDLE_DISTAL ||
339+
bone == RIGHT_RING_PROXIMAL ||
340+
bone == RIGHT_RING_INTERMEDIATE ||
341+
bone == RIGHT_RING_DISTAL ||
342+
bone == RIGHT_LITTLE_PROXIMAL ||
343+
bone == RIGHT_LITTLE_INTERMEDIATE ||
344+
bone == RIGHT_LITTLE_DISTAL
293345
}
294346
}

server/core/src/main/java/dev/slimevr/osc/VMCHandler.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -428,8 +428,7 @@ class VMCHandler(
428428
val role = tracker.trackerPosition
429429
address = if (role == TrackerPosition.HEAD) {
430430
"/VMC/Ext/Hmd/Pos"
431-
} else if (role == TrackerPosition.LEFT_HAND || role == TrackerPosition.RIGHT_HAND
432-
) {
431+
} else if (role == TrackerPosition.LEFT_HAND || role == TrackerPosition.RIGHT_HAND) {
433432
"/VMC/Ext/Con/Pos"
434433
} else {
435434
"/VMC/Ext/Tra/Pos"

server/core/src/main/java/dev/slimevr/osc/VRCOSCHandler.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,10 @@ class VRCOSCHandler(
385385
event.message.arguments[0] as Float,
386386
event.message.arguments[1] as Float,
387387
-(event.message.arguments[2] as Float),
388-
) - receivingPositionOffset,
389-
) + postReceivingPositionOffset
388+
) -
389+
receivingPositionOffset,
390+
) +
391+
postReceivingPositionOffset
390392
} else {
391393
// Update tracker rotation
392394
val (w, x, y, z) = EulerAngles(

server/core/src/main/java/dev/slimevr/poseframeformat/PfrIO.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,7 @@ object PfrIO {
178178
null
179179
}
180180

181-
fun readFromFile(file: File): PoseFrames =
182-
DataInputStream(BufferedInputStream(FileInputStream(file))).use { readFrames(it) }
181+
fun readFromFile(file: File): PoseFrames = DataInputStream(BufferedInputStream(FileInputStream(file))).use { readFrames(it) }
183182

184183
fun tryReadFromFile(file: File): PoseFrames? = try {
185184
readFromFile(file)

0 commit comments

Comments
 (0)