diff --git a/apps/editor/public/icons/elevator.svg b/apps/editor/public/icons/elevator.svg deleted file mode 100644 index ddc9563e..00000000 --- a/apps/editor/public/icons/elevator.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/packages/editor/src/components/editor/wall-move-side-handles.tsx b/packages/editor/src/components/editor/wall-move-side-handles.tsx index 43bd9019..917e01e0 100644 --- a/packages/editor/src/components/editor/wall-move-side-handles.tsx +++ b/packages/editor/src/components/editor/wall-move-side-handles.tsx @@ -3,7 +3,9 @@ import { type AnyNodeId, DEFAULT_WALL_HEIGHT, + getWallCurveFrameAt, getWallThickness, + isCurvedWall, sceneRegistry, useScene, type WallNode, @@ -11,6 +13,7 @@ import { import { useViewer } from '@pascal-app/viewer' import { createPortal, type ThreeEvent } from '@react-three/fiber' import { useEffect, useMemo, useState } from 'react' +import { useThree } from '@react-three/fiber' import { BufferGeometry, ConeGeometry, @@ -18,6 +21,7 @@ import { DoubleSide, Float32BufferAttribute, type Object3D, + OrthographicCamera, } from 'three' import { sfxEmitter } from '../../lib/sfx-bus' import useEditor from '../../store/use-editor' @@ -157,6 +161,14 @@ function WallMoveSideHandlesForWall({ wall }: { wall: WallNode }) { function WallMoveArrowHandle({ wall, handle }: { wall: WallNode; handle: WallMoveHandle }) { const [isHovered, setIsHovered] = useState(false) const arrowGeometry = useMemo(() => createArrowHandleGeometry(), []) + const { camera } = useThree() + + const zoom = + camera instanceof OrthographicCamera + ? 1 / camera.zoom + : 1 + + const scale = (isHovered ? 1.12 : 1) * zoom useEffect(() => { return () => { @@ -186,7 +198,7 @@ function WallMoveArrowHandle({ wall, handle }: { wall: WallNode; handle: WallMov