update example project with debug widgets for child entities & morph targets
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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';
|
||||
|
||||
class ChildRenderableWidget extends StatelessWidget {
|
||||
final AbstractFilamentViewer controller;
|
||||
final FilamentEntity entity;
|
||||
|
||||
const ChildRenderableWidget(
|
||||
{super.key, required this.controller, required this.entity});
|
||||
|
||||
|
||||
|
||||
Widget _childRenderable(FilamentEntity childEntity) {
|
||||
var name = controller.getNameForEntity(childEntity) ?? "<none>";
|
||||
return FutureBuilder(
|
||||
future: controller!
|
||||
.getMorphTargetNames(entity, name),
|
||||
builder: (_, morphTargetsSnapshot) {
|
||||
if (!morphTargetsSnapshot.hasData) {
|
||||
return Container();
|
||||
}
|
||||
var morphTargets =
|
||||
morphTargetsSnapshot.data!;
|
||||
|
||||
final menuChildren = <Widget>[];
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return FutureBuilder(
|
||||
future: controller!.getChildEntities(entity, true),
|
||||
builder: (ctx, snapshot) {
|
||||
if (!snapshot.hasData) {
|
||||
return Container();
|
||||
}
|
||||
|
||||
var children = snapshot.data!;
|
||||
return SubmenuButton(
|
||||
child: Text("Renderable entities"),
|
||||
menuChildren: children.map(_childRenderable).toList());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
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_filament/flutter_filament.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@@ -72,7 +73,9 @@ class _EntityListWidget extends State<EntityListWidget> {
|
||||
entity, animations.data!.indexOf(a));
|
||||
},
|
||||
))
|
||||
.toList())
|
||||
.toList()),
|
||||
ChildRenderableWidget(controller:widget.controller!, entity:entity),
|
||||
|
||||
])
|
||||
]);
|
||||
});
|
||||
@@ -120,25 +123,29 @@ class _EntityListWidget extends State<EntityListWidget> {
|
||||
if (widget.controller == null) {
|
||||
return Container();
|
||||
}
|
||||
return StreamBuilder(
|
||||
stream: widget.controller!.scene.onUpdated,
|
||||
builder: (_, __) => Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 30, vertical: 10),
|
||||
height: 100,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
color: Colors.white.withOpacity(0.25),
|
||||
),
|
||||
child: ListView(
|
||||
reverse: true,
|
||||
children: widget.controller!.scene
|
||||
.listLights()
|
||||
.map(_light)
|
||||
.followedBy(widget.controller!.scene
|
||||
.listEntities()
|
||||
.map(_entity))
|
||||
.cast<Widget>()
|
||||
.toList())));
|
||||
return FutureBuilder(
|
||||
future: widget.controller!.initialized,
|
||||
builder: (_, snapshot) => snapshot.data != true
|
||||
? Container()
|
||||
: StreamBuilder(
|
||||
stream: widget.controller!.scene.onUpdated,
|
||||
builder: (_, __) => Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 30, vertical: 10),
|
||||
height: 100,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
color: Colors.white.withOpacity(0.25),
|
||||
),
|
||||
child: ListView(
|
||||
reverse: true,
|
||||
children: widget.controller!.scene
|
||||
.listLights()
|
||||
.map(_light)
|
||||
.followedBy(widget.controller!.scene
|
||||
.listEntities()
|
||||
.map(_entity))
|
||||
.cast<Widget>()
|
||||
.toList()))));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user