From a3ca2eb372529da8220e81b9ed253552c23a6a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20P=2E?= Date: Tue, 7 Apr 2026 12:37:43 +0200 Subject: [PATCH] Fix bug with clipping --- config.js | 224 ++++++++++++++++++++------------------- js/ui.js | 2 +- js/utils/nodeUtils.js | 17 +-- scenes/salvador/index.js | 3 - scenes/ssgp/index.js | 3 - 5 files changed, 125 insertions(+), 124 deletions(-) diff --git a/config.js b/config.js index fb6919f..ef9e401 100644 --- a/config.js +++ b/config.js @@ -36,7 +36,7 @@ export const config = { isMain: true, }, ], - pano: `pano/defsky-grass.jpg`, + pano: `pano/gradient.jpg`, }, { id : "ssgp", @@ -45,116 +45,118 @@ export const config = { popup: theater2Popup, coords: [45.4401, 12.3408], nodes: [ - { - label: 'Teatro', - children: [ - { - label: 'Struttura complessiva', - model: 'models/ssgp/Teatro_SSGP_Full_ConSottrazioni.glb', - }, - { - label: 'Involucro', - model: 'models/ssgp/Teatro_SSGP_Layer_Struttura_parete_di_fondo.glb', - isMain: true, - opacity: 0.2, - }, - ] - }, - { - label: 'Sala / Auditorium', - children: [ - { - label: 'Peplano / Platea', - model: 'models/ssgp/Teatro_SSGP_Platea_peplano.glb', - }, - { - label: 'Ordini di palchi', - children: [ - { - label: 'Ordine 1', - model: 'models/ssgp/Teatro_SSGP_Ordine1.glb', - }, - { - label: 'Ordine 2', - model: 'models/ssgp/Teatro_SSGP_Ordine2.glb', - }, - { - label: 'Ordine 3', - model: 'models/ssgp/Teatro_SSGP_Ordine3.glb', - }, - { - label: 'Ordine 4', - model: 'models/ssgp/Teatro_SSGP_Ordine4.glb', - }, - { - label: 'Ordine 5', - model: 'models/ssgp/Teatro_SSGP_Ordine5.glb', - }, - ] - }, - { - label: 'Parapetto', - model: 'models/ssgp/Teatro_SSGP_parapetto_scala_piani.glb', - }, - { - label: 'Percorsi pubblico', - model: 'models/ssgp/Teatro_SSGP_Percorsi_scale_corridoi.glb', - }, - ] - }, - { - label: 'Scena', - children: [ - { - label: 'Palcoscenico', - model: 'models/ssgp/Teatro_SSGP_Palcoscenico.glb', - }, - { - label: 'Boccascena / Proscenio', - model: 'models/ssgp/Teatro_SSGP_Boccascena.glb', - }, - { - label: 'Quinte architettoniche fisse', - model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_fisse.glb', - }, - { - label: 'Quinte architettoniche mobili', - model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_mobili.glb', - }, - ] - }, - { - label: 'Spazi tecnici', - children: [ - { - label: 'Spazio tecnico superiore', - model: 'models/ssgp/Teatro_SSGP_Layer_Spazio_tecnico_sup_soffitta.glb', - children: [ - { - label: 'Graticcia', - model: 'models/ssgp/Teatro_SSGP_Graticcia.glb', - }, - { - label: 'Ballatoio', - model: 'models/ssgp/Teatro_SSGP_Ballatoio.glb', - }, - { - label: 'Spazio tecnico inferiore', - model: 'models/ssgp/Teatro_SSGP_Spazio_tecnico_inf.glb', - }, - ] - }, - ] - }, - { - label: 'Orchestra', - children: [ - { - label: 'Fossa orchestra', - model: 'models/ssgp/Teatro_SSGP_Fossa_orchestra.glb', - }, - ] - } + { + label: 'Teatro', + children: [ + /* + { + label: 'Struttura complessiva', + model: 'models/ssgp/Teatro_SSGP_Full_ConSottrazioni.glb', + }, + */ + { + label: 'Involucro', + model: 'models/ssgp/Teatro_SSGP_Layer_Struttura_parete_di_fondo.glb', + isMain: true, + opacity: 0.2, + }, + ] + }, + { + label: 'Sala / Auditorium', + children: [ + { + label: 'Peplano / Platea', + model: 'models/ssgp/Teatro_SSGP_Platea_peplano.glb', + }, + { + label: 'Ordini di palchi', + children: [ + { + label: 'Ordine 1', + model: 'models/ssgp/Teatro_SSGP_Ordine1.glb', + }, + { + label: 'Ordine 2', + model: 'models/ssgp/Teatro_SSGP_Ordine2.glb', + }, + { + label: 'Ordine 3', + model: 'models/ssgp/Teatro_SSGP_Ordine3.glb', + }, + { + label: 'Ordine 4', + model: 'models/ssgp/Teatro_SSGP_Ordine4.glb', + }, + { + label: 'Ordine 5', + model: 'models/ssgp/Teatro_SSGP_Ordine5.glb', + }, + ] + }, + { + label: 'Parapetto', + model: 'models/ssgp/Teatro_SSGP_parapetto_scala_piani.glb', + }, + { + label: 'Percorsi pubblico', + model: 'models/ssgp/Teatro_SSGP_Percorsi_scale_corridoi.glb', + }, + ] + }, + { + label: 'Scena', + children: [ + { + label: 'Palcoscenico', + model: 'models/ssgp/Teatro_SSGP_Palcoscenico.glb', + }, + { + label: 'Boccascena / Proscenio', + model: 'models/ssgp/Teatro_SSGP_Boccascena.glb', + }, + { + label: 'Quinte architettoniche fisse', + model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_fisse.glb', + }, + { + label: 'Quinte architettoniche mobili', + model: 'models/ssgp/Teatro_SSGP_Layer_quinte_architettoniche_mobili.glb', + }, + ] + }, + { + label: 'Spazi tecnici', + children: [ + { + label: 'Spazio tecnico superiore', + model: 'models/ssgp/Teatro_SSGP_Layer_Spazio_tecnico_sup_soffitta.glb', + children: [ + { + label: 'Graticcia', + model: 'models/ssgp/Teatro_SSGP_Graticcia.glb', + }, + { + label: 'Ballatoio', + model: 'models/ssgp/Teatro_SSGP_Ballatoio.glb', + }, + { + label: 'Spazio tecnico inferiore', + model: 'models/ssgp/Teatro_SSGP_Spazio_tecnico_inf.glb', + }, + ] + }, + ] + }, + { + label: 'Orchestra', + children: [ + { + label: 'Fossa orchestra', + model: 'models/ssgp/Teatro_SSGP_Fossa_orchestra.glb', + }, + ] + } ], pano: `pano/gradient.jpg`, } diff --git a/js/ui.js b/js/ui.js index 7126e94..4bf909f 100644 --- a/js/ui.js +++ b/js/ui.js @@ -24,7 +24,7 @@ UI.contentMenuTabs = ` -
+
diff --git a/js/utils/nodeUtils.js b/js/utils/nodeUtils.js index fdcbf06..20a19cf 100644 --- a/js/utils/nodeUtils.js +++ b/js/utils/nodeUtils.js @@ -9,7 +9,13 @@ * @param {Number} depth */ function traverse(node, flatList, depth = 1) { - const normNode = {label: node.label}; + const normNode = { + id: node.label, + label: node.label, + opacity: node.opacity ?? null, + isMain: node.isMain ?? false, + active: true, + }; if (node.model) { normNode.model = node.model; } @@ -18,9 +24,8 @@ function traverse(node, flatList, depth = 1) { depth }); if (node.children) { - depth++; for(let child of node.children) { - traverse(child, flatList, depth); + traverse(child, flatList, depth + 1); } } } @@ -32,11 +37,11 @@ function traverse(node, flatList, depth = 1) { * @returns {Object[]} A flat list of nodes **/ export function normalizeNodes (nodes) { - let flatNodes = []; + let flatList = []; for (let node of nodes) { - traverse(node, flatNodes); + traverse(node, flatList); } - return flatNodes; + return flatList; } diff --git a/scenes/salvador/index.js b/scenes/salvador/index.js index 14c90eb..5e44c75 100644 --- a/scenes/salvador/index.js +++ b/scenes/salvador/index.js @@ -7,9 +7,6 @@ AppState.currentScene = 'salvador'; AppState.sceneHasAudio = true; const marker = config.markers.find(m => m.id === 'salvador'); AppState.normalizedNodes = normalizeNodes(marker.nodes); - -AppState.normalizedNodes.forEach(node => node.active = true); - Scene.openScene(marker, AppState.normalizedNodes); Scene.UI.pauseAudio('[data-bs-dismiss="modal"]'); diff --git a/scenes/ssgp/index.js b/scenes/ssgp/index.js index f9a2e1f..dd5cb6d 100644 --- a/scenes/ssgp/index.js +++ b/scenes/ssgp/index.js @@ -6,7 +6,4 @@ import { normalizeNodes } from "../../js/utils/nodeUtils.js"; AppState.currentScene = 'ssgp'; const marker = config.markers.find(m => m.id === 'ssgp'); AppState.normalizedNodes = normalizeNodes(marker.nodes); - -AppState.normalizedNodes.forEach(node => node.active = true); - Scene.openScene(marker, AppState.normalizedNodes);