From 0df7475f57f1ffddbfda55eaf810c2ca868b3bb2 Mon Sep 17 00:00:00 2001 From: Cassandra de la Cruz-Munoz Date: Sat, 30 Dec 2023 11:44:28 -0500 Subject: [PATCH] create VmcExtSettingColor --- src/lib.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 2015434..bacef7f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1029,3 +1029,44 @@ impl MessageBehavior for VmcExtOpt { } } } + +struct VmcExtSettingColor { + color: Color, +} + +impl MessageBehavior for VmcExtSettingColor { + fn to_osc_message(&self) -> OscMessage { + return OscMessage { + addr: String::from("/VMC/Ext/Setting/Color"), + args: vec![ + OscType::from(self.color.r), + OscType::from(self.color.g), + OscType::from(self.color.b), + OscType::from(self.color.a), + ], + }; + } + fn from_osc_message(msg: OscMessage) -> Result { + if msg.args.len() != 4 { + return Err(String::from("argj count invalid")); + } + let mut color = Color::from_rgba(0.0, 0.0, 0.0, 0.0); + match msg.args[0] { + OscType::Float(f) => color.r = f, + _ => return Err(String::from("arg type invalid")), + } + match msg.args[1] { + OscType::Float(f) => color.g = f, + _ => return Err(String::from("arg type invalid")), + } + match msg.args[2] { + OscType::Float(f) => color.b = f, + _ => return Err(String::from("arg type invalid")), + } + match msg.args[3] { + OscType::Float(f) => color.a = f, + _ => return Err(String::from("arg type invalid")), + } + return Ok(VmcExtSettingColor { color }); + } +}