bevy_mod_ffi_guest_sys 0.2.0

Low-level FFI bindings for bevy_mod_ffi guests
Documentation
use bevy_mod_ffi_core::*;
use std::slice;

pub type ObserverClosure = Box<dyn FnMut(&[*mut dyn_system_param], *mut trigger)>;

unsafe extern "C" {
    pub fn bevy_system_state_build_on(
        world: *mut world,
        state_ptr: *mut system_state,
        event_name_ptr: *const u8,
        event_name_len: usize,
        f_ptr: *mut (),
        run_observer_fn: RunObserverFn,
    ) -> bool;
}

#[allow(clippy::missing_safety_doc)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn bevy_guest_run_observer(
    f_ptr: *mut (),
    params: *const *mut dyn_system_param,
    params_len: usize,
    trigger_ptr: *mut trigger,
) {
    let f = unsafe { &mut *(f_ptr as *mut ObserverClosure) };
    let params_slice = unsafe { slice::from_raw_parts(params, params_len) };
    f(params_slice, trigger_ptr);
}