allow directly creating an entity and setting transform
This commit is contained in:
@@ -8,45 +8,60 @@ 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)));
|
||||
test('create entity and set as parent', () async {
|
||||
await testHelper.withViewer((viewer) async {
|
||||
final cube = await viewer
|
||||
.createGeometry(GeometryHelper.cube(normals: false, uvs: false));
|
||||
|
||||
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 testHelper.capture(viewer.view, "create_entity_before_parent");
|
||||
|
||||
final entity = await FilamentApp.instance!.createEntity();
|
||||
|
||||
await viewer.addToScene(blueCube);
|
||||
await viewer.addToScene(greenCube);
|
||||
await FilamentApp.instance!.setParent(cube.entity, entity);
|
||||
|
||||
await testHelper.capture(viewer.view, "before_parent");
|
||||
await FilamentApp.instance!.setTransform(entity, Matrix4.translation(Vector3.all(-1)));
|
||||
|
||||
await FilamentApp.instance!.setParent(blueCube.entity, greenCube.entity);
|
||||
await testHelper.capture(viewer.view, "create_entity_after_parent");
|
||||
|
||||
await greenCube.setTransform(Matrix4.translation(Vector3.all(-1)));
|
||||
});
|
||||
});
|
||||
|
||||
await testHelper.capture(viewer.view, "after_parent");
|
||||
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);
|
||||
|
||||
await FilamentApp.instance!.setParent(blueCube.entity, null);
|
||||
// Position blue cube slightly behind and to the right
|
||||
await blueCube.setTransform(Matrix4.translation(Vector3(1.0, 0.0, -1.0)));
|
||||
|
||||
await testHelper.capture(viewer.view, "unparent");
|
||||
});
|
||||
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");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user