chore: camera transform tests

This commit is contained in:
Nick Fisher
2024-09-26 15:56:54 +08:00
parent 7ecf414a47
commit ac10aa0a1e
2 changed files with 34 additions and 6 deletions

View File

@@ -10,8 +10,11 @@ import '../../thermion_viewer_base.dart';
class ThermionFFICamera extends Camera {
final Pointer<TCamera> camera;
final Pointer<TEngine> engine;
late ThermionEntity _entity;
ThermionFFICamera(this.camera, this.engine);
ThermionFFICamera(this.camera, this.engine) {
_entity = Camera_getEntity(camera);
}
@override
Future setProjectionMatrixWithCulling(
@@ -41,8 +44,7 @@ class ThermionFFICamera extends Camera {
@override
ThermionEntity getEntity() {
// TODO: implement getEntity
throw UnimplementedError();
return _entity;
}
@override

View File

@@ -1,4 +1,3 @@
import 'package:thermion_dart/thermion_dart.dart';
import 'package:test/test.dart';
import 'package:thermion_dart/thermion_dart/utils/geometry.dart';
@@ -94,7 +93,8 @@ void main() async {
viewer, "camera_projection_culling_matrix_object_outside_frustum");
});
test('setting camera transform updates model matrix', () async {
test('setting transform on camera updates model matrix (no parent)',
() async {
var viewer = await createViewer();
var cameraEntity = await viewer.getMainCameraEntity();
@@ -109,6 +109,33 @@ void main() async {
expect(modelMatrix.getColumn(3).w, 1.0);
});
test('setting transform on camera updates model matrix (with parent)',
() async {
var viewer = await createViewer();
var cameraEntity = await viewer.getMainCameraEntity();
var camera = await viewer.getMainCamera();
var parent = await viewer.createGeometry(GeometryHelper.cube());
await viewer.setParent(camera.getEntity(), parent);
await viewer.setTransform(
cameraEntity, Matrix4.translation(Vector3(1, 0, 0)));
var modelMatrix = await viewer.getCameraModelMatrix();
expect(modelMatrix.getColumn(3).x, 1.0);
expect(modelMatrix.getColumn(3).y, 0.0);
expect(modelMatrix.getColumn(3).z, 0.0);
expect(modelMatrix.getColumn(3).w, 1.0);
await viewer.setTransform(parent, Matrix4.translation(Vector3(0, 1, 0)));
modelMatrix = await viewer.getCameraModelMatrix();
expect(modelMatrix.getColumn(3).x, 1.0);
expect(modelMatrix.getColumn(3).y, 1.0);
expect(modelMatrix.getColumn(3).z, 0.0);
expect(modelMatrix.getColumn(3).w, 1.0);
});
test('create camera', () async {
var viewer = await createViewer();
@@ -126,5 +153,4 @@ void main() async {
await testHelper.capture(viewer, "create_camera_back_to_main");
});
});
}