fix: allow destroying instances independently of owner
This commit is contained in:
@@ -22,7 +22,7 @@ void main() async {
|
||||
final cube = await viewer
|
||||
.createGeometry(GeometryHelper.cube(normals: false, uvs: false));
|
||||
await testHelper.capture(viewer, "geometry_cube_no_normals_uvs");
|
||||
await viewer.removeEntity(cube);
|
||||
await viewer.removeAsset(cube);
|
||||
await testHelper.capture(viewer, "geometry_remove_cube");
|
||||
});
|
||||
});
|
||||
@@ -86,6 +86,8 @@ void main() async {
|
||||
instance.entity, Matrix4.translation(Vector3.all(1)));
|
||||
|
||||
await testHelper.capture(viewer, "geometry_instanced");
|
||||
await viewer.removeAsset(instance);
|
||||
await testHelper.capture(viewer, "geometry_instance_removed");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -167,7 +169,7 @@ void main() async {
|
||||
"baseColorFactor", 0.0, 1.0, 0.0, 0.0);
|
||||
await testHelper.capture(
|
||||
viewer, "geometry_cube_with_custom_material_ubershader");
|
||||
await viewer.removeEntity(cube);
|
||||
await viewer.removeAsset(cube);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -191,7 +193,7 @@ void main() async {
|
||||
await viewer.applyTexture(texture as ThermionFFITexture, cube.entity);
|
||||
await testHelper.capture(
|
||||
viewer, "geometry_cube_with_custom_material_ubershader_texture");
|
||||
await viewer.removeEntity(cube);
|
||||
await viewer.removeAsset(cube);
|
||||
await viewer.destroyTexture(texture);
|
||||
});
|
||||
|
||||
@@ -221,7 +223,7 @@ void main() async {
|
||||
var texture = await viewer.createTexture(textureData);
|
||||
await viewer.applyTexture(texture, cube.entity);
|
||||
await testHelper.capture(viewer, "unlit_material_texture_only");
|
||||
await viewer.removeEntity(cube);
|
||||
await viewer.removeAsset(cube);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ void main() async {
|
||||
var model = await viewer
|
||||
.loadGlb("file://${testHelper.testDir}/assets/cube.glb");
|
||||
await testHelper.capture(viewer, "load_glb_from_file");
|
||||
await viewer.removeEntity(model);
|
||||
await viewer.removeAsset(model);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -29,6 +29,28 @@ void main() async {
|
||||
});
|
||||
});
|
||||
|
||||
test('load glb from buffer with instances', () async {
|
||||
await testHelper.withViewer((viewer) async {
|
||||
var buffer =
|
||||
File("${testHelper.testDir}/assets/cube.glb").readAsBytesSync();
|
||||
var model = await viewer.loadGlbFromBuffer(buffer, numInstances: 2);
|
||||
var instance = await model.createInstance();
|
||||
await instance.addToScene();
|
||||
await viewer.setTransform(
|
||||
instance.entity, Matrix4.translation(Vector3(1, 0, 0)));
|
||||
|
||||
await testHelper.capture(viewer, "load_glb_from_buffer_with_instances");
|
||||
|
||||
await viewer.removeAsset(instance);
|
||||
|
||||
await testHelper.capture(viewer, "load_glb_from_buffer_instance_removed");
|
||||
|
||||
await viewer.removeAsset(model);
|
||||
|
||||
await testHelper.capture(viewer, "load_glb_from_buffer_original_removed");
|
||||
}, bg: kRed);
|
||||
});
|
||||
|
||||
test('load glb from buffer with priority', () async {
|
||||
await testHelper.withViewer((viewer) async {
|
||||
viewer.addDirectLight(DirectLight.sun());
|
||||
@@ -58,7 +80,7 @@ void main() async {
|
||||
await testHelper.withViewer((viewer) async {
|
||||
var model = await viewer.loadGlb(
|
||||
"file://${testHelper.testDir}/assets/cube.glb",
|
||||
numInstances: 2);
|
||||
numInstances: 32);
|
||||
await testHelper.capture(viewer, "gltf_create_instance_0");
|
||||
var instance = await model.createInstance();
|
||||
await instance.addToScene();
|
||||
@@ -75,17 +97,36 @@ void main() async {
|
||||
var model = await viewer.loadGlb(
|
||||
"file://${testHelper.testDir}/assets/cube.glb",
|
||||
numInstances: 2);
|
||||
await testHelper.capture(viewer, "gltf_create_instance_with_material_0");
|
||||
await testHelper.capture(
|
||||
viewer, "gltf_create_instance_with_material_0");
|
||||
|
||||
final materialInstance = await viewer.createUnlitMaterialInstance();
|
||||
await materialInstance.setParameterFloat4(
|
||||
"baseColorFactor", 1.0, 0.0, 0.0, 1.0);
|
||||
var instance = await model.createInstance(materialInstances: [materialInstance]);
|
||||
var instance =
|
||||
await model.createInstance(materialInstances: [materialInstance]);
|
||||
await instance.addToScene();
|
||||
|
||||
await viewer.setTransform(
|
||||
instance.entity, Matrix4.translation(Vector3.all(1)));
|
||||
await testHelper.capture(viewer, "gltf_create_instance_with_material_1");
|
||||
await testHelper.capture(
|
||||
viewer, "gltf_create_instance_with_material_1");
|
||||
await viewer.destroyMaterialInstance(materialInstance);
|
||||
});
|
||||
});
|
||||
|
||||
test('replace material instance for gltf', () async {
|
||||
await testHelper.withViewer((viewer) async {
|
||||
var model = await viewer
|
||||
.loadGlb("file://${testHelper.testDir}/assets/cube.glb");
|
||||
await testHelper.capture(viewer, "gltf_default_material_instance");
|
||||
var materialInstance = await viewer.createUnlitMaterialInstance();
|
||||
await materialInstance.setParameterFloat4(
|
||||
"baseColorFactor", 1.0, 1.0, 0.0, 1.0);
|
||||
await model.setMaterialInstanceAt(materialInstance);
|
||||
await testHelper.capture(viewer, "gltf_set_material_instance");
|
||||
await viewer.removeAsset(model);
|
||||
await viewer.destroyMaterialInstance(materialInstance);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user