Rotating filter

This commit is contained in:
Pascal Engélibert 2022-08-25 09:30:47 +02:00
commit 5ac4b4711c
Signed by: tuxmain
GPG key ID: 3504BC6D362F7DCA
6 changed files with 58 additions and 24 deletions

View file

@ -184,7 +184,7 @@ fn collision_event_system(
&mut Handle<ColorMaterial>,
Option<&Player>,
)>,
pass_through_filter_query: Query<(&PassThroughFilter, &FilterColor)>,
pass_through_filter_query: Query<&PassThroughFilter>,
mut app_state: ResMut<State<AppState>>,
audio: Res<crossbeam_channel::Sender<AudioMsg>>,
) {
@ -231,21 +231,11 @@ fn collision_event_system(
audio.send(AudioMsg::Fusion).ok();
}
} else if *flags == CollisionEventFlags::SENSOR {
if let (
Ok((mut c_color, _c_transform, mut c_material, c_player)),
Ok((filter, filter_color)),
) = (
if let (Ok((mut c_color, _c_transform, mut c_material, c_player)), Ok(filter)) = (
character_query.get_mut(*e1),
pass_through_filter_query.get(*e2),
) {
c_color.0 = match filter {
PassThroughFilter::Absorbing => Vec4::from(c_color.0)
.mul_add(
-Vec4::from(filter_color.0) * Vec4::from([1., 1., 1., 0.]),
Vec4::from(c_color.0),
)
.into(),
};
c_color.0 = filter.apply(c_color.0);
*c_material = materials.add(ColorMaterial::from(c_color.0));
if c_player.is_some() {