qwac 0.29.0

Rust client crate for making qwac games
Documentation
use super::{DelayTime, Input, Output, Slot};
use qwac_sys::audio;
use std::time::Duration;

#[derive(Debug)]
pub struct DelayNode {
    id: i32,
}

impl Default for DelayNode {
    fn default() -> Self {
        Self::new(Duration::from_secs(0), Duration::from_secs(1))
    }
}

impl Slot for DelayNode {
    fn id(&self) -> i32 {
        self.id
    }
}

impl Input for DelayNode {}
impl Output for DelayNode {}

impl DelayNode {
    pub fn new(delay: Duration, max_delay: Duration) -> Self {
        let id = unsafe { audio::create_delay_node(delay.as_secs_f32(), max_delay.as_secs_f32()) };
        Self { id }
    }
    pub fn delay(&mut self) -> DelayTime {
        DelayTime {
            id: unsafe { audio::delay_time_param(self.id()) },
        }
    }
}

impl Drop for DelayNode {
    fn drop(&mut self) {
        let id = self.id();
        unsafe {
            audio::drop(id);
        }
    }
}