- {selectedLayout && (
+ {comparisonProduct && (
-
+
)}
{width !== "0px" &&
- !selectedLayout && ( // Show only if no layout selected
+ !comparisonProduct && ( // Show only if no layout selected
@@ -177,16 +173,6 @@ const CompareLayOut: React.FC
= ({ dummyLayouts }) => {
)}
{/* Always show after layout is selected */}
- {width !== "0px" && selectedLayout && (
-
- l.productName)} // Pass layout names as options
- onSelect={handleSelectLayout}
- search={false}
- />
-
- )}
);
diff --git a/app/src/modules/builder/asset/assetsGroup.tsx b/app/src/modules/builder/asset/assetsGroup.tsx
index 5b6008d..e407d3c 100644
--- a/app/src/modules/builder/asset/assetsGroup.tsx
+++ b/app/src/modules/builder/asset/assetsGroup.tsx
@@ -12,6 +12,7 @@ import useModuleStore from "../../../store/useModuleStore";
import { useThree } from "@react-three/fiber";
import { CameraControls } from "@react-three/drei";
import addAssetModel from "./functions/addAssetModel";
+import { useSceneContext } from "../../scene/sceneContext";
const gltfLoaderWorker = new Worker(
new URL(
@@ -20,8 +21,9 @@ const gltfLoaderWorker = new Worker(
)
);
-function AssetsGroup({ floorGroup, plane }: { floorGroup: RefGroup, plane: RefMesh }) {
+function AssetsGroup({ floorGroup, plane }: { readonly floorGroup: RefGroup, readonly plane: RefMesh }) {
const { activeModule } = useModuleStore();
+ const { layout } = useSceneContext();
const { socket } = useSocketStore();
const { controls, gl, pointer, camera, raycaster } = useThree();
const { setLoadingProgress } = useLoadingProgress();
diff --git a/app/src/modules/builder/asset/models/model/model.tsx b/app/src/modules/builder/asset/models/model/model.tsx
index d7af8d4..39fb4be 100644
--- a/app/src/modules/builder/asset/models/model/model.tsx
+++ b/app/src/modules/builder/asset/models/model/model.tsx
@@ -12,7 +12,8 @@ import { useEventsStore } from "../../../../../store/simulation/useEventsStore";
import { useProductStore } from "../../../../../store/simulation/useProductStore";
import useModuleStore, { useSubModuleStore } from '../../../../../store/useModuleStore';
import { useLeftData, useTopData } from '../../../../../store/visualization/useZone3DWidgetStore';
-import { useSelectedAsset, useSelectedProduct } from '../../../../../store/simulation/useSimulationStore';
+import { useSelectedAsset } from '../../../../../store/simulation/useSimulationStore';
+import { useProductContext } from '../../../../simulation/products/productContext';
function Model({ asset }: { readonly asset: Asset }) {
const { camera, controls, gl } = useThree();
@@ -24,7 +25,8 @@ function Model({ asset }: { readonly asset: Asset }) {
const { setLeft } = useLeftData();
const { getIsEventInProduct } = useProductStore();
const { getEventByModelUuid } = useEventsStore();
- const { selectedProduct } = useSelectedProduct();
+ const { selectedProductStore } = useProductContext();
+ const { selectedProduct } = selectedProductStore();
const { setSelectedAsset, clearSelectedAsset } = useSelectedAsset();
const { socket } = useSocketStore();
const { deletableFloorItem, setDeletableFloorItem } = useDeletableFloorItem();
@@ -199,7 +201,7 @@ function Model({ asset }: { readonly asset: Asset }) {
}
}
-
+
const handleContextMenu = (asset: Asset, evt: ThreeEvent
) => {
if (activeTool === "cursor" && subModule === 'simulations') {
@@ -250,10 +252,10 @@ function Model({ asset }: { readonly asset: Asset }) {
userData={asset}
onDoubleClick={(e) => {
e.stopPropagation();
+ handleDblClick(asset);
}}
onClick={(e) => {
e.stopPropagation();
- handleDblClick(asset);
handleClick(asset);
}}
onPointerOver={(e) => {
diff --git a/app/src/modules/scene/controls/selectionControls/moveControls.tsx b/app/src/modules/scene/controls/selectionControls/moveControls.tsx
index d28e852..3a68e96 100644
--- a/app/src/modules/scene/controls/selectionControls/moveControls.tsx
+++ b/app/src/modules/scene/controls/selectionControls/moveControls.tsx
@@ -11,11 +11,11 @@ import * as Types from "../../../../types/world/worldTypes";
import { detectModifierKeys } from "../../../../utils/shortcutkeys/detectModifierKeys";
import { useEventsStore } from "../../../../store/simulation/useEventsStore";
import { useProductStore } from "../../../../store/simulation/useProductStore";
-import { useSelectedProduct } from "../../../../store/simulation/useSimulationStore";
import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi";
import { snapControls } from "../../../../utils/handleSnap";
import DistanceFindingControls from "./distanceFindingControls";
import { useAssetsStore } from "../../../../store/builder/useAssetStore";
+import { useProductContext } from "../../../simulation/products/productContext";
function MoveControls({
movedObjects,
@@ -34,7 +34,8 @@ function MoveControls({
const { toggleView } = useToggleView();
const { selectedAssets, setSelectedAssets } = useSelectedAssets();
- const { selectedProduct } = useSelectedProduct();
+ const { selectedProductStore } = useProductContext();
+ const { selectedProduct } = selectedProductStore();
const { socket } = useSocketStore();
const [keyEvent, setKeyEvent] = useState<"Ctrl" | "Shift" | "Ctrl+Shift" | "">("");
const email = localStorage.getItem("email");
diff --git a/app/src/modules/scene/controls/selectionControls/rotateControls.tsx b/app/src/modules/scene/controls/selectionControls/rotateControls.tsx
index 83a1eb4..0418d46 100644
--- a/app/src/modules/scene/controls/selectionControls/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selectionControls/rotateControls.tsx
@@ -6,9 +6,9 @@ import { useSelectedAssets, useSocketStore, useToggleView } from "../../../../st
import * as Types from "../../../../types/world/worldTypes";
import { useEventsStore } from "../../../../store/simulation/useEventsStore";
import { useProductStore } from "../../../../store/simulation/useProductStore";
-import { useSelectedProduct } from "../../../../store/simulation/useSimulationStore";
import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi";
import { useAssetsStore } from "../../../../store/builder/useAssetStore";
+import { useProductContext } from "../../../simulation/products/productContext";
function RotateControls({
rotatedObjects,
@@ -27,7 +27,8 @@ function RotateControls({
const { toggleView } = useToggleView();
const { selectedAssets, setSelectedAssets } = useSelectedAssets();
- const { selectedProduct } = useSelectedProduct();
+ const { selectedProductStore } = useProductContext();
+ const { selectedProduct } = selectedProductStore();
const { socket } = useSocketStore();
const email = localStorage.getItem('email')
@@ -208,7 +209,7 @@ function RotateControls({
if (obj.userData.eventData) {
const eventData = useEventsStore.getState().getEventByModelUuid(obj.userData.modelUuid);
- const productData = useProductStore.getState().getEventByModelUuid(useSelectedProduct.getState().selectedProduct.productId, obj.userData.modelUuid);
+ const productData = useProductStore.getState().getEventByModelUuid(selectedProductStore.getState().selectedProduct.productId, obj.userData.modelUuid);
if (eventData) {
useEventsStore.getState().updateEvent(obj.userData.modelUuid, {
@@ -217,7 +218,7 @@ function RotateControls({
})
}
if (productData) {
- const event = useProductStore.getState().updateEvent(useSelectedProduct.getState().selectedProduct.productId, obj.userData.modelUuid, {
+ const event = useProductStore.getState().updateEvent(selectedProductStore.getState().selectedProduct.productId, obj.userData.modelUuid, {
position: [worldPosition.x, worldPosition.y, worldPosition.z],
rotation: [obj.rotation.x, obj.rotation.y, obj.rotation.z],
})
diff --git a/app/src/modules/scene/controls/transformControls/transformControls.tsx b/app/src/modules/scene/controls/transformControls/transformControls.tsx
index 66e965f..3c66589 100644
--- a/app/src/modules/scene/controls/transformControls/transformControls.tsx
+++ b/app/src/modules/scene/controls/transformControls/transformControls.tsx
@@ -8,10 +8,10 @@ import { useEffect, useState } from "react";
import { detectModifierKeys } from "../../../../utils/shortcutkeys/detectModifierKeys";
import { useEventsStore } from "../../../../store/simulation/useEventsStore";
import { useProductStore } from "../../../../store/simulation/useProductStore";
-import { useSelectedProduct } from "../../../../store/simulation/useSimulationStore";
import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi";
import { setFloorItemApi } from "../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi";
import { useAssetsStore } from "../../../../store/builder/useAssetStore";
+import { useProductContext } from "../../../simulation/products/productContext";
export default function TransformControl() {
const state = useThree();
@@ -21,7 +21,8 @@ export default function TransformControl() {
const { setObjectRotation } = useObjectRotation();
const { activeTool } = useActiveTool();
const { socket } = useSocketStore();
- const { selectedProduct } = useSelectedProduct();
+ const { selectedProductStore } = useProductContext();
+ const { selectedProduct } = selectedProductStore();
const { updateAsset, getAssetById } = useAssetsStore();
const email = localStorage.getItem('email')
diff --git a/app/src/modules/scene/scene.tsx b/app/src/modules/scene/scene.tsx
index 00c5bbc..7777a30 100644
--- a/app/src/modules/scene/scene.tsx
+++ b/app/src/modules/scene/scene.tsx
@@ -1,5 +1,6 @@
import { useMemo } from "react";
import { Canvas } from "@react-three/fiber";
+import { Color } from "three";
import { KeyboardControls } from "@react-three/drei";
import { SceneProvider } from "./sceneContext";
@@ -9,7 +10,7 @@ import Setup from "./setup/setup";
import Simulation from "../simulation/simulation";
import Collaboration from "../collaboration/collaboration";
-export default function Scene() {
+export default function Scene({ layout }: { readonly layout: 'Main Layout' | 'Comparison Layout' }) {
const map = useMemo(() => [
{ name: "forward", keys: ["ArrowUp", "w", "W"] },
{ name: "backward", keys: ["ArrowDown", "s", "S"] },
@@ -18,7 +19,7 @@ export default function Scene() {
], []);
return (
-
+