53 lines
1.8 KiB
Dart
53 lines
1.8 KiB
Dart
// ignore_for_file: unused_local_variable
|
|
|
|
import 'package:thermion_dart/thermion_dart.dart';
|
|
import 'package:test/test.dart';
|
|
import 'package:vector_math/vector_math_64.dart';
|
|
import 'helpers.dart';
|
|
|
|
void main() async {
|
|
final testHelper = TestHelper("transforms");
|
|
await testHelper.setup();
|
|
group("transforms", () {
|
|
test('set/unset parent geometry', () async {
|
|
await testHelper.withViewer((viewer) async {
|
|
var blueMaterialInstance =
|
|
await FilamentApp.instance!.createUnlitMaterialInstance();
|
|
final blueCube = await viewer.createGeometry(
|
|
GeometryHelper.cube(normals: false, uvs: false),
|
|
materialInstances: [blueMaterialInstance]);
|
|
await blueMaterialInstance.setParameterFloat4(
|
|
"baseColorFactor", 0.0, 0.0, 1.0, 1.0);
|
|
|
|
// Position blue cube slightly behind and to the right
|
|
await blueCube
|
|
.setTransform(Matrix4.translation(Vector3(1.0, 0.0, -1.0)));
|
|
|
|
var greenMaterialInstance =
|
|
await FilamentApp.instance!.createUnlitMaterialInstance();
|
|
final greenCube = await viewer.createGeometry(
|
|
GeometryHelper.cube(normals: false, uvs: false),
|
|
materialInstances: [greenMaterialInstance]);
|
|
await greenMaterialInstance.setParameterFloat4(
|
|
"baseColorFactor", 0.0, 1.0, 0.0, 1.0);
|
|
|
|
await viewer.addToScene(blueCube);
|
|
await viewer.addToScene(greenCube);
|
|
|
|
await testHelper.capture(viewer.view, "before_parent");
|
|
|
|
await FilamentApp.instance!.setParent(blueCube.entity, greenCube.entity);
|
|
|
|
await greenCube.setTransform(Matrix4.translation(Vector3.all(-1)));
|
|
|
|
await testHelper.capture(viewer.view, "after_parent");
|
|
|
|
await FilamentApp.instance!.setParent(blueCube.entity, null);
|
|
|
|
await testHelper.capture(viewer.view, "unparent");
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|