rusteal-codegen 0.8.0

Code generator: UHT JSON to Rust bindings and C++ wrappers for rusteal
Documentation
use rusteal_core::{FName, OwnedStruct, UObjectRef, UStructRef, UeStruct};

use crate::engine::{DataTable, FDataTableRowHandle, FDataTableRowHandleExt};

pub fn find_data_table_row<T: UeStruct>(
    table: UObjectRef<DataTable>,
    row_name: FName,
) -> Option<UStructRef<T>> {
    let row = rusteal_core::world::find_data_table_row_raw(
        table.raw(),
        row_name.handle(),
        T::static_struct(),
    )?;

    Some(unsafe { UStructRef::from_raw(row) })
}

pub trait DataTableRowHandleRowExt {
    fn get_row<T: UeStruct>(&self) -> Option<UStructRef<T>>;
}

impl DataTableRowHandleRowExt for UStructRef<FDataTableRowHandle> {
    fn get_row<T: UeStruct>(&self) -> Option<UStructRef<T>> {
        find_data_table_row(self.get_data_table(), FName(self.get_row_name()))
    }
}

impl DataTableRowHandleRowExt for OwnedStruct<FDataTableRowHandle> {
    fn get_row<T: UeStruct>(&self) -> Option<UStructRef<T>> {
        self.as_ref().get_row()
    }
}