From 4d3d744cd66753471c6aa950a9efa02693aadec6 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 24 Aug 2024 16:18:23 +0800 Subject: [PATCH] feat: layers, grid --- thermion_dart/native/src/ThermionDartApi.cpp | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/thermion_dart/native/src/ThermionDartApi.cpp b/thermion_dart/native/src/ThermionDartApi.cpp index 4b6a4811..d65648d8 100644 --- a/thermion_dart/native/src/ThermionDartApi.cpp +++ b/thermion_dart/native/src/ThermionDartApi.cpp @@ -200,9 +200,13 @@ extern "C" return ((FilamentViewer *)viewer)->setCamera(asset, nodeName); } - EMSCRIPTEN_KEEPALIVE void set_camera_fov(const void *const viewer, float fovInDegrees, float aspect) + EMSCRIPTEN_KEEPALIVE float get_camera_fov(const void *const viewer, bool horizontal) { + return ((FilamentViewer*)viewer)->getCameraFov(horizontal); + } + + EMSCRIPTEN_KEEPALIVE void set_camera_fov(const void *const viewer, float fovInDegrees, bool horizontal) { - return ((FilamentViewer *)viewer)->setCameraFov(double(fovInDegrees), double(aspect)); + return ((FilamentViewer *)viewer)->setCameraFov(double(fovInDegrees), horizontal); } const double *const get_camera_model_matrix(const void *const viewer) @@ -721,6 +725,10 @@ extern "C" ((SceneManager *)sceneManager)->queuePositionUpdate(asset, x, y, z, relative); } + EMSCRIPTEN_KEEPALIVE void queue_relative_position_update_world_axis(void *sceneManager, EntityId entity, float viewportX, float viewportY, float x, float y, float z) { + ((SceneManager *)sceneManager)->queueRelativePositionUpdateWorldAxis(entity, viewportX, viewportY, x, y, z); + } + EMSCRIPTEN_KEEPALIVE void queue_rotation_update(void *sceneManager, EntityId asset, float rads, float x, float y, float z, float w, bool relative) { ((SceneManager *)sceneManager)->queueRotationUpdate(asset, rads, x, y, z, w, relative); @@ -839,12 +847,29 @@ extern "C" EMSCRIPTEN_KEEPALIVE void get_gizmo(void *const sceneManager, EntityId *out) { - return ((SceneManager *)sceneManager)->getGizmo(out); + auto gizmo = ((SceneManager *)sceneManager)->gizmo; + out[0] = Entity::smuggle(gizmo->x()); + out[1] = Entity::smuggle(gizmo->y()); + out[2] = Entity::smuggle(gizmo->z()); + out[3] = Entity::smuggle(gizmo->center()); } EMSCRIPTEN_KEEPALIVE Aabb2 get_bounding_box(void *const sceneManager, EntityId entity) { return ((SceneManager *)sceneManager)->getBoundingBox(entity); } + EMSCRIPTEN_KEEPALIVE void get_bounding_box_to_out(void *const sceneManager, EntityId entity, float* minX, float* minY, float* maxX, float* maxY) { + auto box =((SceneManager *)sceneManager)->getBoundingBox(entity); + *minX = box.minX; + *minY = box.minY; + *maxX = box.maxX; + *maxY = box.maxY; + } + + EMSCRIPTEN_KEEPALIVE void set_layer_enabled(void *const sceneManager, int layer, bool enabled) { + ((SceneManager*)sceneManager)->setLayerEnabled(layer, enabled); + } + + }