fmod/studio/event_instance/
mod.rs1use std::ptr::NonNull;
8
9use fmod_sys::*;
10
11mod attributes_3d;
12mod callback;
13mod core;
14mod general;
15mod parameters;
16mod playback;
17mod playback_properties;
18mod profiling;
19
20pub use callback::EventInstanceCallback;
21pub(crate) use callback::event_callback_impl;
22
23#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
25#[repr(transparent)] pub struct EventInstance {
27 pub(crate) inner: NonNull<FMOD_STUDIO_EVENTINSTANCE>,
28}
29
30#[cfg(not(feature = "thread-unsafe"))]
31unsafe impl Send for EventInstance {}
32#[cfg(not(feature = "thread-unsafe"))]
33unsafe impl Sync for EventInstance {}
34
35impl EventInstance {
36 pub unsafe fn from_ffi(value: *mut FMOD_STUDIO_EVENTINSTANCE) -> Self {
44 let inner = NonNull::new(value).unwrap();
45 EventInstance { inner }
46 }
47
48 pub fn as_ptr(self) -> *mut FMOD_STUDIO_EVENTINSTANCE {
50 self.inner.as_ptr()
51 }
52}
53
54impl From<EventInstance> for *mut FMOD_STUDIO_EVENTINSTANCE {
55 fn from(value: EventInstance) -> Self {
56 value.inner.as_ptr()
57 }
58}