pub mod hsl_cycle;
pub mod beat_detector;

use std::time::Duration;

use sdl2::{event::Event, render::Canvas, video::Window};

use crate::fixtures::MovingHead;

pub trait OutputLayer {
    fn tick(&mut self, dt: Duration);

    fn draw_sdl(&self, canvas: &mut Canvas<Window>, texture_size: u32);
    
    fn on_sdl_event(&mut self, event: &Event);

    fn update_dmx(&self, output: &mut [MovingHead; 4]);
}