fmod/core/geometry/
spatialization.rs1use fmod_sys::*;
8use std::mem::MaybeUninit;
9
10use crate::{Geometry, Vector};
11
12impl Geometry {
13 pub fn set_position(&self, position: Vector) -> Result<()> {
17 unsafe {
18 FMOD_Geometry_SetPosition(self.inner, std::ptr::from_ref(&position).cast()).to_result()
19 }
20 }
21
22 pub fn get_position(&self) -> Result<Vector> {
26 let mut position = MaybeUninit::uninit();
27 unsafe {
28 FMOD_Geometry_GetPosition(self.inner, position.as_mut_ptr()).to_result()?;
29 let position = position.assume_init().into();
30 Ok(position)
31 }
32 }
33
34 pub fn set_rotation(&self, forward: Vector, up: Vector) -> Result<()> {
38 unsafe {
39 FMOD_Geometry_SetRotation(
40 self.inner,
41 std::ptr::from_ref(&forward).cast(),
42 std::ptr::from_ref(&up).cast(),
43 )
44 .to_result()
45 }
46 }
47
48 pub fn get_rotation(&self) -> Result<(Vector, Vector)> {
50 let mut forward = MaybeUninit::uninit();
51 let mut up = MaybeUninit::uninit();
52 unsafe {
53 FMOD_Geometry_GetRotation(self.inner, forward.as_mut_ptr(), up.as_mut_ptr())
54 .to_result()?;
55 let forward = forward.assume_init().into();
56 let up = up.assume_init().into();
57 Ok((forward, up))
58 }
59 }
60
61 pub fn set_scale(&self, scale: Vector) -> Result<()> {
65 unsafe { FMOD_Geometry_SetScale(self.inner, std::ptr::from_ref(&scale).cast()).to_result() }
66 }
67
68 pub fn get_scale(&self) -> Result<Vector> {
70 let mut scale = MaybeUninit::uninit();
71 unsafe {
72 FMOD_Geometry_GetScale(self.inner, scale.as_mut_ptr()).to_result()?;
73 let scale = scale.assume_init().into();
74 Ok(scale)
75 }
76 }
77}