extern crate bevy_rosc;
use bevy::prelude::*;
use rosc::address::OscAddress;
use rosc::OscMessage;
use bevy_rosc::{BevyRoscPlugin, method_dispatcher_system};
use bevy_rosc::OscMethod;
#[derive(Component)]
struct MyOscMethod {
osc_address: OscAddress,
}
impl OscMethod for MyOscMethod {
fn get_addresses(&self) -> Vec<OscAddress> {
return vec![self.osc_address.clone()];
}
fn receive_message(&mut self, osc_message: OscMessage) {
println!("MyOscMethod received: {:?}", osc_message)
}
}
fn startup(mut commands: Commands) {
println!("** Startup");
commands.spawn(MyOscMethod{osc_address: OscAddress::new("/test/address".into()).unwrap()});
}
fn main() {
App::new()
.add_plugins(MinimalPlugins)
.add_plugins(BevyRoscPlugin::new("0.0.0.0:31337").unwrap())
.add_systems(Update, method_dispatcher_system::<MyOscMethod>)
.add_systems(Startup, startup)
.run();
}