fix exame fisico4

This commit is contained in:
Rodrigo Bertoldo de Sousa Martins committed 2026-09-10 20:34:30 -03:00
1 parent 6b5adc3403
commit 43df670a55
2 files changed
+45 -16

No files matched your search

+14
View File
@@ -104,6 +104,16 @@ function CameraController({ modelFiles }: { modelFiles: string[] }) {
const regionFocusRequest = useAtlasStore((s) => s.regionFocusRequest);
const setContentBox = useAtlasStore((s) => s.setContentBox);
// focusRequest/regionFocusRequest moram no store GLOBAL (compartilhado
// entre páginas) — se o usuário clicou "Cabeça" no Atlas e depois foi pro
// Exame Físico, um <Scene> novo montaria aqui e replayaria esse clique
// antigo, zoomando numa região errada sem o usuário ter clicado em nada
// nesta página. Guardamos o nonce já visto NA MONTAGEM (valor inicial do
// useRef) pra só reagir a cliques que aconteçam DEPOIS que esta instância
// da câmera já existe.
const seenFocusNonce = useRef(focusRequest?.nonce);
const seenRegionNonce = useRef(regionFocusRequest?.nonce);
// Malhas reais (Z-Anatomy) não seguem a mesma escala/origem que os
// modelos esquemáticos antigos (podem vir em cm, ou centralizadas em
// outro ponto) — em vez de assumir uma posição de câmera fixa, sempre
@@ -137,6 +147,8 @@ function CameraController({ modelFiles }: { modelFiles: string[] }) {
useEffect(() => {
if (!focusRequest || !controlsRef.current) return;
if (focusRequest.nonce === seenFocusNonce.current) return;
seenFocusNonce.current = focusRequest.nonce;
const obj = scene.getObjectByName(focusRequest.slug);
if (!obj) return;
const box = computeVisibleBoundingBox(obj);
@@ -151,6 +163,8 @@ function CameraController({ modelFiles }: { modelFiles: string[] }) {
useEffect(() => {
if (!regionFocusRequest || !controlsRef.current) return;
if (regionFocusRequest.nonce === seenRegionNonce.current) return;
seenRegionNonce.current = regionFocusRequest.nonce;
const total = computeVisibleBoundingBox(scene);
if (total.isEmpty()) return;
const box = regionSubBox(total, regionFocusRequest.region);