use crate::core::uoid::Uoid;
pub trait Modifier: Send + Sync {
fn class_index(&self) -> u16;
fn num_targets(&self) -> usize;
fn add_target(&mut self, target: Uoid);
fn remove_target(&mut self, target: &Uoid);
fn eval(&mut self, secs: f64, del: f32, dirty: u32) -> bool;
}
#[derive(Debug, Clone, Default)]
pub struct SingleModifierData {
pub target: Option<Uoid>,
}
impl SingleModifierData {
pub fn new() -> Self {
Self { target: None }
}
pub fn set_target(&mut self, target: Uoid) {
self.target = Some(target);
}
pub fn clear_target(&mut self) {
self.target = None;
}
}
#[derive(Debug, Clone, Default)]
pub struct MsgForwarderData {
pub forward_keys: Vec<Uoid>,
}
impl MsgForwarderData {
pub fn new() -> Self {
Self {
forward_keys: Vec::new(),
}
}
pub fn add_forward_key(&mut self, key: Uoid) {
self.forward_keys.push(key);
}
}