use fmod_sys::*;
use std::ffi::{c_float, c_int};
use crate::{FmodResultExt, Result};
use crate::{SoundGroup, SoundGroupBehavior};
impl SoundGroup {
pub fn set_max_audible(&self, max_audible: c_int) -> Result<()> {
unsafe { FMOD_SoundGroup_SetMaxAudible(self.inner.as_ptr(), max_audible).to_result() }
}
pub fn get_max_audible(&self) -> Result<c_int> {
let mut max_audible = 0;
unsafe {
FMOD_SoundGroup_GetMaxAudible(self.inner.as_ptr(), &raw mut max_audible).to_result()?;
};
Ok(max_audible)
}
pub fn set_max_audible_behavior(&self, behavior: SoundGroupBehavior) -> Result<()> {
unsafe {
FMOD_SoundGroup_SetMaxAudibleBehavior(self.inner.as_ptr(), behavior.into()).to_result()
}
}
pub fn get_max_audible_behavior(&self) -> Result<SoundGroupBehavior> {
let mut behavior = 0;
unsafe {
FMOD_SoundGroup_GetMaxAudibleBehavior(self.inner.as_ptr(), &raw mut behavior)
.to_result()?;
};
let behavior = behavior.try_into()?;
Ok(behavior)
}
pub fn set_mute_fade_speed(&self, speed: c_float) -> Result<()> {
unsafe { FMOD_SoundGroup_SetMuteFadeSpeed(self.inner.as_ptr(), speed).to_result() }
}
pub fn get_mute_fade_speed(&self) -> Result<c_float> {
let mut speed = 0.0;
unsafe {
FMOD_SoundGroup_GetMuteFadeSpeed(self.inner.as_ptr(), &raw mut speed).to_result()?;
}
Ok(speed)
}
pub fn set_volume(&self, volume: c_float) -> Result<()> {
unsafe { FMOD_SoundGroup_SetVolume(self.inner.as_ptr(), volume).to_result() }
}
pub fn get_volume(&self) -> Result<c_float> {
let mut volume = 0.0;
unsafe { FMOD_SoundGroup_GetVolume(self.inner.as_ptr(), &raw mut volume).to_result()? };
Ok(volume)
}
}