use crate::context::Context;
use crate::hrtf::Hrtf;
use crate::ray_tracing::RayTracer;
use crate::simulation::{SimulationSettings, Source};
pub fn initialize(context: &Context) {
unsafe { audionimbus_sys::fmod::iplFMODInitialize(context.raw_ptr()) }
}
pub fn terminate() {
unsafe { audionimbus_sys::fmod::iplFMODTerminate() }
}
pub fn set_simulation_settings<T: RayTracer>(simulation_settings: &SimulationSettings<'static, T>) {
unsafe { audionimbus_sys::fmod::iplFMODSetSimulationSettings(simulation_settings.to_ffi()) }
}
pub fn set_hrtf(hrtf: &Hrtf) {
unsafe { audionimbus_sys::fmod::iplFMODSetHRTF(hrtf.raw_ptr()) }
}
pub fn set_hrtf_disabled(disabled: bool) {
unsafe { audionimbus_sys::fmod::iplFMODSetHRTFDisabled(disabled) }
}
pub type SourceHandle = i32;
pub fn add_source(source: &Source) -> SourceHandle {
unsafe { audionimbus_sys::fmod::iplFMODAddSource(source.raw_ptr()) }
}
pub fn remove_source(handle: SourceHandle) {
unsafe { audionimbus_sys::fmod::iplFMODRemoveSource(handle as audionimbus_sys::IPLint32) }
}
pub fn set_reverb_source(source: &Source) {
unsafe { audionimbus_sys::fmod::iplFMODSetReverbSource(source.raw_ptr()) }
}
pub fn version() -> FmodStudioIntegrationVersion {
use std::os::raw::c_uint;
let mut major: c_uint = 0;
let mut minor: c_uint = 0;
let mut patch: c_uint = 0;
unsafe {
audionimbus_sys::fmod::iplFMODGetVersion(&raw mut major, &raw mut minor, &raw mut patch);
}
FmodStudioIntegrationVersion {
major: major as usize,
minor: minor as usize,
patch: patch as usize,
}
}
#[derive(Copy, Clone, Debug)]
pub struct FmodStudioIntegrationVersion {
pub major: usize,
pub minor: usize,
pub patch: usize,
}