ecs: implement Access for tuples via macro
parent
4d39aee4f5
commit
1db8479493
|
@ -81,47 +81,28 @@ impl<'a, T: component::Global> Access<'a> for ReadWriteGlobal<'a, T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl <'a,
|
macro_rules! impl_access_tuple {
|
||||||
T: Access<'a>,
|
( $($ty:ident),* ) => {
|
||||||
U: Access<'a>,
|
impl <'a, $($ty),*> Access<'a> for ( $($ty,)* )
|
||||||
> Access<'a> for (T, U) {
|
where $( $ty : Access<'a> ),*
|
||||||
|
{
|
||||||
fn fetch(world: &'a World) -> Self {
|
fn fetch(world: &'a World) -> Self {
|
||||||
(
|
( $( $ty::fetch(world), )* )
|
||||||
T::fetch(world),
|
}
|
||||||
U::fetch(world),
|
}
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl <'a,
|
impl_access_tuple!(A);
|
||||||
T: Access<'a>,
|
impl_access_tuple!(A, B);
|
||||||
U: Access<'a>,
|
impl_access_tuple!(A, B, C);
|
||||||
V: Access<'a>,
|
impl_access_tuple!(A, B, C, D);
|
||||||
> Access<'a> for (T, U, V) {
|
impl_access_tuple!(A, B, C, D, E);
|
||||||
fn fetch(world: &'a World) -> Self {
|
impl_access_tuple!(A, B, C, D, E, F);
|
||||||
(
|
impl_access_tuple!(A, B, C, D, E, F, G);
|
||||||
T::fetch(world),
|
impl_access_tuple!(A, B, C, D, E, F, G, H);
|
||||||
U::fetch(world),
|
impl_access_tuple!(A, B, C, D, E, F, G, H, I);
|
||||||
V::fetch(world),
|
impl_access_tuple!(A, B, C, D, E, F, G, H, I, J);
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl <'a,
|
|
||||||
T: Access<'a>,
|
|
||||||
U: Access<'a>,
|
|
||||||
V: Access<'a>,
|
|
||||||
W: Access<'a>,
|
|
||||||
> Access<'a> for (T, U, V, W) {
|
|
||||||
fn fetch(world: &'a World) -> Self {
|
|
||||||
(
|
|
||||||
T::fetch(world),
|
|
||||||
U::fetch(world),
|
|
||||||
V::fetch(world),
|
|
||||||
W::fetch(world),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Processor<'a> {
|
pub struct Processor<'a> {
|
||||||
world: &'a World,
|
world: &'a World,
|
||||||
|
|
Loading…
Reference in New Issue