100 lines
2.6 KiB
Rust
100 lines
2.6 KiB
Rust
#[macro_export]
|
|
macro_rules! xr_resource_wrapper {
|
|
($wrapper_type:ident, $xr_type:ty) => {
|
|
#[derive(
|
|
Clone,
|
|
bevy::prelude::Resource,
|
|
bevy::prelude::Deref,
|
|
bevy::prelude::DerefMut,
|
|
bevy::render::extract_resource::ExtractResource,
|
|
)]
|
|
pub struct $wrapper_type($xr_type);
|
|
|
|
impl $wrapper_type {
|
|
pub fn new(value: $xr_type) -> Self {
|
|
Self(value)
|
|
}
|
|
}
|
|
|
|
// impl std::ops::Deref for $wrapper_type {
|
|
// type Target = $xr_type;
|
|
//
|
|
// fn deref(&self) -> &Self::Target {
|
|
// &self.0
|
|
// }
|
|
// }
|
|
|
|
impl From<$xr_type> for $wrapper_type {
|
|
fn from(value: $xr_type) -> Self {
|
|
Self::new(value)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! xr_arc_resource_wrapper {
|
|
($wrapper_type:ident, $xr_type:ty) => {
|
|
#[derive(
|
|
Clone,
|
|
bevy::prelude::Resource,
|
|
bevy::prelude::Deref,
|
|
bevy::prelude::DerefMut,
|
|
bevy::render::extract_resource::ExtractResource,
|
|
)]
|
|
pub struct $wrapper_type(std::sync::Arc<$xr_type>);
|
|
|
|
impl $wrapper_type {
|
|
pub fn new(value: $xr_type) -> Self {
|
|
Self(std::sync::Arc::new(value))
|
|
}
|
|
}
|
|
|
|
// impl std::ops::Deref for $wrapper_type {
|
|
// type Target = $xr_type;
|
|
//
|
|
// fn deref(&self) -> &Self::Target {
|
|
// self.0.as_ref()
|
|
// }
|
|
// }
|
|
|
|
impl From<$xr_type> for $wrapper_type {
|
|
fn from(value: $xr_type) -> Self {
|
|
Self::new(value)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! xr_no_clone_resource_wrapper {
|
|
($wrapper_type:ident, $xr_type:ty) => {
|
|
#[derive(bevy::prelude::Resource, bevy::prelude::Deref, bevy::prelude::DerefMut)]
|
|
pub struct $wrapper_type($xr_type);
|
|
|
|
impl $wrapper_type {
|
|
pub fn new(value: $xr_type) -> Self {
|
|
Self(value)
|
|
}
|
|
}
|
|
|
|
// impl std::ops::Deref for $wrapper_type {
|
|
// type Target = $xr_type;
|
|
//
|
|
// fn deref(&self) -> &Self::Target {
|
|
// &self.0
|
|
// }
|
|
// }
|
|
|
|
impl From<$xr_type> for $wrapper_type {
|
|
fn from(value: $xr_type) -> Self {
|
|
Self::new(value)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
pub use xr_arc_resource_wrapper;
|
|
pub use xr_no_clone_resource_wrapper;
|
|
pub use xr_resource_wrapper;
|