moon_engine/
component.rs

1//! The [`Component`] trait.
2
3use std::any::Any;
4
5use crate::renderer::Quad;
6
7/// The [`Component`] trait
8pub trait Component {
9    /// Initializes a [`Component`].
10    fn init(&mut self) {}
11    /// Called once each frame.
12    ///
13    /// The time between frames is also provided.
14    fn update(&mut self, _delta_time: f32) {}
15
16    /// Get the [`Component`]'s drawable [`Quad`].
17    fn get_quads(&self) -> Option<Vec<Quad>> {
18        None
19    }
20
21    /// Borrow the [`Component`] as a [`&mut dyn Any`](Any).
22    fn as_any(&self) -> &dyn Any;
23
24    /// Borrow the [`Component`] as a [`&dyn Any`](Any).
25    fn as_mut_any(&mut self) -> &mut dyn Any;
26}