diff --git a/thermion_dart/native/include/c_api/TCamera.h b/thermion_dart/native/include/c_api/TCamera.h index a0ca7e17..62e370a7 100644 --- a/thermion_dart/native/include/c_api/TCamera.h +++ b/thermion_dart/native/include/c_api/TCamera.h @@ -16,7 +16,6 @@ enum Projection { // Camera methods EMSCRIPTEN_KEEPALIVE void set_camera_exposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity); EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(TCamera *camera, double4x4 matrix); -EMSCRIPTEN_KEEPALIVE TCamera *get_camera(TViewer *viewer, EntityId entity); EMSCRIPTEN_KEEPALIVE double4x4 get_camera_model_matrix(TCamera *const camera); EMSCRIPTEN_KEEPALIVE double4x4 get_camera_view_matrix(TCamera *const camera); EMSCRIPTEN_KEEPALIVE double4x4 get_camera_projection_matrix(TCamera *const camera); @@ -30,6 +29,7 @@ EMSCRIPTEN_KEEPALIVE double Camera_getNear(TCamera *const camera); EMSCRIPTEN_KEEPALIVE double Camera_getCullingFar(TCamera *const camera); EMSCRIPTEN_KEEPALIVE double4x4 Camera_getViewMatrix(TCamera *const camera); EMSCRIPTEN_KEEPALIVE double4x4 Camera_getModelMatrix(TCamera* camera); +EMSCRIPTEN_KEEPALIVE void Camera_lookAt(TCamera* camera, double3 eye, double3 focus, double3 up); EMSCRIPTEN_KEEPALIVE double get_camera_near(TCamera *camera); EMSCRIPTEN_KEEPALIVE double get_camera_culling_far(TCamera *camera); diff --git a/thermion_dart/native/src/c_api/TCamera.cpp b/thermion_dart/native/src/c_api/TCamera.cpp index 5d9a606e..3b493f28 100644 --- a/thermion_dart/native/src/c_api/TCamera.cpp +++ b/thermion_dart/native/src/c_api/TCamera.cpp @@ -20,6 +20,15 @@ namespace thermion using namespace filament; #endif + + EMSCRIPTEN_KEEPALIVE void Camera_lookAt(TCamera *tCamera, double3 eye, double3 focus, double3 up) { + auto *camera = reinterpret_cast(tCamera); + camera->lookAt( + filament::math::float3 { static_cast(eye.x), static_cast(eye.y), static_cast(eye.z) }, + filament::math::float3 { static_cast(focus.x), static_cast(focus.y), static_cast(focus.z) }, + filament::math::float3 { static_cast(up.x), static_cast(up.y), static_cast(up.z) } + ); + } EMSCRIPTEN_KEEPALIVE void Camera_setCustomProjectionWithCulling(TCamera *tCamera, double4x4 projectionMatrix, double near, double far) {