add setTransform/getWorldTransform to FilamentApp

This commit is contained in:
Nick Fisher
2025-05-28 10:47:00 +08:00
parent c6ceea4f8b
commit 4a7a366fc6
3 changed files with 34 additions and 21 deletions

View File

@@ -888,33 +888,15 @@ class FFIAsset extends ThermionAsset {
/// ///
/// ///
Future<Matrix4> getWorldTransform({ThermionEntity? entity}) async { Future<Matrix4> getWorldTransform({ThermionEntity? entity}) async {
late Pointer stackPtr; return FilamentApp.instance!.getWorldTransform(entity ?? this.entity);
if (FILAMENT_WASM) {
stackPtr = stackSave();
}
entity ??= this.entity;
var transform = double4x4ToMatrix4(
TransformManager_getWorldTransform(app.transformManager, entity));
if (FILAMENT_WASM) {
stackRestore(stackPtr);
}
return transform;
} }
/// ///
/// ///
/// ///
Future setTransform(Matrix4 transform, {ThermionEntity? entity}) async { Future setTransform(Matrix4 transform, {ThermionEntity? entity}) async {
late Pointer stackPtr; await FilamentApp.instance!.setTransform(
if (FILAMENT_WASM) { entity ?? this.entity, transform);
stackPtr = stackSave();
}
entity ??= this.entity;
TransformManager_setTransform(
app.transformManager, entity, matrix4ToDouble4x4(transform));
if (FILAMENT_WASM) {
stackRestore(stackPtr);
}
} }
/// ///

View File

@@ -1110,6 +1110,32 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
/// ///
/// ///
Future setTransform(ThermionEntity entity, Matrix4 transform) async { Future setTransform(ThermionEntity entity, Matrix4 transform) async {
late Pointer stackPtr;
if (FILAMENT_WASM) {
stackPtr = stackSave();
}
TransformManager_setTransform(transformManager, entity, matrix4ToDouble4x4(transform)); TransformManager_setTransform(transformManager, entity, matrix4ToDouble4x4(transform));
if (FILAMENT_WASM) {
stackRestore(stackPtr);
}
} }
///
///
///
Future<Matrix4> getWorldTransform(ThermionEntity entity) async {
late Pointer stackPtr;
if (FILAMENT_WASM) {
stackPtr = stackSave();
}
var transform = double4x4ToMatrix4(
TransformManager_getWorldTransform(transformManager, entity));
if (FILAMENT_WASM) {
stackRestore(stackPtr);
}
return transform;
}
} }

View File

@@ -330,4 +330,9 @@ abstract class FilamentApp<T> {
/// ///
/// ///
Future setTransform(ThermionEntity entity, Matrix4 transform); Future setTransform(ThermionEntity entity, Matrix4 transform);
///
///
///
Future<Matrix4> getWorldTransform(ThermionEntity entity);
} }