update: transform tool ui added
This commit is contained in:
@@ -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()}
|
||||||
|
|||||||
@@ -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(() => {
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.draw-tools,
|
.draw-tools,
|
||||||
|
.transform-tools,
|
||||||
.general-options,
|
.general-options,
|
||||||
.activeDropicon {
|
.activeDropicon {
|
||||||
@include flex-center;
|
@include flex-center;
|
||||||
|
|||||||
Reference in New Issue
Block a user