infinity-rs 0.2.4

Safe, idiomatic Rust bindings for the MSFS 2024 WASM SDK.
use crate::{
    sys::{FsLVarId, fsVarsLVarSet, fsVarsRegisterLVar},
    vars::{Var, VarKind},
};

pub struct LVarKind;

impl VarKind for LVarKind {
    type Id = FsLVarId;

    #[inline]
    fn register(name: *const std::os::raw::c_char) -> Self::Id {
        unsafe { fsVarsRegisterLVar(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 { crate::sys::fsVarsLVarGet(id, unit, out) }
    }

    #[inline]
    fn set(
        id: Self::Id,
        unit: crate::sys::FsUnitId,
        _param: crate::sys::FsVarParamArray,
        value: f64,
        _target: crate::sys::FsObjectId,
    ) -> crate::sys::FsVarError {
        unsafe { fsVarsLVarSet(id, unit, value) }
    }
}

pub type LVar = Var<LVarKind>;