make parameter String instead of &str
this means parameter can be immutable if left unset at initialisation, and we can use format!() macro in the match statements. silly workarounds no more!
This commit is contained in:
@@ -102,14 +102,14 @@ impl OscSender {
|
|||||||
|
|
||||||
// soc is the battery level (set to device status.charge)
|
// soc is the battery level (set to device status.charge)
|
||||||
let level = device.soc.unwrap_or(-1.0);
|
let level = device.soc.unwrap_or(-1.0);
|
||||||
let mut parameter = "";
|
let parameter;
|
||||||
|
|
||||||
match device.role {
|
match device.role {
|
||||||
TrackedDeviceRole::None => {}
|
TrackedDeviceRole::None => {parameter = String::from("")}
|
||||||
TrackedDeviceRole::Hmd => {
|
TrackedDeviceRole::Hmd => {
|
||||||
// XSOverlay style (float)
|
// XSOverlay style (float)
|
||||||
// this parameter doesn't exist, but it's a stepping stone for 0-1 values (i presume XSOverlay would use the full name headset and not the abbreviation hmd)
|
// this parameter doesn't exist, but it's a stepping stone for 0-1 values (i presume XSOverlay would use the full name headset and not the abbreviation hmd)
|
||||||
parameter = "headset";
|
parameter = String::from("headset");
|
||||||
|
|
||||||
// legacy OVR Toolkit style (int)
|
// legacy OVR Toolkit style (int)
|
||||||
// according to their docs, OVR Toolkit is now supposed to use float 0-1.
|
// according to their docs, OVR Toolkit is now supposed to use float 0-1.
|
||||||
@@ -121,43 +121,22 @@ impl OscSender {
|
|||||||
)?;
|
)?;
|
||||||
|
|
||||||
}
|
}
|
||||||
TrackedDeviceRole::LeftHand => {parameter = "leftController"}
|
TrackedDeviceRole::LeftHand => {parameter = String::from("leftController")}
|
||||||
TrackedDeviceRole::RightHand => {parameter = "rightController"}
|
TrackedDeviceRole::RightHand => {parameter = String::from("rightController")}
|
||||||
TrackedDeviceRole::Tracker => {
|
TrackedDeviceRole::Tracker => {parameter = format!("tracker{tracker_idx}"); tracker_idx += 1;}
|
||||||
//TODO: the String gets dropped i presume once this block exits (so parameter becomes a null ref)
|
|
||||||
// get this working, we can remove the duplicated code for sending the parameter below
|
|
||||||
//parameter = format!("tracker{tracker_idx}").as_str();
|
|
||||||
// ^^^^^^ "temporary value dropped" ^^^^^
|
|
||||||
|
|
||||||
parameter = "tracker";
|
|
||||||
tracker_idx += 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// send level parameter
|
// send battery parameters
|
||||||
if !parameter.is_empty() {
|
if !parameter.is_empty() {
|
||||||
//TODO: figure out how to put the number in the string in the TrackedDeviceRole section above where we set the parameters
|
|
||||||
if parameter == "tracker" {
|
|
||||||
self.send_message(
|
|
||||||
format!("/avatar/parameters/tracker{tracker_idx}Battery").into(),
|
|
||||||
vec![OscType::Float(level)],
|
|
||||||
)?;
|
|
||||||
self.send_message(
|
|
||||||
format!("/avatar/parameters/tracker{tracker_idx}Charging").into(),
|
|
||||||
vec![OscType::Bool(device.charging)],
|
|
||||||
)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
else {
|
self.send_message(
|
||||||
self.send_message(
|
format!("/avatar/parameters/{parameter}Battery").into(),
|
||||||
format!("/avatar/parameters/{parameter}Battery").into(),
|
vec![OscType::Float(level)],
|
||||||
vec![OscType::Float(level)],
|
)?;
|
||||||
)?;
|
self.send_message(
|
||||||
self.send_message(
|
format!("/avatar/parameters/{parameter}Charging").into(),
|
||||||
format!("/avatar/parameters/{parameter}Charging").into(),
|
vec![OscType::Bool(device.charging)],
|
||||||
vec![OscType::Bool(device.charging)],
|
)?;
|
||||||
)?;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user