Visibility blocking takes an opacity.
This commit is contained in:
parent
ef9ba8530f
commit
25d0664f49
|
@ -12,10 +12,15 @@ use crate::{
|
|||
map::{ITileType, Map, MapConfig},
|
||||
};
|
||||
|
||||
#[derive(Clone, Copy, Debug, Default, Reflect)]
|
||||
#[derive(Clone, Copy, Debug, Deref, DerefMut, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct BlocksVisibility;
|
||||
pub struct BlocksVisibility(pub u8);
|
||||
|
||||
impl Default for BlocksVisibility {
|
||||
fn default() -> Self {
|
||||
Self(u8::MAX)
|
||||
}
|
||||
}
|
||||
#[derive(Clone, Copy, Debug, Default, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct DontLogWhenVisible;
|
||||
|
@ -124,16 +129,20 @@ fn update_viewshed(
|
|||
InteractionGroups::all(),
|
||||
Some(&|v| v.entity() != *viewer_entity && blocks_visibility.get(v.entity()).is_ok()),
|
||||
|handle| {
|
||||
if let Ok(coordinates) = coordinates.get(handle.entity()) {
|
||||
if coordinates.i32() == (coord.x, coord.y) {
|
||||
opacity = 255;
|
||||
false
|
||||
if let Ok(blocks_visibility) = blocks_visibility.get(handle.entity()) {
|
||||
if let Ok(coordinates) = coordinates.get(handle.entity()) {
|
||||
if coordinates.i32() == (coord.x, coord.y) {
|
||||
opacity = **blocks_visibility;
|
||||
false
|
||||
} else {
|
||||
true
|
||||
}
|
||||
} else {
|
||||
true
|
||||
opacity = **blocks_visibility;
|
||||
false
|
||||
}
|
||||
} else {
|
||||
opacity = 255;
|
||||
false
|
||||
true
|
||||
}
|
||||
},
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue
Block a user