#[derive(Debug, Clone, Copy, PartialEq)]
pub struct CometMaterial {
pub nucleus_albedo: [f32; 3],
pub nucleus_roughness: f32,
pub coma_color: [f32; 3],
pub coma_opacity: f32,
pub tail_dust_color: [f32; 3],
pub tail_ion_color: [f32; 3],
}
impl CometMaterial {
pub fn active_near_perihelion() -> Self {
Self {
nucleus_albedo: [0.04, 0.03, 0.03],
nucleus_roughness: 0.95,
coma_color: [0.8, 0.85, 0.9],
coma_opacity: 0.3,
tail_dust_color: [1.0, 0.9, 0.7],
tail_ion_color: [0.3, 0.5, 1.0],
}
}
pub fn distant_inactive() -> Self {
Self {
nucleus_albedo: [0.04, 0.03, 0.03],
nucleus_roughness: 0.95,
coma_color: [0.0; 3],
coma_opacity: 0.0,
tail_dust_color: [0.0; 3],
tail_ion_color: [0.0; 3],
}
}
pub fn jet_active() -> Self {
Self {
nucleus_albedo: [0.05, 0.04, 0.04],
nucleus_roughness: 0.9,
coma_color: [0.7, 0.8, 0.9],
coma_opacity: 0.5,
tail_dust_color: [1.0, 0.85, 0.6],
tail_ion_color: [0.2, 0.4, 0.9],
}
}
}