From 7f3072ed7e016dff359439d7580403e36ad6b325 Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 15 Oct 2025 18:40:19 +0200 Subject: feat(ecs): add EventMatch convenience fns for component events --- ecs/src/util.rs | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'ecs/src/util.rs') diff --git a/ecs/src/util.rs b/ecs/src/util.rs index c18fd49..27e9748 100644 --- a/ecs/src/util.rs +++ b/ecs/src/util.rs @@ -303,8 +303,15 @@ pub(crate) use gen_mask_64; macro_rules! impl_multiple { ( $type: ident, - ($(impl$(<$($generic: tt$(: $bound: ident)?),*>)? _<$($type_param: ty),*>),*) - ($($ty_param_matcher: ident),*) => { + ($( + impl$(<$($generic: tt$(: $bound: ident)?),*>)? + _<$($lt_param: lifetime),*><$($type_param: ty),*> + $(($($extra_cb_arg: expr),*))? + ),*) + cb=( + type_params=($($ty_param_matcher: ident),*) + $(, $($extra_matcher: ident),+)? + ) => { $($item_tt: tt)* } ) => { @@ -313,13 +320,17 @@ macro_rules! impl_multiple { @(make_gen_item_macro) _gen_multiple_impl_item, ($($ty_param_matcher),*), + ($($($extra_matcher),+)?), ($($item_tt)*) ); $( - impl $(<$($generic$(: $bound)?,)*>)? $type<$($type_param),*> + impl $(<$($generic$(: $bound)?,)*>)? $type<$($lt_param,)* $($type_param),*> { - _gen_multiple_impl_item!($($type_param),*); + _gen_multiple_impl_item!( + type_params=($($type_param),*), + $($($extra_cb_arg),*)? + ); } )* }; @@ -329,11 +340,16 @@ macro_rules! impl_multiple { @(make_gen_item_macro) $name: ident, ($($ty_param_matcher: ident),*), + ($($extra_matcher: ident),*), ($($transcriber: tt)*) ) => { $crate::util::impl_multiple!( @(make_gen_item_macro) - ($), $name, ($($ty_param_matcher),*), ($($transcriber)*) + ($), + $name, + ($($ty_param_matcher),*), + ($($extra_matcher),*), + ($($transcriber)*) ); }; @@ -342,11 +358,16 @@ macro_rules! impl_multiple { ($dollar: tt), $name: ident, ($($ty_param_matcher: ident),*), + ($($extra_matcher: ident),*), ($($transcriber: tt)*) ) => { $crate::util::impl_multiple!( @(make_gen_item_macro) - $name, ($($dollar$ty_param_matcher: ty),*) => { + $name, + ( + type_params=($($dollar$ty_param_matcher: ty),*), + $($dollar$extra_matcher: expr),* + ) => { $($transcriber)* } ); -- cgit v1.2.3-18-g5258