Introduce a Driver abstraction to encapsulate the SimState and the Renderers
This commit is contained in:
@@ -229,21 +229,25 @@ impl MultiRenderer {
|
||||
pub fn new() -> Self {
|
||||
Default::default()
|
||||
}
|
||||
pub fn with<R: Renderer + 'static>(mut self, r: R) -> Self {
|
||||
pub fn push<R: Renderer + 'static>(&mut self, r: R) {
|
||||
self.renderers.push(Box::new(r));
|
||||
}
|
||||
pub fn with<R: Renderer + 'static>(mut self, r: R) -> Self {
|
||||
self.push(r);
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl Renderer for MultiRenderer {
|
||||
fn render(&mut self, state: &SimState) {
|
||||
if self.renderers.len() != 0 {
|
||||
self.render_with_image(state, &state.to_image());
|
||||
}
|
||||
}
|
||||
|
||||
fn render_with_image(&mut self, state: &SimState, im: &RgbImage) {
|
||||
for r in &mut self.renderers {
|
||||
r.render_with_image(state, im);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct NullRenderer;
|
||||
impl Renderer for NullRenderer {
|
||||
fn render(&mut self, state: &SimState) {}
|
||||
}
|
||||
|
Reference in New Issue
Block a user