lyra-engine/lyra-scripting/src/lib.rs

60 lines
1.2 KiB
Rust
Raw Normal View History

2024-01-05 01:52:47 +00:00
#[cfg(feature = "lua")]
pub mod lua;
pub mod world;
pub use world::*;
pub mod wrap;
pub use wrap::*;
pub mod host;
pub use host::*;
pub mod script;
pub use script::*;
#[allow(unused_imports)]
pub(crate) mod lyra_engine {
pub use lyra_ecs as ecs;
}
use lyra_reflect::{ReflectedComponent, Reflect};
#[derive(Clone)]
pub enum ReflectBranch {
Component(ReflectedComponent),
}
impl ReflectBranch {
/// Gets self as a [`ReflectedComponent`].
///
/// # Panics
/// If `self` is not a variant of [`ReflectBranch::Component`].
pub fn as_component_unchecked(&self) -> &ReflectedComponent {
match self {
ReflectBranch::Component(c) => c,
_ => panic!("`self` is not an instance of `ReflectBranch::Component`")
}
}
pub fn is_component(&self) -> bool {
matches!(self, ReflectBranch::Component(_))
}
}
pub struct ScriptBorrow {
reflect_branch: ReflectBranch,
data: Option<Box<dyn Reflect>>,
}
impl Clone for ScriptBorrow {
fn clone(&self) -> Self {
let data = self.data.as_ref().map(|b| b.clone_inner());
Self {
reflect_branch: self.reflect_branch.clone(),
data,
}
}
}