update: transform tool ui added

This commit is contained in:
2025-08-25 11:34:25 +05:30
parent 4013afdc02
commit 50e4c1a2a6
3 changed files with 37 additions and 11 deletions

View File

@@ -36,6 +36,7 @@ import {
} from "../../store/visualization/useDroppedObjectsStore"; } from "../../store/visualization/useDroppedObjectsStore";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import { useVersionContext } from "../../modules/builder/version/versionContext"; import { useVersionContext } from "../../modules/builder/version/versionContext";
import { MoveIcon, RotateIcon } from "../icons/ShortcutIcons";
// Utility component // Utility component
const ToolButton = ({ const ToolButton = ({
@@ -65,12 +66,8 @@ const Tools: React.FC = () => {
const { isPlaying, setIsPlaying } = usePlayButtonStore(); const { isPlaying, setIsPlaying } = usePlayButtonStore();
const { showShortcuts } = useShortcutStore(); const { showShortcuts } = useShortcutStore();
const { const { activeTool, setActiveTool, setToolMode, setAddAction } =
activeTool, useStoreHooks();
setActiveTool,
setToolMode,
setAddAction,
} = useStoreHooks();
const { setActiveSubTool, activeSubTool } = useActiveSubTool(); const { setActiveSubTool, activeSubTool } = useActiveSubTool();
const { setSelectedWallItem } = useSelectedWallItem(); const { setSelectedWallItem } = useSelectedWallItem();
@@ -81,14 +78,15 @@ const Tools: React.FC = () => {
const { selectedZone } = useSelectedZoneStore(); const { selectedZone } = useSelectedZoneStore();
const { floatingWidget } = useFloatingWidget(); const { floatingWidget } = useFloatingWidget();
const { widgets3D } = use3DWidget(); const { widgets3D } = use3DWidget();
const { visualizationSocket } = useSocketStore();
const dropdownRef = useRef<HTMLButtonElement>(null); const { visualizationSocket } = useSocketStore();
const [openDrop, setOpenDrop] = useState(false);
const { selectedVersionStore } = useVersionContext(); const { selectedVersionStore } = useVersionContext();
const { selectedVersion } = selectedVersionStore(); const { selectedVersion } = selectedVersionStore();
const { projectId } = useParams(); const { projectId } = useParams();
const dropdownRef = useRef<HTMLButtonElement>(null);
const [openDrop, setOpenDrop] = useState(false);
// 1. Set UI toggles on initial render // 1. Set UI toggles on initial render
useEffect(() => { useEffect(() => {
setToggleUI( setToggleUI(
@@ -155,7 +153,7 @@ const Tools: React.FC = () => {
if (!is2D) setAddAction("Pillar"); if (!is2D) setAddAction("Pillar");
break; break;
case "delete": case "delete":
is2D ? setToolMode('2D-Delete') : setToolMode('3D-Delete'); is2D ? setToolMode("2D-Delete") : setToolMode("3D-Delete");
break; break;
} }
}; };
@@ -251,7 +249,7 @@ const Tools: React.FC = () => {
templates, templates,
visualizationSocket, visualizationSocket,
projectId, projectId,
versionId: selectedVersion?.versionId || '' versionId: selectedVersion?.versionId || "",
}) })
} }
/> />
@@ -278,6 +276,10 @@ const Tools: React.FC = () => {
return FreeMoveIcon; return FreeMoveIcon;
case "delete": case "delete":
return DeleteIcon; return DeleteIcon;
case "move":
return MoveIcon;
case "rotate":
return RotateIcon;
default: default:
return CursorIcon; return CursorIcon;
} }
@@ -304,6 +306,10 @@ const Tools: React.FC = () => {
return <FreeMoveIcon isActive={false} />; return <FreeMoveIcon isActive={false} />;
case "delete": case "delete":
return <DeleteIcon isActive={false} />; return <DeleteIcon isActive={false} />;
case "move":
return <MoveIcon />;
case "rotate":
return <RotateIcon />;
default: default:
return null; return null;
} }
@@ -362,6 +368,24 @@ const Tools: React.FC = () => {
)} )}
</div> </div>
{activeModule !== "visualization" && (
<>
<div className="split"></div>
<div className="transform-tools">
{["move", "rotate"].map((tool) => (
<ToolButton
key={tool}
toolId={tool}
icon={getIconByTool(tool)}
tooltip={`${tool}`}
active={activeTool === tool}
onClick={() => setActiveTool(tool)}
/>
))}
</div>
</>
)}
<div className="split"></div> <div className="split"></div>
{activeModule === "builder" && renderBuilderTools()} {activeModule === "builder" && renderBuilderTools()}
{activeModule === "simulation" && renderSimulationTools()} {activeModule === "simulation" && renderSimulationTools()}

View File

@@ -100,6 +100,7 @@ const MeasurementTool = () => {
canvasElement.removeEventListener("pointerup", onMouseUp); canvasElement.removeEventListener("pointerup", onMouseUp);
canvasElement.removeEventListener("contextmenu", onContextMenu); canvasElement.removeEventListener("contextmenu", onContextMenu);
}; };
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [toolMode, camera, raycaster, pointer, scene, points]); }, [toolMode, camera, raycaster, pointer, scene, points]);
useFrame(() => { useFrame(() => {

View File

@@ -31,6 +31,7 @@
} }
.draw-tools, .draw-tools,
.transform-tools,
.general-options, .general-options,
.activeDropicon { .activeDropicon {
@include flex-center; @include flex-center;