factor out debug widgets

This commit is contained in:
Nick Fisher
2024-06-01 12:45:43 +08:00
parent e89574aea5
commit 382d68ee77
3 changed files with 74 additions and 69 deletions

View File

@@ -2,6 +2,8 @@ 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';
import 'package:flutter_filament/filament/widgets/debug/skeleton_menu_item_widget.dart';
import 'dart:math';
class ChildRenderableWidget extends StatelessWidget {
final AbstractFilamentViewer controller;
@@ -13,6 +15,7 @@ class ChildRenderableWidget extends StatelessWidget {
Widget _childRenderable(FilamentEntity childEntity) {
var name = controller.getNameForEntity(childEntity) ?? "<none>";
var names = controller.getMorphTargetNames(entity, childEntity);
return FutureBuilder(
future: names,
builder: (_, morphTargetsSnapshot) {
@@ -70,7 +73,39 @@ class ChildRenderableWidget extends StatelessWidget {
var children = snapshot.data!;
return SubmenuButton(
child: Text("Renderable entities"),
menuChildren: children.map(_childRenderable).toList());
menuChildren: <Widget>[
MenuItemButton(
child: Text("Set children transforms to identity"),
onPressed: () async {
var childEntities =
await controller.getChildEntities(entity, true);
for (final child in childEntities) {
await controller.setTransform(
child, Matrix4.identity());
}
}),
MenuItemButton(
child: Text("Set children transforms to 90/X"),
onPressed: () async {
var childEntities =
await controller.getChildEntities(entity, true);
for (final child in childEntities) {
await controller.setTransform(
child, Matrix4.rotationX(pi / 2));
}
}),
MenuItemButton(
child: Text("Set children transforms to 90/Y"),
onPressed: () async {
var childEntities =
await controller.getChildEntities(entity, true);
for (final child in childEntities) {
await controller.setTransform(
child, Matrix4.rotationY(pi / 2));
}
}),
] +
children.map(_childRenderable).toList());
});
}
}

View File

@@ -2,6 +2,7 @@ import 'package:dart_filament/dart_filament/abstract_filament_viewer.dart';
import 'package:dart_filament/dart_filament/entities/filament_entity.dart';
import 'package:flutter_filament/filament/widgets/debug/child_renderable_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_filament/filament/widgets/debug/skeleton_menu_item_widget.dart';
class EntityListWidget extends StatefulWidget {
final AbstractFilamentViewer? controller;
@@ -67,7 +68,9 @@ class _EntityListWidget extends State<EntityListWidget> {
menuChildren: animations.data!
.map((a) => MenuItemButton(
child: Text(a),
onPressed: () {
onPressed: () async {
await widget.controller!
.addAnimationComponent(entity);
widget.controller!.playAnimation(
entity, animations.data!.indexOf(a));
},
@@ -75,6 +78,8 @@ class _EntityListWidget extends State<EntityListWidget> {
.toList()),
ChildRenderableWidget(
controller: widget.controller!, entity: entity),
SkeletonMenuItemWidget(
controller: widget.controller!, entity: entity)
])
]);
});
@@ -135,15 +140,16 @@ class _EntityListWidget extends State<EntityListWidget> {
borderRadius: BorderRadius.circular(30),
color: Colors.white.withOpacity(0.25),
),
child: SingleChildScrollView(child:Column(
// reverse: true,
children: widget.controller!.scene
.listLights()
.map(_light)
.followedBy(widget.controller!.scene
.listEntities()
.map(_entity))
.cast<Widget>()
.toList())))));
child: SingleChildScrollView(
child: Column(
// reverse: true,
children: widget.controller!.scene
.listLights()
.map(_light)
.followedBy(widget.controller!.scene
.listEntities()
.map(_entity))
.cast<Widget>()
.toList())))));
}
}