From ef98b3c1a38d19537a1efad65936396359a79955 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 1 Sep 2025 15:09:04 +0530 Subject: [PATCH] optimized old zustand store and post processing outlines --- .../components/layout/scenes/MainScene.tsx | 347 ++++---- .../layout/sidebarRight/SideBarRight.tsx | 21 +- .../properties/AssetProperties.tsx | 243 +++--- .../properties/GlobalProperties.tsx | 66 +- app/src/components/ui/Tools.tsx | 777 +++++++++--------- .../eventHandler/useDecalEventHandlers.ts | 60 +- .../functions/handleDecalPositionSnap.ts | 43 + app/src/modules/builder/asset/assetsGroup.tsx | 7 +- .../model/eventHandlers/useEventHandlers.ts | 28 +- .../builder/asset/models/model/model.tsx | 18 +- .../modules/builder/asset/models/models.tsx | 9 +- .../selection3D/selectionControls3D.tsx | 6 +- .../transformControls/transformControls.tsx | 72 +- .../outlineInstance/outlineInstance.tsx | 41 + .../outlineInstances/outlineInstances.tsx | 89 ++ .../scene/postProcessing/postProcessing.tsx | 281 +------ app/src/store/builder/store.ts | 70 -- app/src/store/builder/useBuilderStore.ts | 15 +- .../utils/shortcutkeys/handleShortcutKeys.ts | 475 +++++------ 19 files changed, 1228 insertions(+), 1440 deletions(-) create mode 100644 app/src/modules/builder/Decal/functions/handleDecalPositionSnap.ts create mode 100644 app/src/modules/scene/postProcessing/outlineInstances/outlineInstance/outlineInstance.tsx create mode 100644 app/src/modules/scene/postProcessing/outlineInstances/outlineInstances.tsx diff --git a/app/src/components/layout/scenes/MainScene.tsx b/app/src/components/layout/scenes/MainScene.tsx index 350c9e9..cc88095 100644 --- a/app/src/components/layout/scenes/MainScene.tsx +++ b/app/src/components/layout/scenes/MainScene.tsx @@ -1,13 +1,12 @@ import React, { useEffect } from "react"; import { - useLoadingProgress, - useRenameModeStore, - useSaveVersion, - useSelectedAssets, - useSelectedComment, - useSelectedFloorItem, - useSocketStore, - useWidgetSubOption, + useLoadingProgress, + useRenameModeStore, + useSaveVersion, + useSelectedAssets, + useSelectedComment, + useSocketStore, + useWidgetSubOption, } from "../../../store/builder/store"; import useModuleStore, { useThreeDStore } from "../../../store/useModuleStore"; import { usePlayButtonStore } from "../../../store/usePlayButtonStore"; @@ -27,10 +26,7 @@ import ControlsPlayer from "../controls/ControlsPlayer"; import SelectFloorPlan from "../../temporary/SelectFloorPlan"; import { createHandleDrop } from "../../../modules/visualization/functions/handleUiDrop"; import Scene from "../../../modules/scene/scene"; -import { - useComparisonProduct, - useMainProduct, -} from "../../../store/simulation/useSimulationStore"; +import { useComparisonProduct, useMainProduct } from "../../../store/simulation/useSimulationStore"; import { useProductContext } from "../../../modules/simulation/products/productContext"; import RegularDropDown from "../../ui/inputs/RegularDropDown"; import RenameTooltip from "../../ui/features/RenameTooltip"; @@ -42,184 +38,173 @@ import { useVersionContext } from "../../../modules/builder/version/versionConte import VersionSaved from "../sidebarRight/versionHisory/VersionSaved"; import Footer from "../../footer/Footer"; import ThreadChat from "../../ui/collaboration/ThreadChat"; +import { useBuilderStore } from "../../../store/builder/useBuilderStore"; function MainScene() { - const { setMainProduct } = useMainProduct(); - const { selectedProductStore } = useProductContext(); - const { selectedProduct } = selectedProductStore(); - const { isVersionSaved, setIsVersionSaved } = useSaveVersion(); - const { activeModule } = useModuleStore(); - const { selectedUser } = useSelectedUserStore(); - const { loadingProgress } = useLoadingProgress(); - const { toggleThreeD } = useThreeDStore(); - const { isPlaying } = usePlayButtonStore(); - const { widgetSubOption } = useWidgetSubOption(); - const { visualizationSocket } = useSocketStore(); - const { selectedZone } = useSelectedZoneStore(); - const { setFloatingWidget } = useFloatingWidget(); - const { clearComparisonProduct } = useComparisonProduct(); - const { selectedFloorItem, setSelectedFloorItem } = useSelectedFloorItem(); - const { selectedAssets, setSelectedAssets } = useSelectedAssets(); - const { assetStore, productStore } = useSceneContext(); - const { products } = productStore(); - const { setName } = assetStore(); - const { projectId } = useParams() - const { isRenameMode, setIsRenameMode } = useRenameModeStore(); - const { versionHistory } = useVersionHistoryStore(); - const { selectedVersionStore } = useVersionContext(); - const { selectedVersion, setSelectedVersion } = selectedVersionStore(); - const { selectedComment, commentPositionState } = useSelectedComment(); + const { setMainProduct } = useMainProduct(); + const { selectedProductStore } = useProductContext(); + const { selectedProduct } = selectedProductStore(); + const { isVersionSaved, setIsVersionSaved } = useSaveVersion(); + const { activeModule } = useModuleStore(); + const { selectedUser } = useSelectedUserStore(); + const { loadingProgress } = useLoadingProgress(); + const { toggleThreeD } = useThreeDStore(); + const { isPlaying } = usePlayButtonStore(); + const { widgetSubOption } = useWidgetSubOption(); + const { visualizationSocket } = useSocketStore(); + const { selectedZone } = useSelectedZoneStore(); + const { setFloatingWidget } = useFloatingWidget(); + const { clearComparisonProduct } = useComparisonProduct(); + const { selectedFloorAsset, setSelectedFloorAsset } = useBuilderStore(); + const { selectedAssets, setSelectedAssets } = useSelectedAssets(); + const { assetStore, productStore } = useSceneContext(); + const { products } = productStore(); + const { setName } = assetStore(); + const { projectId } = useParams() + const { isRenameMode, setIsRenameMode } = useRenameModeStore(); + const { versionHistory } = useVersionHistoryStore(); + const { selectedVersionStore } = useVersionContext(); + const { selectedVersion, setSelectedVersion } = selectedVersionStore(); + const { selectedComment, commentPositionState } = useSelectedComment(); - useEffect(() => { - if (activeModule !== 'simulation') { - clearComparisonProduct(); - setIsVersionSaved(false); - } - }, [activeModule, clearComparisonProduct, setIsVersionSaved]) - - useEffect(() => { - if (versionHistory.length > 0) { - setSelectedVersion(versionHistory[0]) - } - }, [setSelectedVersion, versionHistory]) - - const handleSelectVersion = (option: string) => { - const version = versionHistory.find((version) => version.versionName === option); - if (version) { - setSelectedVersion(version); - } - }; - - const handleSelectProduct = (option: string) => { - const product = products.find((product) => product.productName === option); - if (product) { - setMainProduct(product.productUuid, product.productName); - } - }; - - const handleObjectRename = async (newName: string) => { - if (!projectId) return - if (selectedFloorItem) { - console.log('selectedFloorItem.userData.modelUuid: ', selectedFloorItem.userData.modelUuid); - console.log(' newName: ', newName); - console.log('projectId: ', projectId); - setAssetsApi({ - modelUuid: selectedFloorItem.userData.modelUuid, - modelName: newName, - projectId, - versionId: selectedVersion?.versionId || '' - }).then(() => { - selectedFloorItem.userData = { - ...selectedFloorItem.userData, - modelName: newName - }; - setSelectedFloorItem(selectedFloorItem); - setIsRenameMode(false); - setName(selectedFloorItem.userData.modelUuid, newName); - }) - } else if (selectedAssets.length === 1) { - setAssetsApi({ - modelUuid: selectedAssets[0].userData.modelUuid, - modelName: newName, - projectId, - versionId: selectedVersion?.versionId || '' - }).then(() => { - selectedAssets[0].userData = { - ...selectedAssets[0].userData, - modelName: newName - }; - setSelectedAssets(selectedAssets); - setIsRenameMode(false); - setName(selectedAssets[0].userData.modelUuid, newName); - }) - } - } - - return ( - <> - {!selectedUser && ( - <> - - {loadingProgress > 0 && } - {!isPlaying && ( - <> - {toggleThreeD && !isVersionSaved && } - - - - )} - - {activeModule === "market" && } - {activeModule !== "market" && !isPlaying && !isVersionSaved && ( - - )} - {(isPlaying) && - activeModule === "simulation" && - loadingProgress === 0 && } - {(isPlaying) && - activeModule !== "simulation" && } - - {isRenameMode && (selectedFloorItem?.userData.modelName || selectedAssets.length === 1) && } - {/* remove this later */} - {activeModule === "builder" && !toggleThreeD && } - - )} -
- createHandleDrop({ - widgetSubOption, - visualizationSocket, - selectedZone, - setFloatingWidget, - event, - projectId, - versionId: selectedVersion?.versionId || '', - }) + useEffect(() => { + if (activeModule !== 'simulation') { + clearComparisonProduct(); + setIsVersionSaved(false); } - onDragOver={(event) => event.preventDefault()} - > - -
+ }, [activeModule, clearComparisonProduct, setIsVersionSaved]) - {selectedProduct && selectedVersion && isVersionSaved && !isPlaying && activeModule === "simulation" && ( -
- v.versionName)} // Pass layout names as options - onSelect={handleSelectVersion} - search={false} - /> -
- l.productName)} // Pass layout names as options - onSelect={handleSelectProduct} - search={false} - /> -
- )} + useEffect(() => { + if (versionHistory.length > 0) { + setSelectedVersion(versionHistory[0]) + } + }, [setSelectedVersion, versionHistory]) - {activeModule !== "market" && !selectedUser &&