use crate::geometry::Sphere;
#[derive(Copy, Clone, Debug)]
pub enum BakedDataIdentifier {
Reflections {
variation: BakedDataVariation,
},
Pathing {
variation: BakedDataVariation,
},
}
impl From<BakedDataIdentifier> for audionimbus_sys::IPLBakedDataIdentifier {
fn from(baked_data_identifier: BakedDataIdentifier) -> Self {
let (type_, variation) = match baked_data_identifier {
BakedDataIdentifier::Reflections { variation } => (
audionimbus_sys::IPLBakedDataType::IPL_BAKEDDATATYPE_REFLECTIONS,
variation,
),
BakedDataIdentifier::Pathing { variation } => (
audionimbus_sys::IPLBakedDataType::IPL_BAKEDDATATYPE_PATHING,
variation,
),
};
let (variation, endpoint_influence) = match variation {
BakedDataVariation::Reverb => (
audionimbus_sys::IPLBakedDataVariation::IPL_BAKEDDATAVARIATION_REVERB,
Sphere::default().into(),
),
BakedDataVariation::StaticSource { endpoint_influence } => (
audionimbus_sys::IPLBakedDataVariation::IPL_BAKEDDATAVARIATION_STATICSOURCE,
endpoint_influence.into(),
),
BakedDataVariation::StaticListener { endpoint_influence } => (
audionimbus_sys::IPLBakedDataVariation::IPL_BAKEDDATAVARIATION_STATICLISTENER,
endpoint_influence.into(),
),
BakedDataVariation::Dynamic => (
audionimbus_sys::IPLBakedDataVariation::IPL_BAKEDDATAVARIATION_DYNAMIC,
Sphere::default().into(),
),
};
Self {
type_,
variation,
endpointInfluence: endpoint_influence,
}
}
}
#[derive(Copy, Clone, Debug)]
pub enum BakedDataVariation {
Reverb,
StaticSource {
endpoint_influence: Sphere,
},
StaticListener {
endpoint_influence: Sphere,
},
Dynamic,
}