Primitive clipping (WIP)

This commit is contained in:
Nicolò P 2025-10-14 10:33:30 +02:00
parent 224763bbdf
commit c1622799d1

View File

@ -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