add getter for Aabb3 directly (getBoundingBox) on ThermionAsset

This commit is contained in:
Nick Fisher
2025-04-21 15:51:50 +08:00
parent afd8bff58e
commit 63e2dcd0ca
3 changed files with 26 additions and 10 deletions

View File

@@ -64,6 +64,13 @@ abstract class ThermionAsset {
///
Future removeStencilHighlight();
///
/// The dimensions of the bounding box for this asset.
/// This is independent of the boundingBoxAsset (which is used to visualize
/// the bounding box in the scene); you do not need to call
/// [createBoundingBoxAsset] before this method.
Future<Aabb3> getBoundingBox();
///
/// The bounding box for this asset, as an actual renderable asset.
/// Null by default; call [createBoundingBoxAsset] first to create.
@@ -72,9 +79,9 @@ abstract class ThermionAsset {
///
/// Creates the renderable bounding box for this asset.
/// This is safe to call multiple times; if [boundingBoxAsset] is non-null,
/// This is safe to call multiple times; if [boundingBoxAsset] is non-null,
/// this will simply return the existing bounding box asset.
///
///
/// You will still need to call [Scene.add] to add this to the scene.
///
Future<ThermionAsset> createBoundingBoxAsset();

View File

@@ -1,5 +1,5 @@
import 'dart:typed_data';
import 'package:vector_math/vector_math_64.dart' as v64;
import 'package:animation_tools_dart/src/bone_animation_data.dart';
import 'package:animation_tools_dart/src/morph_animation_data.dart';
import 'package:thermion_dart/src/filament/src/layers.dart';
@@ -63,7 +63,7 @@ class BackgroundImage extends ThermionAsset {
await mi.setParameterFloat4("backgroundColor", r, g, b, a);
}
Future hideImage() async {
Future hideImage() async {
await mi.setParameterInt("showImage", 0);
}
@@ -336,18 +336,21 @@ class BackgroundImage extends ThermionAsset {
// TODO: implement transformToUnitCube
throw UnimplementedError();
}
@override
Future<MaterialInstance> getMaterialInstanceAt({ThermionEntity? entity, int index = 0}) {
// TODO: implement getMaterialInstanceAt
Future<MaterialInstance> getMaterialInstanceAt(
{ThermionEntity? entity, int index = 0}) {
throw UnimplementedError();
}
ThermionAsset? get boundingBoxAsset => throw UnimplementedError();
@override
Future<ThermionAsset> createBoundingBoxAsset() {
// TODO: implement getBoundingBoxAsset
throw UnimplementedError();
}
Future<v64.Aabb3> getBoundingBox() {
throw UnimplementedError();
}
}

View File

@@ -246,8 +246,14 @@ class FFIAsset extends ThermionAsset {
throw UnimplementedError();
}
///
///
///
ThermionAsset? boundingBoxAsset;
///
///
///
Future<v64.Aabb3> getBoundingBox() async {
final entities = <ThermionEntity>[];
if (RenderableManager_isRenderable(app.renderableManager, entity)) {