#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum InitLevel {
Core,
Servers,
Scene,
Editor,
}
impl InitLevel {
#[doc(hidden)]
pub fn from_sys(level: crate::GDExtensionInitializationLevel) -> Self {
match level {
crate::GDEXTENSION_INITIALIZATION_CORE => Self::Core,
crate::GDEXTENSION_INITIALIZATION_SERVERS => Self::Servers,
crate::GDEXTENSION_INITIALIZATION_SCENE => Self::Scene,
crate::GDEXTENSION_INITIALIZATION_EDITOR => Self::Editor,
_ => {
eprintln!("WARNING: unknown initialization level {level}");
Self::Scene
}
}
}
#[doc(hidden)]
pub fn to_sys(self) -> crate::GDExtensionInitializationLevel {
match self {
Self::Core => crate::GDEXTENSION_INITIALIZATION_CORE,
Self::Servers => crate::GDEXTENSION_INITIALIZATION_SERVERS,
Self::Scene => crate::GDEXTENSION_INITIALIZATION_SCENE,
Self::Editor => crate::GDEXTENSION_INITIALIZATION_EDITOR,
}
}
pub fn to_stage(self) -> InitStage {
match self {
Self::Core => InitStage::Core,
Self::Servers => InitStage::Servers,
Self::Scene => InitStage::Scene,
Self::Editor => InitStage::Editor,
}
}
}
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
#[non_exhaustive]
pub enum InitStage {
Core,
Servers,
Scene,
Editor,
MainLoop,
}
impl InitStage {
pub fn try_to_level(self) -> Option<InitLevel> {
match self {
Self::Core => Some(InitLevel::Core),
Self::Servers => Some(InitLevel::Servers),
Self::Scene => Some(InitLevel::Scene),
Self::Editor => Some(InitLevel::Editor),
Self::MainLoop => None,
}
}
}