buttery_engine/
renderer.rs1use std::any::Any;
2
3use crate::{ui::ButteryUIModel, world_model::ButteryWorldModel};
4
5pub trait ButteryRenderer: Send + Sync + Any {
6 fn load_model(&mut self, path: &str);
7
8 fn on_update(&mut self, world_model: &ButteryWorldModel);
9
10 fn render(&mut self);
11
12 fn resize(&mut self, width: u32, height: u32);
13
14 fn update_ui_model(&mut self, ui_model: Option<ButteryUIModel>);
15
16 fn as_any(&self) -> &dyn Any;
17
18 fn as_any_mut(&mut self) -> &mut dyn Any;
19}
20
21pub struct FallbackRenderer {}
22
23impl ButteryRenderer for FallbackRenderer {
24 fn load_model(&mut self, _path: &str) {}
25
26 fn on_update(&mut self, _world_model: &ButteryWorldModel) {}
27
28 fn render(&mut self) {}
29
30 fn resize(&mut self, _width: u32, _height: u32) {}
31
32 fn update_ui_model(&mut self, _ui_model: Option<ButteryUIModel>) {}
33
34 fn as_any(&self) -> &dyn Any {
35 self
36 }
37
38 fn as_any_mut(&mut self) -> &mut dyn Any {
39 self
40 }
41}