use std::usize;
use bevy::{
color::palettes::css::WHITE,
prelude::*,
render::{extract_component::ExtractComponent, render_resource::ShaderType},
};
#[derive(Component, Default, Clone, ExtractComponent, Reflect)]
pub(crate) struct ExtractedWorldData {
pub camera_pos: Vec2,
}
#[derive(Component, ExtractComponent, Clone, Reflect)]
#[require(Transform)]
pub struct FireflyConfig {
pub ambient_color: Color,
pub ambient_brightness: f32,
pub light_bands: Option<u32>,
pub softness: Option<f32>,
pub z_sorting: bool,
pub normal_mode: NormalMode,
pub normal_attenuation: f32,
}
#[derive(Clone, Reflect)]
pub enum NormalMode {
None,
Simple,
TopDown,
}
impl Default for FireflyConfig {
fn default() -> Self {
Self {
ambient_color: Color::Srgba(WHITE),
ambient_brightness: 0.0,
light_bands: None,
softness: Some(0.7),
z_sorting: true,
normal_mode: NormalMode::None,
normal_attenuation: 0.5,
}
}
}
#[derive(ShaderType, Clone)]
pub struct UniformFireflyConfig {
pub ambient_color: Vec3,
pub ambient_brightness: f32,
pub light_bands: u32,
pub softness: f32,
pub z_sorting: u32,
pub normal_mode: u32,
pub normal_attenuation: f32,
}