#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Cone {
pub inner_angle_rad: f32,
pub outer_angle_rad: f32,
pub outer_gain: f32,
}
impl Cone {
#[inline]
pub const fn new(inner_angle_rad: f32, outer_angle_rad: f32, outer_gain: f32) -> Self {
Self {
inner_angle_rad,
outer_angle_rad,
outer_gain,
}
}
#[inline]
pub fn from_degrees(inner_deg: f32, outer_deg: f32, outer_gain: f32) -> Self {
let d2r = core::f32::consts::PI / 180.0;
Self {
inner_angle_rad: inner_deg * d2r,
outer_angle_rad: outer_deg * d2r,
outer_gain,
}
}
#[inline]
pub const fn omni() -> Self {
Self {
inner_angle_rad: core::f32::consts::PI * 2.0,
outer_angle_rad: core::f32::consts::PI * 2.0,
outer_gain: 1.0,
}
}
}
impl Default for Cone {
#[inline]
fn default() -> Self {
Self::omni()
}
}