fix exame fisico4
This commit is contained in:
1 parent
6b5adc3403
commit
43df670a55
2 files changed
+45
-16
No files matched your search
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user