From c1622799d1d1d2d3a73f67de5e35676d5518a1a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P?= Date: Tue, 14 Oct 2025 10:33:30 +0200 Subject: [PATCH] Primitive clipping (WIP) --- js/scene.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/js/scene.js b/js/scene.js index c1b5065..14fba64 100644 --- a/js/scene.js +++ b/js/scene.js @@ -179,15 +179,25 @@ Scene.toggleSettingsPanel = function(triggerId) { }); } +/** + * @todo Get clipping button from state? Review logic!! + * @param {String} triggerSelector + */ Scene.UI.toggleClipper = function(triggerSelector) { document.querySelector(triggerSelector).addEventListener( 'click', () => { if (!AppState.clipping.enabled) { - Scene.activateClipper() + AppState.clipping.enabled = true; + document.querySelector(triggerSelector).className += ' border border-2 border-info'; + //Scene.activateClipper() } else { - AppState.root.remove(AppState.clipping.plane); AppState.clipping.enabled = false; + ATON.disableClipPlanes(); + // Refactor!! + document.querySelector(triggerSelector).classList.remove('border-info'); + document.querySelector(triggerSelector).classList.remove('border-2'); + document.querySelector(triggerSelector).classList.remove('border'); } } ); @@ -208,6 +218,17 @@ Scene.init = function() { // Open settings side panel when clicking on settings btn Scene.toggleSettingsPanel('settings'); Scene.toggleContentMenu('menu'); + window.addEventListener('mousedown', event => { + // Activate clipping when clicking on the scene + if (AppState.clipping.enabled && event.buttons === 1) { + const point = ATON.getSceneQueriedPoint(); + if (point) { + // Normal of the clipping plane along the Y axis facing down + ATON.addClipPlane(new THREE.Vector3(0, -1, 0), point); + console.log("I'm clipping, baby!"); + } + } + }); } /** * @param {String} id - The back-to-map button id