add VmcExtVrm
This commit is contained in:
parent
1abd398b67
commit
92fdc84506
45
src/lib.rs
45
src/lib.rs
|
@ -925,3 +925,48 @@ impl MessageBehavior for VmcExtLight {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
struct VmcExtVrm {
|
||||
path: String,
|
||||
title: String,
|
||||
hash: Option<String>,
|
||||
}
|
||||
|
||||
impl MessageBehavior for VmcExtVrm {
|
||||
fn to_osc_message(&self) -> OscMessage {
|
||||
let mut args = vec![
|
||||
OscType::from(self.path.to_owned()),
|
||||
OscType::from(self.title.to_owned()),
|
||||
];
|
||||
if self.hash.is_some() {
|
||||
args.push(OscType::from(self.hash.clone().unwrap()));
|
||||
}
|
||||
return OscMessage {
|
||||
addr: String::from("/Vmc/Ext/VRM"),
|
||||
args,
|
||||
};
|
||||
}
|
||||
fn from_osc_message(msg: OscMessage) -> Result<Self, String> {
|
||||
if msg.args.len() < 2 || msg.args.len() > 3 {
|
||||
return Err(String::from("arg count invalid"));
|
||||
}
|
||||
let path: String;
|
||||
let title: String;
|
||||
let mut hash: Option<String> = None;
|
||||
match &msg.args[0] {
|
||||
OscType::String(s) => path = s.to_owned(),
|
||||
_ => return Err(String::from("arg type invalid")),
|
||||
}
|
||||
match &msg.args[1] {
|
||||
OscType::String(s) => title = s.to_owned(),
|
||||
_ => return Err(String::from("arg type invalid")),
|
||||
}
|
||||
if msg.args.len() == 3 {
|
||||
match &msg.args[2] {
|
||||
OscType::String(s) => hash = Some(s.to_owned()),
|
||||
_ => return Err(String::from("arg type invalid")),
|
||||
}
|
||||
}
|
||||
return Ok(VmcExtVrm { path, title, hash });
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user