chore: camera transform tests
This commit is contained in:
@@ -10,8 +10,11 @@ import '../../thermion_viewer_base.dart';
|
|||||||
class ThermionFFICamera extends Camera {
|
class ThermionFFICamera extends Camera {
|
||||||
final Pointer<TCamera> camera;
|
final Pointer<TCamera> camera;
|
||||||
final Pointer<TEngine> engine;
|
final Pointer<TEngine> engine;
|
||||||
|
late ThermionEntity _entity;
|
||||||
|
|
||||||
ThermionFFICamera(this.camera, this.engine);
|
ThermionFFICamera(this.camera, this.engine) {
|
||||||
|
_entity = Camera_getEntity(camera);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future setProjectionMatrixWithCulling(
|
Future setProjectionMatrixWithCulling(
|
||||||
@@ -41,8 +44,7 @@ class ThermionFFICamera extends Camera {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
ThermionEntity getEntity() {
|
ThermionEntity getEntity() {
|
||||||
// TODO: implement getEntity
|
return _entity;
|
||||||
throw UnimplementedError();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:thermion_dart/thermion_dart.dart';
|
import 'package:thermion_dart/thermion_dart.dart';
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
import 'package:thermion_dart/thermion_dart/utils/geometry.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");
|
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 viewer = await createViewer();
|
||||||
|
|
||||||
var cameraEntity = await viewer.getMainCameraEntity();
|
var cameraEntity = await viewer.getMainCameraEntity();
|
||||||
@@ -109,6 +109,33 @@ void main() async {
|
|||||||
expect(modelMatrix.getColumn(3).w, 1.0);
|
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 {
|
test('create camera', () async {
|
||||||
var viewer = await createViewer();
|
var viewer = await createViewer();
|
||||||
|
|
||||||
@@ -126,5 +153,4 @@ void main() async {
|
|||||||
await testHelper.capture(viewer, "create_camera_back_to_main");
|
await testHelper.capture(viewer, "create_camera_back_to_main");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user