use crate::module::Module;
use bevy::prelude::*;
#[derive(Default)]
pub struct EntityBuilder {
modules: Vec<Box<dyn Module>>,
}
impl EntityBuilder {
pub fn new() -> Self {
Default::default()
}
pub fn with<M: Module + 'static>(mut self, module: M) -> Self {
self.modules.push(Box::new(module));
self
}
pub fn build(self, target: &mut EntityWorldMut) {
for module in self.modules {
module.install(target);
}
}
#[cfg(feature = "hot_reload")]
pub fn rebuild(self, target: &mut EntityWorldMut) {
for module in self.modules {
module.update(target);
}
}
}