From 916097733fda0b33da123ec41600723a459007db Mon Sep 17 00:00:00 2001 From: wass08 Date: Thu, 29 Jan 2026 14:52:15 +0900 Subject: [PATCH] text for zones --- .../components/systems/zone/zone-system.tsx | 7 ++- apps/editor/public/fonts/dinpro_medium.otf | Bin 0 -> 140816 bytes .../renderers/zone/zone-renderer.tsx | 48 +++++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 apps/editor/public/fonts/dinpro_medium.otf diff --git a/apps/editor/components/systems/zone/zone-system.tsx b/apps/editor/components/systems/zone/zone-system.tsx index ecb60d16..8f7554f8 100644 --- a/apps/editor/components/systems/zone/zone-system.tsx +++ b/apps/editor/components/systems/zone/zone-system.tsx @@ -11,7 +11,12 @@ export const ZoneSystem = () => { zones.forEach((zoneId) => { const node = sceneRegistry.nodes.get(zoneId) if (node) { - node.visible = visible + node.visible = visible; + const label = node.getObjectByName('label'); + if (label) { + label.position.y = visible ? 1 : -1000; + // Hacky way to hide the label when not visible + } } }) }, [structureLayer]) diff --git a/apps/editor/public/fonts/dinpro_medium.otf b/apps/editor/public/fonts/dinpro_medium.otf new file mode 100755 index 0000000000000000000000000000000000000000..6f771ab68d4b62818a19ca6642c4ada5f50874bd GIT binary patch literal 140816 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 XII4dA!o=nEKZT+%r1N~ediDMvpFGBO literal 0 HcmV?d00001 diff --git a/packages/viewer/src/components/renderers/zone/zone-renderer.tsx b/packages/viewer/src/components/renderers/zone/zone-renderer.tsx index 0802dcce..c8e2fce3 100644 --- a/packages/viewer/src/components/renderers/zone/zone-renderer.tsx +++ b/packages/viewer/src/components/renderers/zone/zone-renderer.tsx @@ -1,4 +1,5 @@ import { useRegistry, type ZoneNode } from '@pascal-app/core' +import { Html } from '@react-three/drei' import { useMemo, useRef } from 'react' import { BufferGeometry, Color, DoubleSide, Float32BufferAttribute, type Group, Shape } from 'three' import { color, float, uv } from 'three/tsl' @@ -125,6 +126,33 @@ export const ZoneRenderer = ({ node }: { node: ZoneNode }) => { return createWallGeometry(node.polygon) }, [node?.polygon]) + // Calculate polygon centroid for label positioning using the geometric centroid formula + // This correctly handles polygons regardless of vertex distribution along edges + const centroid = useMemo(() => { + if (!node?.polygon || node.polygon.length < 3) return [0, 0] as [number, number] + + const polygon = node.polygon + let signedArea = 0 + let cx = 0 + let cz = 0 + + for (let i = 0; i < polygon.length; i++) { + const [x0, z0] = polygon[i]! + const [x1, z1] = polygon[(i + 1) % polygon.length]! + + // Cross product for signed area + const cross = x0 * z1 - x1 * z0 + signedArea += cross + cx += (x0 + x1) * cross + cz += (z0 + z1) * cross + } + + signedArea /= 2 + const factor = 1 / (6 * signedArea) + + return [cx * factor, cz * factor] as [number, number] + }, [node?.polygon]) + // Create materials const floorMaterial = useMemo(() => { if (!node?.color) return null @@ -144,8 +172,26 @@ export const ZoneRenderer = ({ node }: { node: ZoneNode }) => { return ( + +
+ {/*
*/} + {node.name}
+ {/* Floor fill */} - +