infinity-rs 0.2.5

Safe, idiomatic Rust bindings for the MSFS 2024 WASM SDK.
use crate::{
    sys::{FsEVarId, fsVarsEVarGet, fsVarsGetEVarId},
    vars::{Var, VarKind},
};

pub struct EVarKind;

impl VarKind for EVarKind {
    type Id = FsEVarId;

    #[inline]
    fn register(name: *const std::os::raw::c_char) -> Self::Id {
        unsafe { fsVarsGetEVarId(name) }
    }

    #[inline]
    fn get(
        id: Self::Id,
        unit: crate::sys::FsUnitId,
        _param: crate::sys::FsVarParamArray,
        out: *mut f64,
        _target: crate::sys::FsObjectId,
    ) -> crate::sys::FsVarError {
        unsafe { fsVarsEVarGet(id, unit, out) }
    }

    #[inline]
    fn can_set() -> bool {
        false
    }

    fn set(
        _id: Self::Id,
        _unit: crate::sys::FsUnitId,
        _param: crate::sys::FsVarParamArray,
        _value: f64,
        _target: crate::sys::FsObjectId,
    ) -> crate::sys::FsVarError {
        crate::sys::FsVarError_FS_VAR_ERROR_NOT_SUPPORTED
    }
}

pub type EVar = Var<EVarKind>;