Skip to content

Commit

Permalink
separate each rotation
Browse files Browse the repository at this point in the history
  • Loading branch information
Erimelowo committed Jul 29, 2023
1 parent 6949f54 commit 80d63db
Showing 1 changed file with 24 additions and 15 deletions.
39 changes: 24 additions & 15 deletions server/core/src/main/java/dev/slimevr/osc/VRCOSCHandler.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package dev.slimevr.osc

import com.illposed.osc.*
import com.illposed.osc.MessageSelector
import com.illposed.osc.OSCBundle
import com.illposed.osc.OSCMessage
import com.illposed.osc.OSCMessageEvent
import com.illposed.osc.OSCMessageListener
import com.illposed.osc.OSCSerializeException
import com.illposed.osc.messageselector.OSCPatternAddressMessageSelector
import com.illposed.osc.transport.OSCPortIn
import com.illposed.osc.transport.OSCPortOut
Expand All @@ -23,7 +28,8 @@ import io.github.axisangles.ktmath.Vector3
import java.io.IOException
import java.net.InetAddress
import java.net.InetSocketAddress
import java.util.*
import java.util.Timer
import java.util.TimerTask

private const val OFFSET_SLERP_FACTOR = 0.5f // Guessed from eyeing VRChat

Expand Down Expand Up @@ -381,18 +387,21 @@ class VRCOSCHandler(
// Send accessory trackers for custom avatars
for (i in accessoryTrackers.indices) {
if (accessoryTrackers[i].trackerPosition == TrackerPosition.ACCESSORY && accessoryTrackers[i].status.sendData) {
val (w, x1, y1, z1) = accessoryTrackers[i].getRotation()
val (_, x2, y2, z2) = Quaternion(w, -x1, -y1, z1).toEulerAngles(EulerOrder.YXZ)
val (_, x, y, z) = accessoryTrackers[i].getRotation().toEulerAngles(EulerOrder.YZX)
// Note: we must send the rotations as -1 to 1
// https://creators.vrchat.com/avatars/animator-parameters/#parameter-types
// Horizontal
oscArgs.clear()
oscArgs.add(x2 * FastMath.RAD_TO_DEG)
oscArgs.add(y2 * FastMath.RAD_TO_DEG)
oscArgs.add(z2 * FastMath.RAD_TO_DEG)
bundle.addPacket(
OSCMessage(
"/avatar/parameters/accessory${accessoryTrackers[i].accessoryId}",
oscArgs.clone()
)
)
oscArgs.add(x / FastMath.PI)
bundle.addPacket(OSCMessage("/avatar/parameters/SVRAccessory${accessoryTrackers[i].accessoryId}X", oscArgs.clone()))
// Vertical
oscArgs.clear()
oscArgs.add(y / FastMath.PI)
bundle.addPacket(OSCMessage("/avatar/parameters/SVRAccessory${accessoryTrackers[i].accessoryId}Y", oscArgs.clone()))
// Twist
oscArgs.clear()
oscArgs.add(z / FastMath.PI)
bundle.addPacket(OSCMessage("/avatar/parameters/SVRAccessory${accessoryTrackers[i].accessoryId}Z", oscArgs.clone()))
}
}

Expand Down Expand Up @@ -471,8 +480,8 @@ class VRCOSCHandler(
* @param tracker the accessory tracker
*/
fun addAccessoryTracker(tracker: Tracker) {
if(!accessoryTrackers.contains(tracker)){
accessoryTrackers.add(tracker)
if (!accessoryTrackers.contains(tracker)) {
accessoryTrackers.add(tracker)
}
}

Expand Down

0 comments on commit 80d63db

Please sign in to comment.