use std::ffi::c_int;
use crate::{FmodResultExt, Result};
use fmod_sys::*;
use crate::{Sound, SoundGroup};
impl Sound {
pub fn set_sound_group(&self, group: SoundGroup) -> Result<()> {
unsafe { FMOD_Sound_SetSoundGroup(self.inner.as_ptr(), group.into()).to_result() }
}
pub fn sound_group(&self) -> Result<SoundGroup> {
let mut group = std::ptr::null_mut();
unsafe {
FMOD_Sound_GetSoundGroup(self.inner.as_ptr(), &raw mut group).to_result()?;
Ok(SoundGroup::from_ffi(group))
}
}
pub fn get_sub_sound_count(&self) -> Result<c_int> {
let mut count = 0;
unsafe {
FMOD_Sound_GetNumSubSounds(self.inner.as_ptr(), &raw mut count).to_result()?;
}
Ok(count)
}
pub fn get_sub_sound(&self, index: c_int) -> Result<Sound> {
let mut sound = std::ptr::null_mut();
unsafe {
FMOD_Sound_GetSubSound(self.inner.as_ptr(), index, &raw mut sound).to_result()?;
Ok(Sound::from_ffi(sound))
}
}
pub fn get_sub_sound_parent(&self) -> Result<Option<Sound>> {
let mut sound = std::ptr::null_mut();
unsafe {
FMOD_Sound_GetSubSoundParent(self.inner.as_ptr(), &raw mut sound).to_result()?;
}
if sound.is_null() {
Ok(None)
} else {
Ok(Some(unsafe { Sound::from_ffi(sound) }))
}
}
}