use crate::*;

pub trait ProgramController {
    fn initialise(&mut self) {}
    fn on_render(&mut self) {}
    fn on_mouse_moved(&mut self, _position: Point) {}

    fn on_process(&mut self, _create_window: &mut dyn FnMut(Box<dyn WindowController>)) {}
}

/// An empty program controller, for when a program has only one window.
pub struct DefaultProgramController {}
impl ProgramController for DefaultProgramController {}