use crate::{Draw, Renderer};
pub fn entity<'a, R, D, E>(name: &'a str, child: D) -> impl Fn(&mut R) -> Result<(), E> + 'a
where
R: Renderer,
D: Draw<R, Error = E> + 'a,
{
move |renderer| {
renderer.push_entity(name);
child.render(renderer)?;
renderer.pop(1);
Ok(())
}
}
pub fn entity_ref<R, E>(name: &str) -> impl Fn(&mut R) -> Result<(), E> + '_
where
R: Renderer,
{
move |renderer| {
renderer.entity_ref(name);
Ok(())
}
}
#[cfg(test)]
mod tests {
use crate::{combinator::circle, Draw, MockRenderer};
use super::{entity, entity_ref};
#[test]
fn test_entity() {
(
entity("hello", circle((20.0, 20.0), 10.0)),
entity_ref("hello"),
)
.render(&mut MockRenderer::default())
.unwrap();
}
}