rusteal 0.8.0

Rust bindings for Unreal Engine 5.8.2
1
2
3
4
5
6
7
8
9
10
11
12
use bindings::engine::{Actor, ActorComponent, ActorExt};
use rusteal_runtime::runtime::{RustealError, RustealResult, SubclassOf, UObjectRef, UeClass};

pub fn named<T: UeClass>(actor: UObjectRef<Actor>, name: &str) -> RustealResult<UObjectRef<T>> {
    actor
        .checked()?
        .k2_get_components_by_class(SubclassOf::<ActorComponent>::base())
        .into_iter()
        .find(|component| component.get_name().is_ok_and(|n| n == name))
        .ok_or_else(|| RustealError::invalid_operation(format!("no component {name}")))?
        .cast::<T>()
}