use instant::Duration;
pub enum EndReason {
EndProgram,
RemoveScene,
}
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum BufferOperation {
Manual,
EveryFrame,
Never,
}
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CameraUse {
World,
Relative,
}
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum UpdateOperation {
Never,
EveryFrame,
EveryNFrame(u64),
AfterDuration(Duration),
}
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ComponentStorage {
Single,
Multiple,
Groups,
}
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ComponentConfig {
pub update_priority: i16,
pub render_priority: i16,
pub update: UpdateOperation,
pub buffer: BufferOperation,
pub storage: ComponentStorage,
}
impl ComponentConfig {
pub const DEFAULT_PRIORITY: i16 = 16;
pub const DEFAULT: ComponentConfig = ComponentConfig {
buffer: BufferOperation::EveryFrame,
update: UpdateOperation::EveryFrame,
storage: ComponentStorage::Multiple,
update_priority: Self::DEFAULT_PRIORITY,
render_priority: Self::DEFAULT_PRIORITY,
};
}
impl Default for ComponentConfig {
fn default() -> Self {
Self::DEFAULT
}
}