From 6362efcd616b97596fe77472f1e05edcedd9463e Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Wed, 11 Jun 2025 09:50:35 +0800 Subject: [PATCH] add implementations for getPrimitiveCount/getBoundingBox on FFIFilamentApp --- .../src/implementation/ffi_filament_app.dart | 17 +++++++++++++++++ .../filament/src/interface/filament_app.dart | 13 +++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart index 558fb195..8e976433 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart @@ -1194,4 +1194,21 @@ class FFIFilamentApp extends FilamentApp { Future setPriority(ThermionEntity entity, int priority) async { RenderableManager_setPriority(renderableManager, entity, priority); } + + /// + /// + /// + Future getPrimitiveCount(ThermionEntity entity) async { + return RenderableManager_getPrimitiveCount(renderableManager, entity); + } + + /// + /// + /// + Future getBoundingBox(ThermionEntity entity) async { + final bb = RenderableManager_getBoundingBox(renderableManager, entity); + return Aabb3.centerAndHalfExtents( + Vector3(bb.centerX, bb.centerY, bb.centerZ), + Vector3(bb.halfExtentX, bb.halfExtentY, bb.halfExtentZ)); + } } diff --git a/thermion_dart/lib/src/filament/src/interface/filament_app.dart b/thermion_dart/lib/src/filament/src/interface/filament_app.dart index 95f1fad2..080e7f4c 100644 --- a/thermion_dart/lib/src/filament/src/interface/filament_app.dart +++ b/thermion_dart/lib/src/filament/src/interface/filament_app.dart @@ -342,10 +342,19 @@ abstract class FilamentApp { /// Future getWorldTransform(ThermionEntity entity); - /// - /// + /// Sets the render priority for [entity]. + /// [priority] should be be between 0 and 7, with 0 meaning highest priority + /// (rendered first) and 7 meaning lowest priority (rendered last). /// Future setPriority(ThermionEntity entity, int priority); + /// Gets the number of primitives for [entity] (which is assumed to be + /// have a renderable component attached) + /// + Future getPrimitiveCount(ThermionEntity entity); + /// Gets the bounding box for [entity] (which is assumed to be + /// have a renderable component attached). + /// + Future getBoundingBox(ThermionEntity entity); }