use AppState to get device roles

i _understand_ now!
basically, i did it the "wrong" way first by modifying openxr.rs and openvr.rs to pass battery levels to osc, when really i could have just made osc get the pre-formatted device details from AppState. live and learn, i'm new to rust anyway.
This commit is contained in:
cubee
2024-11-22 14:15:22 +11:00
committed by galister
parent 12218828d4
commit 546b38204c
3 changed files with 34 additions and 3 deletions
+32 -1
View File
@@ -8,6 +8,11 @@ use rosc::{OscMessage, OscPacket, OscType};
use crate::overlays::{keyboard::KEYBOARD_NAME, watch::WATCH_NAME};
use crate::{
backend::input::{TrackedDevice, TrackedDeviceRole},
state::{AppState},
};
use super::common::OverlayContainer;
pub struct OscSender {
@@ -46,7 +51,7 @@ impl OscSender {
Ok(())
}
pub fn send_params<D>(&mut self, overlays: &OverlayContainer<D>) -> anyhow::Result<()>
pub fn send_params<D>(&mut self, overlays: &OverlayContainer<D>, app: &AppState) -> anyhow::Result<()>
where
D: Default,
{
@@ -90,6 +95,32 @@ impl OscSender {
vec![OscType::Int(num_overlays)],
)?;
// battery levels
let mut tracker_idx = 0;
let devices = &app.input_state.devices;
for device in devices {
match device.role {
TrackedDeviceRole::None => {
}
TrackedDeviceRole::Hmd => {
}
TrackedDeviceRole::LeftHand => {
}
TrackedDeviceRole::RightHand => {
}
TrackedDeviceRole::Tracker => {
tracker_idx += 1;
}
}
}
Ok(())
}
}