From 17f7a2931fa67b396861f9c655111c46e03f0218 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 17 May 2024 14:51:08 +0800 Subject: [PATCH] move child renderable menu to own widget --- .../debug/child_renderable_widget.dart | 81 ++++++++++--------- .../widgets/debug/entity_list_widget.dart | 6 +- 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/child_renderable_widget.dart b/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/child_renderable_widget.dart index 138592cc..5b3a5931 100644 --- a/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/child_renderable_widget.dart +++ b/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/child_renderable_widget.dart @@ -1,3 +1,4 @@ +import 'package:animation_tools_dart/animation_tools_dart.dart'; import 'package:dart_filament/dart_filament/abstract_filament_viewer.dart'; import 'package:dart_filament/dart_filament/entities/filament_entity.dart'; import 'package:flutter/material.dart'; @@ -9,42 +10,52 @@ class ChildRenderableWidget extends StatelessWidget { const ChildRenderableWidget( {super.key, required this.controller, required this.entity}); - - Widget _childRenderable(FilamentEntity childEntity) { var name = controller.getNameForEntity(childEntity) ?? ""; - return FutureBuilder( - future: controller! - .getMorphTargetNames(entity, name), - builder: (_, morphTargetsSnapshot) { - if (!morphTargetsSnapshot.hasData) { - return Container(); - } - var morphTargets = - morphTargetsSnapshot.data!; + var names = controller.getMorphTargetNames(entity, childEntity); + return FutureBuilder( + future: names, + builder: (_, morphTargetsSnapshot) { + if (!morphTargetsSnapshot.hasData) { + return Container(); + } + var morphTargets = morphTargetsSnapshot.data!; - final menuChildren = []; - if(morphTargets.isEmpty) { - menuChildren.add(Text("None")); - } else { - for(int i= 0; i < 2; i++) { - var newWeights = List.filled( - morphTargets.length, i.toDouble() - ); - menuChildren.add(MenuItemButton( - child: Text( - "Set to $i"), - onPressed: () async { - await controller! - .setMorphTargetWeights( - childEntity, newWeights);})); - } - menuChildren.addAll(morphTargets.map((t) => Text(t))); - } - return SubmenuButton( - child: Text(name), - menuChildren: menuChildren); - }); + final menuChildren = []; + if (morphTargets.isEmpty) { + menuChildren.add(Text("None")); + } else { + for (int i = 0; i < 2; i++) { + var newWeights = List.filled(morphTargets.length, i.toDouble()); + menuChildren.add(MenuItemButton( + child: Text("Set to $i"), + onPressed: () async { + try { + await controller! + .setMorphTargetWeights(childEntity, newWeights); + } catch (err, st) { + print("Error setting morph target weights"); + print(err); + print(st); + } + })); + } + menuChildren.add(MenuItemButton( + child: Text("Animate all morph target from 0 to 1"), + onPressed: () async { + var morphData = MorphAnimationData( + List>.generate( + 120, + (i) => List.filled( + morphTargets.length, i / 120)), + morphTargets); + await controller!.setMorphAnimationData(entity, morphData, + targetMeshNames: [name]); + })); + menuChildren.addAll(morphTargets.map((t) => Text(t))); + } + return SubmenuButton(child: Text(name), menuChildren: menuChildren); + }); } @override @@ -63,7 +74,3 @@ class ChildRenderableWidget extends StatelessWidget { }); } } - - - - diff --git a/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/entity_list_widget.dart b/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/entity_list_widget.dart index b893619f..c58ec240 100644 --- a/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/entity_list_widget.dart +++ b/flutter_filament_federated/flutter_filament/lib/filament/widgets/debug/entity_list_widget.dart @@ -74,8 +74,8 @@ class _EntityListWidget extends State { }, )) .toList()), - ChildRenderableWidget(controller:widget.controller!, entity:entity), - + ChildRenderableWidget( + controller: widget.controller!, entity: entity), ]) ]); }); @@ -121,7 +121,7 @@ class _EntityListWidget extends State { @override Widget build(BuildContext context) { if (widget.controller == null) { - return Container(); + return Container(color: Colors.red); } return FutureBuilder( future: widget.controller!.initialized,