From 280fe59a14cd84eff6d1fb7b9cca4eaa89cf32ee Mon Sep 17 00:00:00 2001
From: SreeNath14 <153710861+SreeNath14@users.noreply.github.com>
Date: Fri, 4 Apr 2025 09:54:08 +0530
Subject: [PATCH 01/17] :updated  swap"

---
 .../simulation/process/processAnimator.tsx    | 201 ++++++++----------
 app/src/types/world/worldTypes.d.ts           |  29 ++-
 2 files changed, 116 insertions(+), 114 deletions(-)

diff --git a/app/src/modules/simulation/process/processAnimator.tsx b/app/src/modules/simulation/process/processAnimator.tsx
index 512b165..fe62343 100644
--- a/app/src/modules/simulation/process/processAnimator.tsx
+++ b/app/src/modules/simulation/process/processAnimator.tsx
@@ -78,7 +78,7 @@
 // const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
 //   processes,
 // }) => {
-//   
+//
 //   const gltf = useLoader(GLTFLoader, boxGltb) as GLTF;
 //   const { isPlaying } = usePlayButtonStore();
 //   const groupRef = useRef<THREE.Group>(null);
@@ -646,14 +646,13 @@ interface SpawnedObject {
   material: THREE.Material;
   spawnTime: number;
   currentMaterialType: string;
-  position: THREE.Vector3; // The position of the object
+  position: THREE.Vector3;
 }
 
 interface ProcessAnimationState {
   spawnedObjects: { [objectId: string]: SpawnedObject };
   nextSpawnTime: number;
   objectIdCounter: number;
-  // New fields for process-wide delay
   isProcessDelaying: boolean;
   processDelayStartTime: number;
   processDelayDuration: number;
@@ -662,10 +661,10 @@ interface ProcessAnimationState {
 const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
   processes,
 }) => {
-  
   const gltf = useLoader(GLTFLoader, boxGltb) as GLTF;
   const { isPlaying } = usePlayButtonStore();
   const groupRef = useRef<THREE.Group>(null);
+  const debugRef = useRef<boolean>(false);
 
   const [animationStates, setAnimationStates] = useState<
     Record<string, ProcessAnimationState>
@@ -674,15 +673,8 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
   // Base materials
   const baseMaterials = useMemo(
     () => ({
-      Wood: new THREE.MeshStandardMaterial({ color: 0x8b4513 }),
-      Box: new THREE.MeshPhongMaterial({
-        color: 0xcccccc,
-      }),
-      Crate: new THREE.MeshStandardMaterial({
-        color: 0x00aaff,
-        metalness: 0.1,
-        roughness: 0.5,
-      }),
+      Box: new THREE.MeshStandardMaterial({ color: 0x8b4513 }),
+      Crate: new THREE.MeshStandardMaterial({ color: 0x00ff00 }),
       Default: new THREE.MeshStandardMaterial({ color: 0x00ff00 }),
     }),
     []
@@ -701,7 +693,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         spawnedObjects: {},
         nextSpawnTime: 0,
         objectIdCounter: 0,
-        // Initialize process-wide delay state
         isProcessDelaying: false,
         processDelayStartTime: 0,
         processDelayDuration: 0,
@@ -710,7 +701,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     setAnimationStates(newStates);
   }, [isPlaying, processes]);
 
-  // Find spawn point in a process
   const findSpawnPoint = (process: ProcessData): ProcessPoint | null => {
     for (const path of process.paths || []) {
       for (const point of path.points || []) {
@@ -725,22 +715,16 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     return null;
   };
 
-  // Find the corresponding animation path point for a spawn point
   const findAnimationPathPoint = (
     process: ProcessData,
     spawnPoint: ProcessPoint
   ): THREE.Vector3 => {
-    // If we have an animation path, use the first point
     if (process.animationPath && process.animationPath.length > 0) {
-      // Find the index of this point in the path
       let pointIndex = 0;
-
-      // Try to find the corresponding point in the animation path
       for (const path of process.paths || []) {
         for (let i = 0; i < (path.points?.length || 0); i++) {
           const point = path.points?.[i];
           if (point && point.uuid === spawnPoint.uuid) {
-            // Found the matching point
             if (process.animationPath[pointIndex]) {
               const p = process.animationPath[pointIndex];
               return new THREE.Vector3(p.x, p.y, p.z);
@@ -749,16 +733,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
           pointIndex++;
         }
       }
-
-      // Fallback to the spawn point's position
-      return new THREE.Vector3(
-        spawnPoint.position[0],
-        spawnPoint.position[1],
-        spawnPoint.position[2]
-      );
     }
-
-    // If no animation path, use the spawn point's position
     return new THREE.Vector3(
       spawnPoint.position[0],
       spawnPoint.position[1],
@@ -766,7 +741,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     );
   };
 
-  // Create a new spawned object
   const createSpawnedObject = (
     process: ProcessData,
     currentTime: number,
@@ -778,8 +752,14 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
       ...(process.customMaterials || {}),
     };
 
-    // Get the position where we should spawn
     const spawnPosition = findAnimationPathPoint(process, spawnPoint);
+    const material =
+      processMaterials[materialType as keyof typeof processMaterials] ||
+      baseMaterials.Default;
+
+    if (debugRef.current) {
+      console.log(`Creating object with material: ${materialType}`, material);
+    }
 
     return {
       ref: React.createRef(),
@@ -795,34 +775,50 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         currentPathIndex: 0,
       },
       visible: true,
-      material:
-        processMaterials[materialType as keyof typeof processMaterials] ||
-        baseMaterials.Default,
+      material: material,
       currentMaterialType: materialType,
       spawnTime: currentTime,
-      position: spawnPosition, // Store the position directly
+      position: spawnPosition,
     };
   };
 
-  // Handle material swap for an object
   const handleMaterialSwap = (
     processId: string,
     objectId: string,
     materialType: string
   ) => {
+    if (debugRef.current) {
+      console.log(`Attempting material swap to: ${materialType}`);
+    }
+
     setAnimationStates((prev) => {
       const processState = prev[processId];
-      if (!processState || !processState.spawnedObjects[objectId]) return prev;
+      if (!processState || !processState.spawnedObjects[objectId]) {
+        if (debugRef.current) console.log("Object not found for swap");
+        return prev;
+      }
 
       const process = processes.find((p) => p.id === processId);
+      if (!process) {
+        if (debugRef.current) console.log("Process not found");
+        return prev;
+      }
+
       const processMaterials = {
         ...baseMaterials,
-        ...(process?.customMaterials || {}),
+        ...(process.customMaterials || {}),
       };
 
       const newMaterial =
-        processMaterials[materialType as keyof typeof processMaterials] ||
-        baseMaterials.Default;
+        processMaterials[materialType as keyof typeof processMaterials];
+      if (!newMaterial) {
+        if (debugRef.current) console.log(`Material ${materialType} not found`);
+        return prev;
+      }
+
+      if (debugRef.current) {
+        console.log(`Swapping material for ${objectId} to ${materialType}`);
+      }
 
       return {
         ...prev,
@@ -841,7 +837,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     });
   };
 
-  // Handle point actions for an object
   const handlePointActions = (
     processId: string,
     objectId: string,
@@ -853,6 +848,10 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     actions.forEach((action) => {
       if (!action.isUsed) return;
 
+      if (debugRef.current) {
+        console.log(`Processing action: ${action.type} for ${objectId}`);
+      }
+
       switch (action.type) {
         case "Delay":
           setAnimationStates((prev) => {
@@ -871,18 +870,16 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                 ...prev,
                 [processId]: {
                   ...processState,
-                  // Set process-wide delay instead of object-specific delay
                   isProcessDelaying: true,
                   processDelayStartTime: currentTime,
                   processDelayDuration: delayDuration,
-                  // Update the specific object's state as well
                   spawnedObjects: {
                     ...processState.spawnedObjects,
                     [objectId]: {
                       ...processState.spawnedObjects[objectId],
                       state: {
                         ...processState.spawnedObjects[objectId].state,
-                        isAnimating: false, // Explicitly pause animation during delay
+                        isAnimating: false,
                         isDelaying: true,
                         delayStartTime: currentTime,
                         currentDelayDuration: delayDuration,
@@ -931,12 +928,10 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     return shouldStopAnimation;
   };
 
-  // Check if point has non-inherit actions
   const hasNonInheritActions = (actions: PointAction[] = []): boolean => {
     return actions.some((action) => action.isUsed && action.type !== "Inherit");
   };
 
-  // Get point data for current animation index
   const getPointDataForAnimationIndex = (
     process: ProcessData,
     index: number
@@ -958,7 +953,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     return null;
   };
 
-  // Spawn objects for all processes
   useFrame((state) => {
     if (!isPlaying) return;
 
@@ -970,18 +964,14 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         const processState = newStates[process.id];
         if (!processState) return;
 
-        // Skip spawning if the process is currently in a delay
         if (processState.isProcessDelaying) {
-          // Check if delay is over
           if (
             currentTime - processState.processDelayStartTime >=
             processState.processDelayDuration
           ) {
-            // Reset process delay state
             newStates[process.id] = {
               ...processState,
               isProcessDelaying: false,
-              // Reset delay state on all objects in this process
               spawnedObjects: Object.entries(
                 processState.spawnedObjects
               ).reduce(
@@ -993,8 +983,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                       ...obj.state,
                       isDelaying: false,
                       delayComplete: true,
-                      isAnimating: true, // Ensure animation resumes
-                      // Force a small progress to ensure movement starts
+                      isAnimating: true,
                       progress:
                         obj.state.progress === 0 ? 0.001 : obj.state.progress,
                     },
@@ -1004,7 +993,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
               ),
             };
           }
-          return; // Skip spawning while delaying
+          return;
         }
 
         const spawnPoint = findSpawnPoint(process);
@@ -1022,8 +1011,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
 
         if (currentTime >= processState.nextSpawnTime) {
           const objectId = `obj-${process.id}-${processState.objectIdCounter}`;
-
-          // Create the new object with the spawn point
           const newObject = createSpawnedObject(
             process,
             currentTime,
@@ -1047,7 +1034,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     });
   });
 
-  // Animate objects for all processes
   useFrame((state, delta) => {
     if (!isPlaying) return;
 
@@ -1059,18 +1045,14 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         const processState = newStates[process.id];
         if (!processState) return;
 
-        // Check if the process-wide delay is active
         if (processState.isProcessDelaying) {
-          // Check if the delay has completed
           if (
             currentTime - processState.processDelayStartTime >=
             processState.processDelayDuration
           ) {
-            // Reset process delay state AND resume animation
             newStates[process.id] = {
               ...processState,
               isProcessDelaying: false,
-              // Reset delay state on all objects in this process AND ensure isAnimating is true
               spawnedObjects: Object.entries(
                 processState.spawnedObjects
               ).reduce(
@@ -1082,8 +1064,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                       ...obj.state,
                       isDelaying: false,
                       delayComplete: true,
-                      isAnimating: true, // Ensure animation resumes
-                      // Important: Force progress to a small positive value to ensure movement
+                      isAnimating: true,
                       progress:
                         obj.state.progress === 0 ? 0.005 : obj.state.progress,
                     },
@@ -1092,10 +1073,8 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                 {}
               ),
             };
-            // Skip the rest of the processing for this frame to allow the state update to take effect
             return newStates;
           } else {
-            // If we're still in a process-wide delay, don't animate anything
             return newStates;
           }
         }
@@ -1109,13 +1088,11 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
 
         Object.entries(processState.spawnedObjects).forEach(
           ([objectId, obj]) => {
-            // Skip objects that are explicitly not visible
             if (!obj.visible) return;
 
             const currentRef = gltf?.scene ? obj.ref.current : obj.ref.current;
             if (!currentRef) return;
 
-            // Set the position when the reference is first available
             if (
               obj.position &&
               obj.state.currentIndex === 0 &&
@@ -1126,27 +1103,21 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
 
             const stateRef = obj.state;
 
-            // Check if we're delaying at the object level and update accordingly
             if (stateRef.isDelaying) {
               if (
                 currentTime - stateRef.delayStartTime >=
                 stateRef.currentDelayDuration
               ) {
-                // Delay is complete, resume animation
                 stateRef.isDelaying = false;
                 stateRef.delayComplete = true;
-                stateRef.isAnimating = true; // Explicitly resume animation
+                stateRef.isAnimating = true;
 
-                // Force movement from the current point by setting progress to a small value
-                // if we're at the start of a segment
                 if (stateRef.progress === 0) {
                   stateRef.progress = 0.005;
                 }
 
-                // Force an immediate position update to ensure visually accurate position
                 const nextPointIdx = stateRef.currentIndex + 1;
                 if (nextPointIdx < path.length) {
-                  // Calculate the position slightly ahead of the current point
                   const slightProgress = Math.max(stateRef.progress, 0.005);
                   currentRef.position.lerpVectors(
                     path[stateRef.currentIndex],
@@ -1157,23 +1128,25 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                   );
                 }
               } else {
-                // Still delaying, don't animate this object
                 updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
                 return;
               }
             }
 
-            // Skip animation if the object shouldn't be animating
             if (!stateRef.isAnimating) return;
 
-            // Get current point data
             const currentPointData = getPointDataForAnimationIndex(
               process,
               stateRef.currentIndex
             );
 
-            // Execute actions when arriving at a new point
             if (stateRef.progress === 0 && currentPointData?.actions) {
+              if (debugRef.current) {
+                console.log(
+                  `At point ${stateRef.currentIndex} with actions:`,
+                  currentPointData.actions
+                );
+              }
               const shouldStop = handlePointActions(
                 process.id,
                 objectId,
@@ -1195,10 +1168,6 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                   currentPointData.actions
                 );
                 if (shouldStop) {
-                  // uncomment this or write own logic to handle the object when reaching the last point of the process
-
-                  // currentRef.position.copy(path[stateRef.currentIndex]);
-                  // delete updatedObjects[objectId];
                   return;
                 }
               }
@@ -1210,35 +1179,30 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
                 path[stateRef.currentIndex].distanceTo(nextPoint);
               const movement = stateRef.speed * delta;
 
-              // If we just resumed from a delay, ensure we make actual progress
               if (stateRef.delayComplete && stateRef.progress < 0.01) {
-                // Boost initial movement after delay to ensure visible progress
-                stateRef.progress = 0.05; // Small but visible initial progress
-                stateRef.delayComplete = false; // Reset flag so we don't do this again
+                stateRef.progress = 0.05;
+                stateRef.delayComplete = false;
               } else {
-                // Normal progress calculation
                 stateRef.progress += movement / distance;
               }
 
               if (stateRef.progress >= 1) {
-                // We've reached the next point
                 stateRef.currentIndex = nextPointIdx;
                 stateRef.progress = 0;
                 currentRef.position.copy(nextPoint);
 
-                // Check if we need to execute actions at this new point
                 const newPointData = getPointDataForAnimationIndex(
                   process,
                   stateRef.currentIndex
                 );
 
-                if (newPointData?.actions) {
-                  // We've arrived at a new point with actions, handle them in the next frame
-                  // We don't call handlePointActions directly here to avoid state update issues
-                  // The actions will be handled in the next frame when progress is 0
+                if (newPointData?.actions && debugRef.current) {
+                  console.log(
+                    `Reached new point with actions:`,
+                    newPointData.actions
+                  );
                 }
               } else {
-                // Normal path interpolation
                 currentRef.position.lerpVectors(
                   path[stateRef.currentIndex],
                   nextPoint,
@@ -1274,29 +1238,40 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
             const process = processes.find((p) => p.id === processId);
             const renderAs = process?.renderAs || "custom";
 
-            return renderAs === "box" ? (
-              <mesh
-                key={objectId}
-                ref={obj.ref as React.RefObject<THREE.Mesh>}
-                material={obj.material}
-                position={obj.position} // Set position directly in the JSX
-              >
-                <boxGeometry args={[1, 1, 1]} />
-              </mesh>
-            ) : (
-              gltf?.scene && (
+            if (renderAs === "box") {
+              return (
+                <mesh
+                  key={objectId}
+                  ref={obj.ref as React.RefObject<THREE.Mesh>}
+                  material={obj.material}
+                  position={obj.position}
+                >
+                  <boxGeometry args={[1, 1, 1]} />
+                </mesh>
+              );
+            }
+
+            if (gltf?.scene) {
+              // Clone the scene and apply the material to all meshes
+              const clonedScene = gltf.scene.clone();
+              clonedScene.traverse((child) => {
+                if (child instanceof THREE.Mesh) {
+                  child.material = obj.material;
+                }
+              });
+
+              return (
                 <group
                   key={objectId}
                   ref={obj.ref as React.RefObject<THREE.Group>}
-                  position={obj.position} // Set position directly in the JSX
+                  position={obj.position}
                 >
-                  <primitive
-                    object={gltf.scene.clone()}
-                    material={obj.material}
-                  />
+                  <primitive object={clonedScene} />
                 </group>
-              )
-            );
+              );
+            }
+
+            return null;
           })
       )}
     </>
diff --git a/app/src/types/world/worldTypes.d.ts b/app/src/types/world/worldTypes.d.ts
index d1ce13f..cbb1c39 100644
--- a/app/src/types/world/worldTypes.d.ts
+++ b/app/src/types/world/worldTypes.d.ts
@@ -336,4 +336,31 @@ interface VehicleEventsSchema {
         speed: number;
     };
     position: [number, number, number];
-}
\ No newline at end of file
+}
+
+// interface ArmSchema {
+//     modeluuid: string;
+//     modelName: string;
+//     type: 'Arm';
+//     point: {
+//         uuid: string;
+//         position: [number, number, number];
+//         actions: { MaterialId: string,  }[] |.;
+//         connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+//         speed: number;
+//     };
+//     position: [number, number, number];
+// }
+
+
+
+
+// export type FloorItemType = {
+//     modeluuid: string;
+//     modelname: string;
+//     position: [number, number, number];
+//     rotation: { x: number; y: number; z: number };
+//     modelfileID: string;
+//     isLocked: boolean;
+//     isVisible: boolean;
+// };
\ No newline at end of file

From 60b778ff3d60a34a4659c220a47665d6dacf84d9 Mon Sep 17 00:00:00 2001
From: Gomathi9520 <gomathi@hexrfactory.com>
Date: Fri, 4 Apr 2025 15:17:38 +0530
Subject: [PATCH 02/17] rotation added

---
 .../3D-cards/cards/ProductionCapacity.tsx     |  39 ++-
 .../ui/componets/DraggableWidget.tsx          |   3 +-
 .../ui/componets/Dropped3dWidget.tsx          | 234 ++++++++++++------
 .../ui/componets/RealTimeVisulization.tsx     |   5 +-
 .../components/ui/menu/EditWidgetOption.tsx   |  10 +-
 app/src/store/useZone3DWidgetStore.ts         |  39 ++-
 6 files changed, 239 insertions(+), 91 deletions(-)

diff --git a/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx b/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
index 4ec9fdd..0d239b4 100644
--- a/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
+++ b/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
@@ -30,14 +30,13 @@ interface ProductionCapacityProps {
   id: string;
   type: string;
   position: [number, number, number];
+  rotation: [number, number, number];
   onContextMenu?: (event: React.MouseEvent) => void;
   // onPointerDown:any
 }
 
-const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, position, onContextMenu }) => {
-
+const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, position, rotation, onContextMenu }) => {
   const { selectedChartId, setSelectedChartId } = useWidgetStore();
-
   const { measurements: chartMeasurements, duration: chartDuration, name: widgetName } = useChartStore();
   const [measurements, setmeasurements] = useState<any>({});
   const [duration, setDuration] = useState("1h")
@@ -177,15 +176,43 @@ const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, posit
   }
     , [chartMeasurements, chartDuration, widgetName])
 
+  useEffect(() => {
+
+    console.log('rotation: ', rotation);
+  }, [rotation])
+  const rotationDegrees = {
+    x: (rotation[0] * 180) / Math.PI,
+    y: (rotation[1] * 180) / Math.PI,
+    z: (rotation[2] * 180) / Math.PI,
+  };
+
+  const transformStyle = {
+    transform: `rotateX(${rotationDegrees.x}deg) rotateY(${rotationDegrees.y}deg) rotateZ(${rotationDegrees.z}deg)`,
+  };
+
   return (
-    <Html position={[position[0], position[1], position[2]]}
+    <Html position={position}
       scale={[0.5, 0.5, 0.5]}
-      zIndexRange={[1, 0]}
       transform
-      sprite>
+      sprite
+      zIndexRange={[1,0]}
+      // center
+      // distanceFactor={10} // Adjusted for visual balance
+      style={{
+        transform: transformStyle.transform,
+        transformStyle: 'preserve-3d',
+        transition: 'transform 0.1s ease-out'
+
+      }}>
       <div className="productionCapacity-wrapper card"
         onClick={() => setSelectedChartId({ id: id, type: type })}
         onContextMenu={onContextMenu}
+        style={{
+          width: '300px', // Original width
+          height: '300px', // Original height
+          transform: transformStyle.transform,
+          transformStyle: 'preserve-3d'
+        }}
       >
         <div className="headeproductionCapacityr-wrapper">
           <div className="header">Production Capacity</div>
diff --git a/app/src/components/ui/componets/DraggableWidget.tsx b/app/src/components/ui/componets/DraggableWidget.tsx
index 41727db..fa7cff8 100644
--- a/app/src/components/ui/componets/DraggableWidget.tsx
+++ b/app/src/components/ui/componets/DraggableWidget.tsx
@@ -239,14 +239,13 @@ export const DraggableWidget = ({
       onReorder(fromIndex, toIndex); // Call the reorder function passed as a prop
     }
   };
-  console.log("widget.type", widget.type);
 
   // useClickOutside(chartWidget, () => {
   //   setSelectedChartId(null);
   // });
   const { isPlaying } = usePlayButtonStore();
 
-  console.log('isPanelHidden: ', isPanelHidden);
+ 
   return (
     <>
       <div
diff --git a/app/src/components/ui/componets/Dropped3dWidget.tsx b/app/src/components/ui/componets/Dropped3dWidget.tsx
index f43cce5..f12712d 100644
--- a/app/src/components/ui/componets/Dropped3dWidget.tsx
+++ b/app/src/components/ui/componets/Dropped3dWidget.tsx
@@ -1,5 +1,5 @@
 import { useThree } from "@react-three/fiber";
-import React, { useState, useEffect, useRef } from "react";
+import React, { useEffect, useRef } from "react";
 import { useAsset3dWidget, useSocketStore, useWidgetSubOption } from "../../../store/store";
 import useModuleStore from "../../../store/useModuleStore";
 import { ThreeState } from "../../../types/world/worldTypes";
@@ -16,6 +16,14 @@ import { use3DWidget } from "../../../store/useDroppedObjectsStore";
 import { useLeftData, useRightClickSelected, useRightSelected, useTopData, useZoneWidgetStore } from "../../../store/useZone3DWidgetStore";
 import { useWidgetStore } from "../../../store/useWidgetStore";
 import EditWidgetOption from "../menu/EditWidgetOption";
+type WidgetData = {
+    id: string;
+    type: string;
+    position: [number, number, number];
+    rotation?: [number, number, number];
+    tempPosition?: [number, number, number];
+};
+
 
 export default function Dropped3dWidgets() {
     const { widgetSelect } = useAsset3dWidget();
@@ -23,22 +31,22 @@ export default function Dropped3dWidgets() {
     const { raycaster, gl, scene, mouse, camera }: ThreeState = useThree();
     const { widgetSubOption } = useWidgetSubOption();
     const { selectedZone } = useSelectedZoneStore();
-    const { top, setTop } = useTopData()
-    const { left, setLeft } = useLeftData()
-    const { rightSelect, setRightSelect } = useRightSelected()
+    const { top, setTop } = useTopData();
+    const { left, setLeft } = useLeftData();
+    const { rightSelect, setRightSelect } = useRightSelected();
 
-    // ✅ Use Zustand Store instead of useState
-    const { zoneWidgetData, setZoneWidgetData, addWidget, updateWidgetPosition } = useZoneWidgetStore();
+    const { zoneWidgetData, setZoneWidgetData, addWidget, updateWidgetPosition, updateWidgetRotation } = useZoneWidgetStore();
     const { setWidgets3D } = use3DWidget();
     const { visualizationSocket } = useSocketStore();
-    const { rightClickSelected, setRightClickSelected } = useRightClickSelected()
-
+    const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
     const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0)); // Floor plane for horizontal move
     const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0)); // Vertical plane for vertical move
     const planeIntersect = useRef(new THREE.Vector3());
-    // let [verticalPlane, setFloorPlanesVertical] = useState(
-    //     new THREE.Plane(new THREE.Vector3(0, 1, 0))
-    // );
+    // const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);
+    // const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
+    // const planeIntersect = useRef(new THREE.Vector3());
+    const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
+    const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
 
     useEffect(() => {
         if (activeModule !== "visualization") return;
@@ -48,14 +56,14 @@ export default function Dropped3dWidgets() {
         const organization = email?.split("@")[1]?.split(".")[0];
 
         async function get3dWidgetData() {
-            let result = await get3dWidgetZoneData(selectedZone.zoneId, organization);
-
+            const result = await get3dWidgetZoneData(selectedZone.zoneId, organization);
             setWidgets3D(result);
 
-            const formattedWidgets = result.map((widget: any) => ({
+            const formattedWidgets = result.map((widget: WidgetData) => ({
                 id: widget.id,
                 type: widget.type,
                 position: widget.position,
+                rotation: widget.rotation || [0, 0, 0],
             }));
 
             setZoneWidgetData(selectedZone.zoneId, formattedWidgets);
@@ -91,28 +99,24 @@ export default function Dropped3dWidgets() {
 
             if (intersects.length > 0) {
                 const { x, y, z } = intersects[0].point;
-                const newWidget = {
+                const newWidget: WidgetData = {
                     id: generateUniqueId(),
                     type: widgetSelect,
-                    position: [x, y, z] as [number, number, number],
+                    position: [x, y, z],
+                    rotation: [0, 0, 0],
                 };
 
-                let add3dWidget = {
+                const add3dWidget = {
                     organization: organization,
                     widget: newWidget,
                     zoneId: selectedZone.zoneId
-                }
+                };
 
                 if (visualizationSocket) {
-                    visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget)
+                    visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
                 }
 
-                // let response = await adding3dWidgets(selectedZone.zoneId, organization, newWidget);
-                // 
-
-                // if (response.message === "Widget created successfully") {
                 addWidget(selectedZone.zoneId, newWidget);
-                // }
             }
         };
 
@@ -128,63 +132,76 @@ export default function Dropped3dWidgets() {
         if (!rightClickSelected) return;
         const email = localStorage.getItem("email") || "";
         const organization = email?.split("@")[1]?.split(".")[0];
+
         if (rightSelect === "Duplicate") {
-            const widgetToDuplicate = activeZoneWidgets.find(w => w.id === rightClickSelected);
+            const widgetToDuplicate = activeZoneWidgets.find((w: WidgetData) => w.id === rightClickSelected);
             if (!widgetToDuplicate) return;
-            const newWidget = {
+            const newWidget: WidgetData = {
                 id: generateUniqueId(),
                 type: widgetToDuplicate.type,
                 position: [
-                    widgetToDuplicate.position[0] + 0.5, // Slightly shift position
+                    widgetToDuplicate.position[0] + 0.5,
                     widgetToDuplicate.position[1],
                     widgetToDuplicate.position[2] + 0.5,
-                ] as [number, number, number],
+                ],
+                rotation: widgetToDuplicate.rotation || [0, 0, 0],
             };
-            let add3dWidget = {
+
+            const add3dWidget = {
                 organization,
                 widget: newWidget,
                 zoneId: selectedZone.zoneId
             };
-            // if (visualizationSocket) {
-            //     visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
-            // }
+
             addWidget(selectedZone.zoneId, newWidget);
             setRightSelect(null);
             setRightClickSelected(null);
         }
+
         if (rightSelect === "Delete") {
-            let deleteWidget = {
+            const deleteWidget = {
                 organization,
                 widgetId: rightClickSelected,
                 zoneId: selectedZone.zoneId
             };
-            // if (visualizationSocket) {
-            //     visualizationSocket.emit("v2:viz-3D-widget:delete", deleteWidget);
-            // }
-            setZoneWidgetData(selectedZone.zoneId, activeZoneWidgets.filter(w => w.id !== rightClickSelected));
+
+            setZoneWidgetData(
+                selectedZone.zoneId,
+                activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
+            );
             setRightClickSelected(null);
             setRightSelect(null);
         }
-        if (rightSelect === "Horizontal Move") {
-
-        }
-        if (rightSelect === "Vertical Move") {
-
-        }
-
     }, [rightSelect, rightClickSelected]);
 
     useEffect(() => {
-        const handleMouseMove = (event: MouseEvent) => {
+        const handleMouseDown = (event: MouseEvent) => {
             if (!rightClickSelected || !rightSelect) return;
 
+            if (rightSelect === "RotateX" || rightSelect === "RotateY") {
+                mouseStartRef.current = { x: event.clientX, y: event.clientY };
 
-            const selectedZone = Object.keys(zoneWidgetData).find(zoneId =>
-                zoneWidgetData[zoneId].some(widget => widget.id === rightClickSelected)
+                const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
+                    zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
+                );
+
+                if (!selectedZone) return;
+
+                const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
+                if (selectedWidget) {
+                    rotationStartRef.current = selectedWidget.rotation || [0, 0, 0];
+                }
+            }
+        };
+
+        const handleMouseMove = (event: MouseEvent) => {
+            if (!rightClickSelected || !rightSelect) return;
+            const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
+                zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
             );
             if (!selectedZone) return;
 
-            const selectedWidget = zoneWidgetData[selectedZone].find(widget => widget.id === rightClickSelected);
+            const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
             if (!selectedWidget) return;
 
             const rect = gl.domElement.getBoundingClientRect();
@@ -194,31 +211,67 @@ export default function Dropped3dWidgets() {
             raycaster.setFromCamera(mouse, camera);
 
             if (rightSelect === "Horizontal Move" && raycaster.ray.intersectPlane(plane.current, planeIntersect.current)) {
-
-                updateWidgetPosition(selectedZone, rightClickSelected, [
+                const newPosition: [number, number, number] = [
                     planeIntersect.current.x,
                     selectedWidget.position[1],
                     planeIntersect.current.z
-                ]);
+                ];
+                updateWidgetPosition(selectedZone, rightClickSelected, newPosition);
+                console.log('Horizontal Move - Final Position:', newPosition);
             }
 
             if (rightSelect === "Vertical Move") {
                 if (raycaster.ray.intersectPlane(verticalPlane.current, planeIntersect.current)) {
                     updateWidgetPosition(selectedZone, rightClickSelected, [
                         selectedWidget.position[0],
-                        planeIntersect.current.y, // Ensure Y value updates correctly
+                        planeIntersect.current.y,
                         selectedWidget.position[2]
                     ]);
-                } else {
-                    console.log("No Intersection with Vertical Plane");
                 }
             }
+
+            if (rightSelect === "RotateX") {
+                const deltaX = event.clientX - mouseStartRef.current.x;
+                const rotationSpeed = 0.03;
+                const newRotation: [number, number, number] = [
+                    rotationStartRef.current[0] + deltaX * rotationSpeed,
+                    rotationStartRef.current[1],
+                    rotationStartRef.current[2]
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+
+            if (rightSelect === "RotateY") {
+                const deltaY = event.clientY - mouseStartRef.current.y;
+                const rotationSpeed = 0.03;
+                const newRotation: [number, number, number] = [
+                    rotationStartRef.current[0],
+                    rotationStartRef.current[1] + deltaY * rotationSpeed,
+                    rotationStartRef.current[2]
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+            if (rightSelect === "RotateZ") {
+                const deltaX = event.movementX;
+                const rotationSpeed = 0.03;
+                const currentRotation = selectedWidget.rotation || [0, 0, 0];
+                const newRotation: [number, number, number] = [
+                    currentRotation[0],
+                    currentRotation[1],
+                    currentRotation[2] + deltaX * rotationSpeed
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+
         };
 
         const handleMouseUp = () => {
-
-            if (rightClickSelected && (rightSelect === "Horizontal Move" || rightSelect === "Vertical Move")) {
-
+            if (rightClickSelected && (
+                rightSelect === "Horizontal Move" ||
+                rightSelect === "Vertical Move" ||
+                rightSelect === "RotateX" ||
+                rightSelect === "RotateY" || rightSelect === "RotateZ"
+            )) {
                 setTimeout(() => {
                     setRightClickSelected(null);
                     setRightSelect(null);
@@ -226,40 +279,81 @@ export default function Dropped3dWidgets() {
             }
         };
 
-        // Attach events to window instead of gl.domElement
+        window.addEventListener("mousedown", handleMouseDown);
         window.addEventListener("mousemove", handleMouseMove);
         window.addEventListener("mouseup", handleMouseUp);
 
         return () => {
+            window.removeEventListener("mousedown", handleMouseDown);
             window.removeEventListener("mousemove", handleMouseMove);
             window.removeEventListener("mouseup", handleMouseUp);
         };
     }, [rightClickSelected, rightSelect, zoneWidgetData, gl]);
 
-
-
-
     return (
         <>
-            {activeZoneWidgets.map(({ id, type, position }) => {
-                const handleRightClick = (event: React.MouseEvent) => {
+            {activeZoneWidgets.map(({ id, type, position, rotation = [0, 0, 0] }: WidgetData) => {
+                const handleRightClick = (event: React.MouseEvent, id: string) => {
                     event.preventDefault();
-                    setRightClickSelected(id)
+                    const canvasElement = document.getElementById("real-time-vis-canvas");
+                    if (!canvasElement) throw new Error("Canvas element not found");
+                    const canvasRect = canvasElement.getBoundingClientRect();
+                    const relativeX = event.clientX - canvasRect.left;
+                    const relativeY = event.clientY - canvasRect.top;
+                    setRightClickSelected(id);
+                    setTop(relativeY);
+                    setLeft(relativeX);
                 };
+
                 switch (type) {
                     case "ui-Widget 1":
-                        return <ProductionCapacity key={id} id={id} type={type} position={position} onContextMenu={handleRightClick} />;
+                        return (
+                            <ProductionCapacity
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
                     case "ui-Widget 2":
-                        return <ReturnOfInvestment key={id} id={id} type={type} position={position} onContextMenu={handleRightClick} />;
+                        return (
+                            <ReturnOfInvestment
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                // rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
                     case "ui-Widget 3":
-                        return <StateWorking key={id} id={id} type={type} position={position} onContextMenu={handleRightClick} />;
+                        return (
+                            <StateWorking
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                // rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
                     case "ui-Widget 4":
-                        return <Throughput key={id} id={id} type={type} position={position} onContextMenu={handleRightClick} />;
+                        return (
+                            <Throughput
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                // rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
                     default:
                         return null;
                 }
             })}
-
         </>
     );
-}
+}
\ No newline at end of file
diff --git a/app/src/components/ui/componets/RealTimeVisulization.tsx b/app/src/components/ui/componets/RealTimeVisulization.tsx
index 915e3b3..acbbf68 100644
--- a/app/src/components/ui/componets/RealTimeVisulization.tsx
+++ b/app/src/components/ui/componets/RealTimeVisulization.tsx
@@ -197,7 +197,6 @@ const RealTimeVisulization: React.FC = () => {
     } catch (error) { }
   };
 
-  function handleRightClickSel(){}
   return (
     <div
       ref={containerRef}
@@ -234,8 +233,8 @@ const RealTimeVisulization: React.FC = () => {
       {activeModule === "visualization" && selectedZone.zoneName !== "" && <DroppedObjects />}
       {activeModule === "visualization" && <SocketRealTimeViz />}
 
-      {activeModule === "visualization" && widgetSubOption === "3D" && rightClickSelected && <EditWidgetOption
-        options={["Duplicate", "Vertical Move", "Horizontal Move", "Delete"]} 
+      {activeModule === "visualization" && rightClickSelected && <EditWidgetOption
+        options={["Duplicate", "Vertical Move", "Horizontal Move", "RotateX", "RotateY", "RotateZ", "Delete"]}
       />}
 
       {activeModule === "visualization" && (
diff --git a/app/src/components/ui/menu/EditWidgetOption.tsx b/app/src/components/ui/menu/EditWidgetOption.tsx
index ce5261a..3978430 100644
--- a/app/src/components/ui/menu/EditWidgetOption.tsx
+++ b/app/src/components/ui/menu/EditWidgetOption.tsx
@@ -17,7 +17,15 @@ const EditWidgetOption: React.FC<EditWidgetOptionProps> = ({ options }) => {
   }, [top, left])
 
   return (
-    <div className="editWidgetOptions-wrapper" style={{ top: top + "px", left: left + "px" }}>
+    <div className="editWidgetOptions-wrapper"
+      style={{
+        position: "absolute",
+        top: `${top}px`,
+        left: `${left}px`,
+        zIndex: 10000,
+        
+      }}
+    >
       <div className="editWidgetOptions">
         {options.map((option, index) => (
           <div className="option" key={index} onClick={(e) => setRightSelect(option)}>
diff --git a/app/src/store/useZone3DWidgetStore.ts b/app/src/store/useZone3DWidgetStore.ts
index 850623f..9700878 100644
--- a/app/src/store/useZone3DWidgetStore.ts
+++ b/app/src/store/useZone3DWidgetStore.ts
@@ -1,10 +1,10 @@
-
 import { create } from "zustand";
 
 type WidgetData = {
   id: string;
   type: string;
   position: [number, number, number];
+  rotation?: [number, number, number];
   tempPosition?: [number, number, number];
 };
 
@@ -13,38 +13,59 @@ type ZoneWidgetStore = {
   setZoneWidgetData: (zoneId: string, widgets: WidgetData[]) => void;
   addWidget: (zoneId: string, widget: WidgetData) => void;
   updateWidgetPosition: (zoneId: string, widgetId: string, newPosition: [number, number, number]) => void;
+  updateWidgetRotation: (zoneId: string, widgetId: string, newRotation: [number, number, number]) => void;
 };
 
 export const useZoneWidgetStore = create<ZoneWidgetStore>((set) => ({
   zoneWidgetData: {},
 
-  setZoneWidgetData: (zoneId, widgets) =>
-    set((state) => ({
+  setZoneWidgetData: (zoneId: string, widgets: WidgetData[]) =>
+    set((state: ZoneWidgetStore) => ({
       zoneWidgetData: { ...state.zoneWidgetData, [zoneId]: widgets },
     })),
 
-  addWidget: (zoneId, widget) =>
-    set((state) => ({
+  addWidget: (zoneId: string, widget: WidgetData) =>
+    set((state: ZoneWidgetStore) => ({
       zoneWidgetData: {
         ...state.zoneWidgetData,
-        [zoneId]: [...(state.zoneWidgetData[zoneId] || []), widget],
+        [zoneId]: [...(state.zoneWidgetData[zoneId] || []), { ...widget, rotation: widget.rotation || [0, 0, 0] }],
       },
     })),
 
-  updateWidgetPosition: (zoneId, widgetId, newPosition) =>
-    set((state) => {
+  updateWidgetPosition: (zoneId: string, widgetId: string, newPosition: [number, number, number]) =>
+    set((state: ZoneWidgetStore) => {
       const widgets = state.zoneWidgetData[zoneId] || [];
       return {
         zoneWidgetData: {
           ...state.zoneWidgetData,
-          [zoneId]: widgets.map((widget) =>
+          [zoneId]: widgets.map((widget: WidgetData) =>
             widget.id === widgetId ? { ...widget, position: newPosition } : widget
           ),
         },
       };
     }),
+
+  updateWidgetRotation: (zoneId: string, widgetId: string, newRotation: [number, number, number]) =>
+    set((state: ZoneWidgetStore) => {
+      const widgets = state.zoneWidgetData[zoneId] || [];
+      return {
+        zoneWidgetData: {
+          ...state.zoneWidgetData,
+          [zoneId]: widgets.map((widget: WidgetData) =>
+            widget.id === widgetId ? { ...widget, rotation: newRotation } : widget
+          ),
+        },
+      };
+    }),
 }));
 
+// export type WidgetData = {
+//   id: string;
+//   type: string;
+//   position: [number, number, number];
+//   rotation?: [number, number, number];
+//   tempPosition?: [number, number, number];
+// };
 
 interface RightClickStore {
   rightClickSelected: string | null;

From 75b88efe87b4734e76ee0e8e5c951773f43e2cd1 Mon Sep 17 00:00:00 2001
From: Poovizhi99 <poovizhi@hexrfactory.com>
Date: Fri, 4 Apr 2025 16:53:57 +0530
Subject: [PATCH 03/17] added buffer in agv

---
 app/src/modules/builder/agv/agv.tsx           |  5 ++-
 .../modules/builder/agv/navMeshDetails.tsx    |  6 ++--
 app/src/modules/builder/agv/pathNavigator.tsx | 34 ++++++++++++-------
 .../assest/assets/getCategoryAsset.ts         |  4 +--
 4 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/app/src/modules/builder/agv/agv.tsx b/app/src/modules/builder/agv/agv.tsx
index 6218662..6d81cf8 100644
--- a/app/src/modules/builder/agv/agv.tsx
+++ b/app/src/modules/builder/agv/agv.tsx
@@ -23,6 +23,7 @@ const Agv = ({
       modelSpeed: number;
       bufferTime: number;
       points: { x: number; y: number; z: number }[];
+      hitCount: number;
     }[]
   >([]);
   const { simulationPaths } = useSimulationPaths();
@@ -34,7 +35,7 @@ const Agv = ({
         (val: any) => val.modelName === "agv"
       );
 
-      console.log("agvModels: ", agvModels);
+      
       let findMesh = agvModels.filter(
         (val: any) =>
           val.modeluuid === selectedActionSphere?.path?.modeluuid &&
@@ -55,6 +56,7 @@ const Agv = ({
                 modelUuid: findMesh[0].modeluuid, // Ensure it's a number
                 modelSpeed: findMesh[0].point.speed,
                 bufferTime: findMesh[0].point.actions.buffer,
+                hitCount: findMesh[0].point.actions.hitCount,
                 points: [
                   {
                     x: findMesh[0].position[0],
@@ -122,6 +124,7 @@ const Agv = ({
             key={i}
             speed={pair.modelSpeed}
             bufferTime={pair.bufferTime}
+            hitCount={pair.hitCount}
           />
           {/* {pair.points.length > 2 && (
             <>
diff --git a/app/src/modules/builder/agv/navMeshDetails.tsx b/app/src/modules/builder/agv/navMeshDetails.tsx
index ecb539b..51f751e 100644
--- a/app/src/modules/builder/agv/navMeshDetails.tsx
+++ b/app/src/modules/builder/agv/navMeshDetails.tsx
@@ -33,11 +33,9 @@ export default function NavMeshDetails({
         const meshes = groupRef?.current?.children as THREE.Mesh[];
 
         const [positions, indices] = getPositionsAndIndices(meshes);
-
-        const cs = 0.25;
-        const ch = 0.69;
+        const cs = 0.35;
+        const ch = 0.7;
         const walkableRadius = 0.5;
-
         const { success, navMesh } = generateSoloNavMesh(positions, indices, {
           cs,
           ch,
diff --git a/app/src/modules/builder/agv/pathNavigator.tsx b/app/src/modules/builder/agv/pathNavigator.tsx
index a83b690..65a299b 100644
--- a/app/src/modules/builder/agv/pathNavigator.tsx
+++ b/app/src/modules/builder/agv/pathNavigator.tsx
@@ -12,6 +12,7 @@ interface PathNavigatorProps {
   id: string;
   speed: number;
   bufferTime: number;
+  hitCount: number;
 }
 
 export default function PathNavigator({
@@ -20,6 +21,7 @@ export default function PathNavigator({
   id,
   speed,
   bufferTime,
+  hitCount,
 }: PathNavigatorProps) {
   const [path, setPath] = useState<[number, number, number][]>([]);
   const progressRef = useRef(0);
@@ -32,7 +34,7 @@ export default function PathNavigator({
   const [startPoint, setStartPoint] = useState(new THREE.Vector3());
   const isWaiting = useRef<boolean>(false); // Flag to track waiting state
   const delayTime = bufferTime;
-  
+
   const movingForward = useRef<boolean>(true); // Tracks whether the object is moving forward
   // Compute distances and total distance when the path changes
   useEffect(() => {
@@ -52,6 +54,7 @@ export default function PathNavigator({
     progressRef.current = 0;
   }, [path]);
 
+  // Compute the path using NavMeshQuery
   useEffect(() => {
     if (!navMesh || selectedPoints.length === 0) return;
 
@@ -119,17 +122,22 @@ export default function PathNavigator({
         if (!isWaiting.current) {
           isWaiting.current = true; // Set waiting flag
 
-          setTimeout(() => {
-            progressRef.current = 0; // Reset progress
-            movingForward.current = !movingForward.current; // Toggle direction
-
-            // Reverse the path and distances arrays
-            path.reverse();
-            distancesRef.current.reverse();
-
-            // Reset the waiting flag
-            isWaiting.current = false;
-          }, delayTime * 1000); // Convert seconds to milliseconds
+          if (movingForward.current) {
+            // Moving forward: reached the end, wait for `delay`
+            // console.log(
+            //   "Reached end position. Waiting for delay:",
+            //   delayTime,
+            //   "seconds"
+            // );
+            setTimeout(() => {
+              // After delay, reverse direction
+              movingForward.current = false;
+              progressRef.current = 0; // Reset progress
+              path.reverse(); // Reverse the path
+              distancesRef.current.reverse();
+              isWaiting.current = false; // Reset waiting flag
+            }, delayTime * 1000); // Wait for `delay` seconds
+          }
         }
         return;
       }
@@ -154,7 +162,7 @@ export default function PathNavigator({
       findObject.position.copy(startPoint);
     }
   });
- 
+
   return (
     <>
       {path.length > 0 && (
diff --git a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
index a1ac727..2685ca4 100644
--- a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
+++ b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
@@ -1,8 +1,8 @@
-let BackEnd_url = `http://${process.env.REACT_APP_SERVER_ASSET_LIBRARY_URL}`;
+let BackEnd_url = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`;
 export const getCategoryAsset = async (categoryName: any) => {
   try {
     const response = await fetch(
-      `${BackEnd_url}/api/v2/getCatagoryAssets/${categoryName}`,
+      `${BackEnd_url}/api/v2/getCategoryAssets/${categoryName}`,
       {
         method: "GET",
         headers: {

From cf6946750b9b41faa6fdd37721c8321861ccc790 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Fri, 4 Apr 2025 16:57:18 +0530
Subject: [PATCH 04/17] added backend connection for conveyor and vehicle
 mechanics

---
 app/.env                                      |  2 +-
 .../mechanics/ConveyorMechanics.tsx           | 70 +++++++-------
 .../mechanics/VehicleMechanics.tsx            | 72 ++++++++------
 app/src/modules/builder/agv/agv.tsx           | 74 ++++++++-------
 .../modules/builder/agv/navMeshDetails.tsx    | 20 ++--
 .../modules/builder/agv/polygonGenerator.tsx  | 14 +--
 .../geomentries/assets/addAssetModel.ts       | 44 +++++++--
 app/src/modules/collaboration/collabCams.tsx  |  2 +-
 .../collaboration/socketResponses.dev.tsx     |  8 --
 .../scene/IntialLoad/loadInitialFloorItems.ts | 37 +++-----
 .../controls/selection/copyPasteControls.tsx  | 83 ++++++++++++++++-
 .../selection/duplicationControls.tsx         | 89 +++++++++++++++++-
 .../scene/controls/selection/moveControls.tsx | 54 ++++++++++-
 .../controls/selection/rotateControls.tsx     | 60 +++++++++++-
 .../scene/postProcessing/postProcessing.tsx   |  2 +-
 app/src/modules/scene/world/world.tsx         |  4 +-
 .../modules/simulation/path/pathConnector.tsx | 47 +++++-----
 .../modules/simulation/path/pathCreation.tsx  | 93 +++++++++++--------
 .../simulation/process/processCreator.tsx     | 14 +--
 app/src/modules/simulation/simulation.tsx     |  2 +-
 app/src/modules/simulation/simulationUI.tsx   | 24 ++---
 .../assest/assets/getCategoryAsset.ts         |  2 +-
 .../assest/floorAsset/setEventsApt.ts         |  2 +-
 app/src/types/world/worldTypes.d.ts           | 56 ++++++-----
 24 files changed, 595 insertions(+), 280 deletions(-)

diff --git a/app/.env b/app/.env
index 5740621..c50d174 100644
--- a/app/.env
+++ b/app/.env
@@ -11,7 +11,7 @@ REACT_APP_SERVER_REST_API_BASE_URL=185.100.212.76:5000
 REACT_APP_SERVER_MARKETPLACE_URL=185.100.212.76:50011
 
 # Base URL for the asset library server, used for asset library images and model blob id.
-REACT_APP_SERVER_ASSET_LIBRARY_URL=192.168.0.111:3501
+REACT_APP_SERVER_ASSET_LIBRARY_URL=185.100.212.76:50011
 
 # base url for IoT socket server
 REACT_APP_IOT_SOCKET_SERVER_URL =185.100.212.76:5010
diff --git a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
index 913bdd1..0a20f4b 100644
--- a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
@@ -37,20 +37,18 @@ const ConveyorMechanics: React.FC = () => {
         (path): path is Types.ConveyorEventsSchema => path.type === "Conveyor"
       )
       .flatMap((path) => path.points)
-      .find((point) => point.uuid === selectedActionSphere.point.uuid);
+      .find((point) => point.uuid === selectedActionSphere.points.uuid);
   }, [selectedActionSphere, simulationPaths]);
 
   const updateBackend = async (updatedPath: Types.ConveyorEventsSchema | undefined) => {
     if (!updatedPath) return;
-    // const email = localStorage.getItem("email");
-    // const organization = email ? email.split("@")[1].split(".")[0] : "";
-    // console.log('updatedPath: ', updatedPath);
-    // const a = await setEventApi(
-    //   organization,
-    //   updatedPath.modeluuid,
-    //   updatedPath.points
-    // );
-    // console.log('a: ', a);
+    const email = localStorage.getItem("email");
+    const organization = email ? email.split("@")[1].split(".")[0] : "";
+    await setEventApi(
+      organization,
+      updatedPath.modeluuid,
+      { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
+    );
   }
 
   const handleAddAction = () => {
@@ -61,7 +59,7 @@ const ConveyorMechanics: React.FC = () => {
         return {
           ...path,
           points: path.points.map((point) => {
-            if (point.uuid === selectedActionSphere.point.uuid) {
+            if (point.uuid === selectedActionSphere.points.uuid) {
               const actionIndex = point.actions.length;
               const newAction = {
                 uuid: THREE.MathUtils.generateUUID(),
@@ -86,7 +84,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -102,7 +100,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.filter(
@@ -119,7 +117,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -135,7 +133,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.map((action) =>
@@ -167,7 +165,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -181,7 +179,7 @@ const ConveyorMechanics: React.FC = () => {
           (path): path is Types.ConveyorEventsSchema => path.type === "Conveyor"
         )
         .flatMap((path) => path.points)
-        .find((p) => p.uuid === selectedActionSphere.point.uuid)
+        .find((p) => p.uuid === selectedActionSphere.points.uuid)
         ?.actions.find((a) => a.uuid === uuid);
 
       if (updatedAction) {
@@ -202,7 +200,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.map((action) =>
@@ -222,7 +220,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -249,7 +247,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.map((action) =>
@@ -266,7 +264,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -285,7 +283,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.map((action) =>
@@ -304,7 +302,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -323,7 +321,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -340,7 +338,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) => {
-            if (point.uuid === selectedActionSphere.point.uuid) {
+            if (point.uuid === selectedActionSphere.points.uuid) {
               const triggerIndex = point.triggers.length;
               const newTrigger = {
                 uuid: THREE.MathUtils.generateUUID(),
@@ -362,7 +360,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -378,7 +376,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 triggers: point.triggers.filter(
@@ -395,7 +393,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -411,7 +409,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 triggers: point.triggers.map((trigger) =>
@@ -430,7 +428,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -456,7 +454,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 actions: point.actions.map((action) => ({
@@ -474,7 +472,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -502,7 +500,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 triggers: point.triggers.map((trigger) => ({
@@ -520,7 +518,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
@@ -547,7 +545,7 @@ const ConveyorMechanics: React.FC = () => {
         ? {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
                 ...point,
                 triggers: point.triggers.map((trigger) =>
@@ -566,7 +564,7 @@ const ConveyorMechanics: React.FC = () => {
       (path): path is Types.ConveyorEventsSchema =>
         path.type === "Conveyor" &&
         path.points.some(
-          (point) => point.uuid === selectedActionSphere.point.uuid
+          (point) => point.uuid === selectedActionSphere.points.uuid
         )
     );
     updateBackend(updatedPath);
diff --git a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
index bf0b112..f1929ad 100644
--- a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
@@ -4,6 +4,7 @@ import InputWithDropDown from "../../../ui/inputs/InputWithDropDown";
 import { useEditingPoint, useEyeDropMode, usePreviewPosition, useSelectedActionSphere, useSimulationPaths } from "../../../../store/store";
 import * as Types from '../../../../types/world/worldTypes';
 import PositionInput from "../customInput/PositionInputs";
+import { setEventApi } from "../../../../services/factoryBuilder/assest/floorAsset/setEventsApt";
 
 const VehicleMechanics: React.FC = () => {
     const { selectedActionSphere } = useSelectedActionSphere();
@@ -15,42 +16,53 @@ const VehicleMechanics: React.FC = () => {
     const propertiesContainerRef = useRef<HTMLDivElement>(null);
 
     const { selectedPoint, connectedPointUuids } = useMemo(() => {
-        if (!selectedActionSphere?.point?.uuid) return { selectedPoint: null, connectedPointUuids: [] };
+        if (!selectedActionSphere?.points?.uuid) return { selectedPoint: null, connectedPointUuids: [] };
 
         const vehiclePaths = simulationPaths.filter(
             (path): path is Types.VehicleEventsSchema => path.type === "Vehicle"
         );
 
-        const point = vehiclePaths.find(
-            (path) => path.point.uuid === selectedActionSphere.point.uuid
-        )?.point;
+        const points = vehiclePaths.find(
+            (path) => path.points.uuid === selectedActionSphere.points.uuid
+        )?.points;
 
-        if (!point) return { selectedPoint: null, connectedPointUuids: [] };
+        if (!points) return { selectedPoint: null, connectedPointUuids: [] };
 
         const connectedUuids: string[] = [];
-        if (point.connections?.targets) {
-            point.connections.targets.forEach(target => {
+        if (points.connections?.targets) {
+            points.connections.targets.forEach(target => {
                 connectedUuids.push(target.pointUUID);
             });
         }
 
         return {
-            selectedPoint: point,
+            selectedPoint: points,
             connectedPointUuids: connectedUuids
         };
     }, [selectedActionSphere, simulationPaths]);
 
-    const handleActionUpdate = React.useCallback((updatedAction: Partial<Types.VehicleEventsSchema['point']['actions']>) => {
-        if (!selectedActionSphere?.point?.uuid) return;
+    const updateBackend = async (updatedPath: Types.VehicleEventsSchema | undefined) => {
+        if (!updatedPath) return;
+        const email = localStorage.getItem("email");
+        const organization = email ? email.split("@")[1].split(".")[0] : "";
+        await setEventApi(
+            organization,
+            updatedPath.modeluuid,
+            { type: "Vehicle", points: updatedPath.points }
+        );
+    }
+
+    const handleActionUpdate = React.useCallback((updatedAction: Partial<Types.VehicleEventsSchema['points']['actions']>) => {
+        if (!selectedActionSphere?.points?.uuid) return;
 
         const updatedPaths = simulationPaths.map((path) => {
-            if (path.type === "Vehicle" && path.point.uuid === selectedActionSphere.point.uuid) {
+            if (path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid) {
                 return {
                     ...path,
-                    point: {
-                        ...path.point,
+                    points: {
+                        ...path.points,
                         actions: {
-                            ...path.point.actions,
+                            ...path.points.actions,
                             ...updatedAction
                         }
                     }
@@ -59,14 +71,15 @@ const VehicleMechanics: React.FC = () => {
             return path;
         });
 
+        const updatedPath = updatedPaths.find(
+            (path): path is Types.VehicleEventsSchema =>
+                path.type === "Vehicle" &&
+                path.points.uuid === selectedActionSphere.points.uuid
+        );
+        updateBackend(updatedPath);
+
         setSimulationPaths(updatedPaths);
-    }, [selectedActionSphere?.point?.uuid, simulationPaths, setSimulationPaths]);
-
-    const handleStartPointChange = React.useCallback((position: { x: number, y: number }) => {
-    }, [handleActionUpdate]);
-
-    const handleEndPointChange = React.useCallback((position: { x: number, y: number }) => {
-    }, [handleActionUpdate]);
+    }, [selectedActionSphere?.points?.uuid, simulationPaths, setSimulationPaths]);
 
     const handleHitCountChange = React.useCallback((hitCount: number) => {
         handleActionUpdate({ hitCount });
@@ -77,14 +90,14 @@ const VehicleMechanics: React.FC = () => {
     }, [handleActionUpdate]);
 
     const handleSpeedChange = React.useCallback((speed: number) => {
-        if (!selectedActionSphere?.point?.uuid) return;
+        if (!selectedActionSphere?.points?.uuid) return;
 
         const updatedPaths = simulationPaths.map((path) => {
-            if (path.type === "Vehicle" && path.point.uuid === selectedActionSphere.point.uuid) {
+            if (path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid) {
                 return {
                     ...path,
-                    point: {
-                        ...path.point,
+                    points: {
+                        ...path.points,
                         speed: speed
                     }
                 };
@@ -92,8 +105,15 @@ const VehicleMechanics: React.FC = () => {
             return path;
         });
 
+        const updatedPath = updatedPaths.find(
+            (path): path is Types.VehicleEventsSchema =>
+                path.type === "Vehicle" &&
+                path.points.uuid === selectedActionSphere.points.uuid
+        );
+        updateBackend(updatedPath);
+
         setSimulationPaths(updatedPaths);
-    }, [selectedActionSphere?.point?.uuid, simulationPaths, setSimulationPaths]);
+    }, [selectedActionSphere?.points?.uuid, simulationPaths, setSimulationPaths]);
 
     const handleStartEyeDropClick = () => {
         setEditingPoint('start');
diff --git a/app/src/modules/builder/agv/agv.tsx b/app/src/modules/builder/agv/agv.tsx
index 6218662..33132fb 100644
--- a/app/src/modules/builder/agv/agv.tsx
+++ b/app/src/modules/builder/agv/agv.tsx
@@ -9,13 +9,12 @@ import {
   useSelectedActionSphere,
   useSimulationPaths,
 } from "../../../store/store";
+import * as CONSTANTS from "../../../types/world/worldConstants";
 
 const Agv = ({
   lines,
-  plane,
 }: {
   lines: Types.RefLines;
-  plane: Types.RefMesh;
 }) => {
   const [pathPoints, setPathPoints] = useState<
     {
@@ -34,7 +33,6 @@ const Agv = ({
         (val: any) => val.modelName === "agv"
       );
 
-      console.log("agvModels: ", agvModels);
       let findMesh = agvModels.filter(
         (val: any) =>
           val.modeluuid === selectedActionSphere?.path?.modeluuid &&
@@ -43,37 +41,37 @@ const Agv = ({
 
       const result =
         findMesh.length > 0 &&
-        findMesh[0].type === "Vehicle" &&
-        typeof findMesh[0].point?.actions.start === "object" &&
-        typeof findMesh[0].point?.actions.end === "object" &&
-        "x" in findMesh[0].point.actions.start &&
-        "y" in findMesh[0].point.actions.start &&
-        "x" in findMesh[0].point.actions.end &&
-        "y" in findMesh[0].point.actions.end
+          findMesh[0].type === "Vehicle" &&
+          typeof findMesh[0].points?.actions.start === "object" &&
+          typeof findMesh[0].points?.actions.end === "object" &&
+          "x" in findMesh[0].points.actions.start &&
+          "y" in findMesh[0].points.actions.start &&
+          "x" in findMesh[0].points.actions.end &&
+          "y" in findMesh[0].points.actions.end
           ? [
-              {
-                modelUuid: findMesh[0].modeluuid, // Ensure it's a number
-                modelSpeed: findMesh[0].point.speed,
-                bufferTime: findMesh[0].point.actions.buffer,
-                points: [
-                  {
-                    x: findMesh[0].position[0],
-                    y: findMesh[0].position[1],
-                    z: findMesh[0].position[2],
-                  },
-                  {
-                    x: findMesh[0].point.actions.start.x,
-                    y: 0,
-                    z: findMesh[0].point.actions.start.y,
-                  },
-                  {
-                    x: findMesh[0].point.actions.end.x,
-                    y: 0,
-                    z: findMesh[0].point.actions.end.y,
-                  },
-                ],
-              },
-            ]
+            {
+              modelUuid: findMesh[0].modeluuid, // Ensure it's a number
+              modelSpeed: findMesh[0].points.speed,
+              bufferTime: findMesh[0].points.actions.buffer,
+              points: [
+                {
+                  x: findMesh[0].position[0],
+                  y: findMesh[0].position[1],
+                  z: findMesh[0].position[2],
+                },
+                {
+                  x: findMesh[0].points.actions.start.x,
+                  y: 0,
+                  z: findMesh[0].points.actions.start.y,
+                },
+                {
+                  x: findMesh[0].points.actions.end.x,
+                  y: 0,
+                  z: findMesh[0].points.actions.end.y,
+                },
+              ],
+            },
+          ]
           : [];
       if (result.length > 0) {
         // setPathPoints((prev) => [...prev, ...result]);
@@ -106,12 +104,11 @@ const Agv = ({
 
   return (
     <>
-      <PolygonGenerator groupRef={groupRef} lines={lines} plane={plane} />
+      <PolygonGenerator groupRef={groupRef} lines={lines} />
       <NavMeshDetails
         lines={lines}
         setNavMesh={setNavMesh}
         groupRef={groupRef}
-        plane={plane}
       />
       {pathPoints.map((pair, i) => (
         <>
@@ -149,7 +146,12 @@ const Agv = ({
           )} */}
         </>
       ))}
-      <group ref={groupRef} visible={false} name="Meshes"></group>
+      <group ref={groupRef} visible={false} name="Meshes">
+        <mesh rotation-x={CONSTANTS.planeConfig.rotation} position={CONSTANTS.planeConfig.position3D} name="Plane" receiveShadow>
+          <planeGeometry args={[300, 300]} />
+          <meshBasicMaterial color={CONSTANTS.planeConfig.color} />
+        </mesh>
+      </group>
     </>
   );
 };
diff --git a/app/src/modules/builder/agv/navMeshDetails.tsx b/app/src/modules/builder/agv/navMeshDetails.tsx
index ecb539b..54b3c7c 100644
--- a/app/src/modules/builder/agv/navMeshDetails.tsx
+++ b/app/src/modules/builder/agv/navMeshDetails.tsx
@@ -10,14 +10,12 @@ interface NavMeshDetailsProps {
   setNavMesh: (navMesh: any) => void;
   groupRef: React.MutableRefObject<THREE.Group | null>;
   lines: Types.RefLines;
-  plane: Types.RefMesh;
 }
 
 export default function NavMeshDetails({
   lines,
   setNavMesh,
   groupRef,
-  plane,
 }: NavMeshDetailsProps) {
   const { scene } = useThree();
 
@@ -34,14 +32,14 @@ export default function NavMeshDetails({
 
         const [positions, indices] = getPositionsAndIndices(meshes);
 
-        const cs = 0.25;
-        const ch = 0.69;
+        const cellSize = 0.35;
+        const cellHeight = 0.7;
         const walkableRadius = 0.5;
 
         const { success, navMesh } = generateSoloNavMesh(positions, indices, {
-          cs,
-          ch,
-          walkableRadius: Math.round(walkableRadius / ch),
+          cs: cellSize,
+          ch: cellHeight,
+          walkableRadius: Math.round(walkableRadius / cellHeight),
         });
 
         if (!success || !navMesh) {
@@ -50,10 +48,14 @@ export default function NavMeshDetails({
 
         setNavMesh(navMesh);
 
+        scene.children
+          .filter((child) => child instanceof DebugDrawer)
+          .forEach((child) => scene.remove(child));
+
         const debugDrawer = new DebugDrawer();
         debugDrawer.drawNavMesh(navMesh);
-        // scene.add(debugDrawer);
-      } catch (error) {}
+        scene.add(debugDrawer);
+      } catch (error) { }
     };
 
     initializeNavigation();
diff --git a/app/src/modules/builder/agv/polygonGenerator.tsx b/app/src/modules/builder/agv/polygonGenerator.tsx
index 8682371..2462018 100644
--- a/app/src/modules/builder/agv/polygonGenerator.tsx
+++ b/app/src/modules/builder/agv/polygonGenerator.tsx
@@ -6,21 +6,12 @@ import arrayLinesToObject from "../geomentries/lines/lineConvertions/arrayLinesT
 interface PolygonGeneratorProps {
   groupRef: React.MutableRefObject<THREE.Group | null>;
   lines: Types.RefLines;
-  plane: Types.RefMesh;
 }
 
 export default function PolygonGenerator({
   groupRef,
   lines,
-  plane,
 }: PolygonGeneratorProps) {
-  // const [rooms, setRooms] = useState<THREE.Vector3[][]>([]);
-
-  useEffect(() => {
-    if (groupRef.current && plane.current) {
-      groupRef.current.add(plane.current.clone());
-    }
-  }, [groupRef, plane]);
 
   useEffect(() => {
     let allLines = arrayLinesToObject(lines.current);
@@ -37,13 +28,14 @@ export default function PolygonGenerator({
         uuid: point.uuid,
       }))
     );
+
     if (!result || result.some((line) => !line)) {
       return;
     }
 
     const lineFeatures = result?.map((line: any) =>
       turf.lineString(line.map((p: any) => p?.position))
-  );
+    );
 
     const polygons = turf.polygonize(turf.featureCollection(lineFeatures));
     renderWallGeometry(wallPoints);
@@ -79,8 +71,8 @@ export default function PolygonGenerator({
           groupRef.current?.add(mesh);
         }
       });
-
     }
+
   }, [lines.current]);
 
   const renderWallGeometry = (walls: THREE.Vector3[][]) => {
diff --git a/app/src/modules/builder/geomentries/assets/addAssetModel.ts b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
index a1ed87b..91c1f12 100644
--- a/app/src/modules/builder/geomentries/assets/addAssetModel.ts
+++ b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
@@ -136,7 +136,7 @@ async function handleModelLoad(
         tempLoader.current = undefined;
     }
 
-    const newFloorItem: Types.FloorItemType = {
+    const newFloorItem: Types.EventData = {
         modeluuid: model.uuid,
         modelname: selectedItem.name,
         modelfileID: selectedItem.id,
@@ -154,7 +154,7 @@ async function handleModelLoad(
         if (res.type === "Conveyor") {
             const pointUUIDs = res.points.map(() => THREE.MathUtils.generateUUID());
 
-            const backendEventData: Extract<Types.FloorItemType['eventData'], { type: 'Conveyor' }> = {
+            const backendEventData: Extract<Types.EventData['eventData'], { type: 'Conveyor' }> = {
                 type: 'Conveyor',
                 points: res.points.map((point: any, index: number) => ({
                     uuid: pointUUIDs[index],
@@ -167,7 +167,7 @@ async function handleModelLoad(
                         material: 'Inherit',
                         delay: 'Inherit',
                         spawnInterval: 'Inherit',
-                        isUsed: false
+                        isUsed: true
                     }],
                     triggers: [],
                     connections: {
@@ -189,7 +189,7 @@ async function handleModelLoad(
             //     { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z },
             //     false,
             //     true,
-            //     newFloorItem.eventData
+            //     { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed }
             // );
 
             // SOCKET
@@ -206,8 +206,7 @@ async function handleModelLoad(
                 eventData: backendEventData,
                 socketId: socket.id
             };
-            
-            console.log('data: ', data);
+
             setFloorItems((prevItems) => {
                 const updatedItems = [...(prevItems || []), newFloorItem];
                 localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
@@ -222,12 +221,25 @@ async function handleModelLoad(
 
             setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                 ...(prevEvents || []),
-                eventData as Types.ConveyorEventsSchema | Types.VehicleEventsSchema
+                eventData as Types.ConveyorEventsSchema
             ]);
 
             socket.emit("v2:model-asset:add", data);
 
-        } else {
+        } else if (res.type === "Vehicle") {
+
+            const pointUUID = THREE.MathUtils.generateUUID();
+
+            const backendEventData: Extract<Types.EventData['eventData'], { type: 'Vehicle' }> = {
+                type: "Vehicle",
+                points: {
+                    uuid: pointUUID,
+                    position: res.points.position as [number, number, number],
+                    actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Start', start: {}, hitCount: 1, end: {}, buffer: 0 },
+                    connections: { source: { modelUUID: model.uuid, pointUUID: pointUUID }, targets: [] },
+                    speed: 2,
+                }
+            }
 
             // API
 
@@ -239,7 +251,8 @@ async function handleModelLoad(
             //     newFloorItem.position,
             //     { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z },
             //     false,
-            //     true
+            //     true,
+            //     { type: backendEventData.type, points: backendEventData.points }
             // );
 
             // SOCKET
@@ -253,15 +266,26 @@ async function handleModelLoad(
                 rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z },
                 isLocked: false,
                 isVisible: true,
+                eventData: { type: backendEventData.type, points: backendEventData.points },
                 socketId: socket.id
             };
-            
+
+            const eventData: any = backendEventData;
+            eventData.modeluuid = newFloorItem.modeluuid;
+            eventData.modelName = newFloorItem.modelname;
+            eventData.position = newFloorItem.position;
+
             setFloorItems((prevItems) => {
                 const updatedItems = [...(prevItems || []), newFloorItem];
                 localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
                 return updatedItems;
             });
 
+            setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                ...(prevEvents || []),
+                eventData as Types.VehicleEventsSchema
+            ]);
+
             socket.emit("v2:model-asset:add", data);
 
         }
diff --git a/app/src/modules/collaboration/collabCams.tsx b/app/src/modules/collaboration/collabCams.tsx
index b15d17d..20d983e 100644
--- a/app/src/modules/collaboration/collabCams.tsx
+++ b/app/src/modules/collaboration/collabCams.tsx
@@ -111,7 +111,7 @@ const CamModelsGroup = () => {
       socket.off("userDisConnectRespones");
       socket.off("cameraUpdateResponse");
     };
-  }, [socket, activeUsers]);
+  }, [socket]);
 
 
   // useEffect(() => {
diff --git a/app/src/modules/collaboration/socketResponses.dev.tsx b/app/src/modules/collaboration/socketResponses.dev.tsx
index b8cec55..8771303 100644
--- a/app/src/modules/collaboration/socketResponses.dev.tsx
+++ b/app/src/modules/collaboration/socketResponses.dev.tsx
@@ -143,10 +143,6 @@ export default function SocketResponses({
                             isVisible: data.data.isVisible,
                         };
 
-                        if (data.data.eventData) {
-                            newFloorItem.eventData = data.data.eventData;
-                        }
-
                         setFloorItems((prevItems: any) => {
                             const updatedItems = [...(prevItems || []), newFloorItem];
                             localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
@@ -221,10 +217,6 @@ export default function SocketResponses({
                             isVisible: data.data.isVisible,
                         };
 
-                        if (data.data.eventData) {
-                            newFloorItem.eventData = data.data.eventData;
-                        }
-
                         setFloorItems((prevItems: any) => {
                             const updatedItems = [...(prevItems || []), newFloorItem];
                             localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
diff --git a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
index 3630378..5dd41de 100644
--- a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
+++ b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
@@ -23,10 +23,10 @@ async function loadInitialFloorItems(
     localStorage.setItem("FloorItems", JSON.stringify(items));
     await initializeDB();
 
-    if (items.message === "floorItems not found") return; 
+    if (items.message === "floorItems not found") return;
 
     if (items) {
-        const storedFloorItems: Types.FloorItems = items;
+        const storedFloorItems: Types.EventData[] = items;
         const loader = new GLTFLoader();
         const dracoLoader = new DRACOLoader();
 
@@ -53,7 +53,6 @@ async function loadInitialFloorItems(
         });
 
         for (const item of storedFloorItems) {
-            console.log('item: ', item);
             if (!item.modelfileID) return;
             const itemPosition = new THREE.Vector3(item.position[0], item.position[1], item.position[2]);
             let storedPosition;
@@ -155,7 +154,7 @@ async function loadInitialFloorItems(
 
 function processLoadedModel(
     gltf: any,
-    item: Types.FloorItemType,
+    item: Types.EventData,
     itemsGroup: Types.RefGroup,
     setFloorItems: Types.setFloorItemSetState,
     setSimulationPaths: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
@@ -193,7 +192,7 @@ function processLoadedModel(
         },
     ]);
 
-    if (item.eventData || item.modelfileID === '67e3da19c2e8f37134526e6a') {
+    if (item.eventData) {
         processEventData(item, setSimulationPaths);
     }
 
@@ -201,7 +200,7 @@ function processLoadedModel(
     gsap.to(model.scale, { x: 1, y: 1, z: 1, duration: 1.5, ease: 'power2.out' });
 }
 
-function processEventData(item: Types.FloorItemType, setSimulationPaths: any) {
+function processEventData(item: Types.EventData, setSimulationPaths: any) {
 
     if (item.eventData?.type === 'Conveyor') {
 
@@ -215,29 +214,19 @@ function processEventData(item: Types.FloorItemType, setSimulationPaths: any) {
             ...(prevEvents || []),
             data as Types.ConveyorEventsSchema
         ]);
+
     } else {
 
-        const pointUUID = THREE.MathUtils.generateUUID();
-        const pointPosition = new THREE.Vector3(0, 1.3, 0);
+        const data: any = item.eventData;
+        data.modeluuid = item.modeluuid;
+        data.modelName = item.modelname;
+        data.position = item.position;
 
-        const newVehiclePath: Types.VehicleEventsSchema = {
-            modeluuid: item.modeluuid,
-            modelName: item.modelname,
-            type: 'Vehicle',
-            point: {
-                uuid: pointUUID,
-                position: [pointPosition.x, pointPosition.y, pointPosition.z],
-                actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Start', start: {}, hitCount: 1, end: {}, buffer: 0 },
-                connections: { source: { pathUUID: item.modeluuid, pointUUID: pointUUID }, targets: [] },
-                speed: 2,
-            },
-            position: [...item.position],
-        };
-
-        setSimulationPaths((prevEvents: (Types.VehicleEventsSchema)[]) => [
+        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
             ...(prevEvents || []),
-            newVehiclePath as Types.VehicleEventsSchema
+            data as Types.VehicleEventsSchema
         ]);
+
     }
 }
 
diff --git a/app/src/modules/scene/controls/selection/copyPasteControls.tsx b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
index dea1da6..abcc1b0 100644
--- a/app/src/modules/scene/controls/selection/copyPasteControls.tsx
+++ b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
@@ -236,10 +236,91 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
 
                         setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
-                            newEventData as Types.ConveyorEventsSchema | Types.VehicleEventsSchema
+                            newEventData as Types.ConveyorEventsSchema
                         ]);
 
                         socket.emit("v2:model-asset:add", data);
+
+                    } else if (eventData.type === 'Vehicle' && eventData) {
+                        const createVehiclePoint = () => {
+                            const pointUUID = THREE.MathUtils.generateUUID();
+                            const vehiclePoint = (eventData as Types.VehicleEventsSchema)?.points;
+                            const hasActions = vehiclePoint?.actions !== undefined;
+
+                            const defaultAction = {
+                                uuid: THREE.MathUtils.generateUUID(),
+                                name: 'Action 1',
+                                type: 'Inherit',
+                                start: {},
+                                hitCount: 0,
+                                end: {},
+                                buffer: 0
+                            };
+
+                            return {
+                                uuid: pointUUID,
+                                position: vehiclePoint?.position,
+                                actions: hasActions
+                                    ? {
+                                        ...vehiclePoint.actions,
+                                        uuid: THREE.MathUtils.generateUUID()
+                                    }
+                                    : defaultAction,
+                                connections: {
+                                    source: { modelUUID: obj.uuid, pointUUID },
+                                    targets: []
+                                },
+                                speed: vehiclePoint?.speed || 1
+                            };
+                        };
+
+                        const backendEventData = {
+                            type: 'Vehicle',
+                            points: createVehiclePoint(),
+                            speed: (eventData as Types.VehicleEventsSchema)?.points.speed
+                        };
+
+                        // API
+
+                        // setFloorItemApi(
+                        //     organization,
+                        //     obj.uuid,
+                        //     obj.userData.name,
+                        //     obj.userData.modelId,
+                        //     [worldPosition.x, worldPosition.y, worldPosition.z],
+                        //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
+                        //     false,
+                        //     true,
+                        //     { type: backendEventData.type, points: backendEventData.points }
+                        // );
+
+                        // SOCKET
+
+                        const data = {
+                            organization,
+                            modeluuid: newFloorItem.modeluuid,
+                            modelname: newFloorItem.modelname,
+                            modelfileID: newFloorItem.modelfileID,
+                            position: newFloorItem.position,
+                            rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
+                            isLocked: false,
+                            isVisible: true,
+                            eventData: backendEventData,
+                            socketId: socket.id,
+                        };
+
+                        const newEventData: any = backendEventData;
+                        newEventData.modeluuid = newFloorItem.modeluuid;
+                        newEventData.modelName = newFloorItem.modelname;
+                        newEventData.position = newFloorItem.position;
+
+                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                            ...(prevEvents || []),
+                            newEventData as Types.VehicleEventsSchema
+                        ]);
+
+                        socket.emit("v2:model-asset:add", data);
+
                     }
                 } else {
 
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index 185ca68..8f3b514 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -5,6 +5,7 @@ import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, u
 import { toast } from "react-toastify";
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import * as Types from "../../../../types/world/worldTypes";
+import { setFloorItemApi } from "../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi";
 
 const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedObjects, setpastedObjects, selectionGroup, movedObjects, setMovedObjects, rotatedObjects, setRotatedObjects, boundingBoxRef }: any) => {
     const { camera, controls, gl, scene, pointer, raycaster } = useThree();
@@ -182,16 +183,16 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
 
                         //REST
 
-                        // await setFloorItemApi(
+                        // setFloorItemApi(
                         //     organization,
                         //     obj.uuid,
                         //     obj.userData.name,
+                        //     obj.userData.modelId,
                         //     [worldPosition.x, worldPosition.y, worldPosition.z],
                         //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
-                        //     obj.userData.modelId,
                         //     false,
                         //     true,
-                        //     backendEventData
+                        //     { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed }
                         // );
 
                         //SOCKET
@@ -217,10 +218,90 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
 
                         setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
-                            newEventData as Types.ConveyorEventsSchema | Types.VehicleEventsSchema
+                            newEventData as Types.ConveyorEventsSchema
                         ]);
 
                         socket.emit("v2:model-asset:add", data);
+
+                    } else if (eventData.type === 'Vehicle' && eventData) {
+                        const createVehiclePoint = () => {
+                            const pointUUID = THREE.MathUtils.generateUUID();
+                            const vehiclePoint = (eventData as Types.VehicleEventsSchema)?.points;
+                            const hasActions = vehiclePoint?.actions !== undefined;
+
+                            const defaultAction = {
+                                uuid: THREE.MathUtils.generateUUID(),
+                                name: 'Action 1',
+                                type: 'Inherit',
+                                start: {},
+                                hitCount: 0,
+                                end: {},
+                                buffer: 0
+                            };
+
+                            return {
+                                uuid: pointUUID,
+                                position: vehiclePoint?.position,
+                                actions: hasActions
+                                    ? {
+                                        ...vehiclePoint.actions,
+                                        uuid: THREE.MathUtils.generateUUID()
+                                    }
+                                    : defaultAction,
+                                connections: {
+                                    source: { modelUUID: obj.uuid, pointUUID },
+                                    targets: []
+                                },
+                                speed: vehiclePoint?.speed || 2
+                            };
+                        };
+
+                        const backendEventData = {
+                            type: 'Vehicle',
+                            points: createVehiclePoint()
+                        };
+
+                        // API
+
+                        setFloorItemApi(
+                            organization,
+                            obj.uuid,
+                            obj.userData.name,
+                            obj.userData.modelId,
+                            [worldPosition.x, worldPosition.y, worldPosition.z],
+                            { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
+                            false,
+                            true,
+                            { type: backendEventData.type, points: backendEventData.points }
+                        );
+
+                        // SOCKET
+
+                        const data = {
+                            organization,
+                            modeluuid: newFloorItem.modeluuid,
+                            modelname: newFloorItem.modelname,
+                            modelfileID: newFloorItem.modelfileID,
+                            position: newFloorItem.position,
+                            rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
+                            isLocked: false,
+                            isVisible: true,
+                            eventData: backendEventData,
+                            socketId: socket.id,
+                        };
+
+                        const newEventData: any = backendEventData;
+                        newEventData.modeluuid = newFloorItem.modeluuid;
+                        newEventData.modelName = newFloorItem.modelname;
+                        newEventData.position = newFloorItem.position;
+
+                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                            ...(prevEvents || []),
+                            newEventData as Types.VehicleEventsSchema
+                        ]);
+
+                        // socket.emit("v2:model-asset:add", data);
+
                     }
                 } else {
 
diff --git a/app/src/modules/scene/controls/selection/moveControls.tsx b/app/src/modules/scene/controls/selection/moveControls.tsx
index 350b487..a4340b5 100644
--- a/app/src/modules/scene/controls/selection/moveControls.tsx
+++ b/app/src/modules/scene/controls/selection/moveControls.tsx
@@ -238,7 +238,59 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                             return updatedEvents;
                         });
 
-                        // socket.emit("v2:model-asset:add", data);
+                        socket.emit("v2:model-asset:add", data);
+                    } else if (eventData.type === 'Vehicle' && eventData) {
+
+                        const backendEventData = {
+                            type: 'Vehicle',
+                            points: eventData.points
+                        };
+
+                        // REST
+
+                        // await setFloorItemApi(
+                        //     organization,
+                        //     obj.uuid,
+                        //     obj.userData.name,
+                        //     obj.userData.modelId,
+                        //     [worldPosition.x, worldPosition.y, worldPosition.z],
+                        //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
+                        //     false,
+                        //     true,
+                        //     backendEventData
+                        // );
+
+                        //SOCKET
+
+                        const data = {
+                            organization,
+                            modeluuid: newFloorItem.modeluuid,
+                            modelname: newFloorItem.modelname,
+                            modelfileID: newFloorItem.modelfileID,
+                            position: newFloorItem.position,
+                            rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
+                            isLocked: false,
+                            isVisible: true,
+                            eventData: backendEventData,
+                            socketId: socket.id,
+                        };
+
+                        const newEventData: any = backendEventData;
+                        newEventData.modeluuid = newFloorItem.modeluuid;
+                        newEventData.modelName = newFloorItem.modelname;
+                        newEventData.position = newFloorItem.position;
+
+                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                            const updatedEvents = (prevEvents || []).map(event =>
+                                event.modeluuid === newFloorItem.modeluuid
+                                    ? { ...event, ...newEventData }
+                                    : event
+                            );
+                            return updatedEvents;
+                        });
+
+                        socket.emit("v2:model-asset:add", data);
+
                     }
                 } else {
 
diff --git a/app/src/modules/scene/controls/selection/rotateControls.tsx b/app/src/modules/scene/controls/selection/rotateControls.tsx
index 6ad8309..708a00a 100644
--- a/app/src/modules/scene/controls/selection/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selection/rotateControls.tsx
@@ -5,6 +5,7 @@ import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, u
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import { toast } from "react-toastify";
 import * as Types from "../../../../types/world/worldTypes";
+import { setFloorItemApi } from "../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi";
 
 function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMovedObjects, itemsGroupRef, copiedObjects, setCopiedObjects, pastedObjects, setpastedObjects, duplicatedObjects, setDuplicatedObjects, selectionGroup, boundingBoxRef }: any) {
     const { camera, controls, gl, scene, pointer, raycaster } = useThree();
@@ -197,15 +198,15 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                             speed: (eventData as Types.ConveyorEventsSchema)?.speed
                         };
 
-                        //REST
+                        // REST
 
                         // await setFloorItemApi(
                         //     organization,
                         //     obj.uuid,
                         //     obj.userData.name,
+                        //     obj.userData.modelId,
                         //     [worldPosition.x, worldPosition.y, worldPosition.z],
                         //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
-                        //     obj.userData.modelId,
                         //     false,
                         //     true,
                         //     backendEventData
@@ -241,7 +242,60 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                             return updatedEvents;
                         });
 
-                        // socket.emit("v2:model-asset:add", data);
+                        socket.emit("v2:model-asset:add", data);
+
+                    } else if (eventData.type === 'Vehicle' && eventData) {
+
+                        const backendEventData = {
+                            type: 'Vehicle',
+                            points: eventData.points
+                        };
+
+                        // REST
+
+                        // await setFloorItemApi(
+                        //     organization,
+                        //     obj.uuid,
+                        //     obj.userData.name,
+                        //     obj.userData.modelId,
+                        //     [worldPosition.x, worldPosition.y, worldPosition.z],
+                        //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
+                        //     false,
+                        //     true,
+                        //     backendEventData
+                        // );
+
+                        //SOCKET
+
+                        const data = {
+                            organization,
+                            modeluuid: newFloorItem.modeluuid,
+                            modelname: newFloorItem.modelname,
+                            modelfileID: newFloorItem.modelfileID,
+                            position: newFloorItem.position,
+                            rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
+                            isLocked: false,
+                            isVisible: true,
+                            eventData: backendEventData,
+                            socketId: socket.id,
+                        };
+
+                        const newEventData: any = backendEventData;
+                        newEventData.modeluuid = newFloorItem.modeluuid;
+                        newEventData.modelName = newFloorItem.modelname;
+                        newEventData.position = newFloorItem.position;
+
+                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                            const updatedEvents = (prevEvents || []).map(event =>
+                                event.modeluuid === newFloorItem.modeluuid
+                                    ? { ...event, ...newEventData }
+                                    : event
+                            );
+                            return updatedEvents;
+                        });
+
+                        socket.emit("v2:model-asset:add", data);
+
                     }
                 } else {
 
diff --git a/app/src/modules/scene/postProcessing/postProcessing.tsx b/app/src/modules/scene/postProcessing/postProcessing.tsx
index ffa020e..30d8a8f 100644
--- a/app/src/modules/scene/postProcessing/postProcessing.tsx
+++ b/app/src/modules/scene/postProcessing/postProcessing.tsx
@@ -91,7 +91,7 @@ export default function PostProcessing() {
         )}
         {selectedActionSphere && (
           <Outline
-            selection={[selectedActionSphere.point]}
+            selection={[selectedActionSphere.points]}
             selectionLayer={10}
             width={1000}
             blendFunction={BlendFunction.ALPHA}
diff --git a/app/src/modules/scene/world/world.tsx b/app/src/modules/scene/world/world.tsx
index 1f95499..1b4f71f 100644
--- a/app/src/modules/scene/world/world.tsx
+++ b/app/src/modules/scene/world/world.tsx
@@ -367,7 +367,9 @@ export default function World() {
       />
 
       {/* <DrieHtmlTemp itemsGroup={itemsGroup} /> */}
-      {activeModule === "simulation" && <Agv lines={lines} plane={plane} />}
+
+      {activeModule === "simulation" && <Agv lines={lines} />}
+
     </>
   );
 }
diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index 7352932..3866a10 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -5,12 +5,14 @@ import * as Types from '../../../types/world/worldTypes';
 import { QuadraticBezierLine } from '@react-three/drei';
 import { useIsConnecting, useSimulationPaths } from '../../../store/store';
 import useModuleStore from '../../../store/useModuleStore';
+import { usePlayButtonStore } from '../../../store/usePlayButtonStore';
 
 function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObject<THREE.Group> }) {
     const { activeModule } = useModuleStore();
     const { gl, raycaster, scene, pointer, camera } = useThree();
     const { setIsConnecting } = useIsConnecting();
     const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { isPlaying } = usePlayButtonStore();
 
     const [firstSelected, setFirstSelected] = useState<{
         pathUUID: string;
@@ -89,12 +91,12 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
             // In the updatePathConnections function, modify the Vehicle handling section:
             else if (path.type === 'Vehicle') {
                 // Handle outgoing connections from Vehicle
-                if (path.modeluuid === fromPathUUID && path.point.uuid === fromPointUUID) {
+                if (path.modeluuid === fromPathUUID && path.points.uuid === fromPointUUID) {
                     const newTarget = {
                         pathUUID: toPathUUID,
                         pointUUID: toPointUUID
                     };
-                    const existingTargets = path.point.connections.targets || [];
+                    const existingTargets = path.points.connections.targets || [];
 
                     // Check if target is a Conveyor
                     const toPath = simulationPaths.find(p => p.modeluuid === toPathUUID);
@@ -115,10 +117,10 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     )) {
                         return {
                             ...path,
-                            point: {
-                                ...path.point,
+                            points: {
+                                ...path.points,
                                 connections: {
-                                    ...path.point.connections,
+                                    ...path.points.connections,
                                     targets: [...existingTargets, newTarget]
                                 }
                             }
@@ -126,12 +128,12 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     }
                 }
                 // Handle incoming connections to Vehicle
-                else if (path.modeluuid === toPathUUID && path.point.uuid === toPointUUID) {
+                else if (path.modeluuid === toPathUUID && path.points.uuid === toPointUUID) {
                     const reverseTarget = {
                         pathUUID: fromPathUUID,
                         pointUUID: fromPointUUID
                     };
-                    const existingTargets = path.point.connections.targets || [];
+                    const existingTargets = path.points.connections.targets || [];
 
                     // Check if source is a Conveyor
                     const fromPath = simulationPaths.find(p => p.modeluuid === fromPathUUID);
@@ -152,10 +154,10 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     )) {
                         return {
                             ...path,
-                            point: {
-                                ...path.point,
+                            points: {
+                                ...path.points,
                                 connections: {
-                                    ...path.point.connections,
+                                    ...path.points.connections,
                                     targets: [...existingTargets, reverseTarget]
                                 }
                             }
@@ -215,13 +217,13 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                     let isStartOrEnd = false;
 
-                    if (intersected.userData.path.points) {
+                    if (intersected.userData.path.points && intersected.userData.path.points.length > 1) {
                         isStartOrEnd = intersected.userData.path.points.length > 0 && (
                             sphereUUID === intersected.userData.path.points[0].uuid ||
                             sphereUUID === intersected.userData.path.points[intersected.userData.path.points.length - 1].uuid
                         );
-                    } else if (intersected.userData.path.point) {
-                        isStartOrEnd = sphereUUID === intersected.userData.path.point.uuid;
+                    } else if (intersected.userData.path.points) {
+                        isStartOrEnd = sphereUUID === intersected.userData.path.points.uuid;
                     }
 
                     if (pathUUID) {
@@ -253,7 +255,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                                             t.pathUUID === pathUUID && t.pointUUID === sphereUUID
                                         );
                                     } else if (path.type === 'Vehicle') {
-                                        return path.point.connections.targets.some(t =>
+                                        return path.points.connections.targets.some(t =>
                                             t.pathUUID === pathUUID && t.pointUUID === sphereUUID
                                         );
                                     }
@@ -269,7 +271,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                         // For Vehicles, check if they're already connected to anything
                         if (intersected.userData.path.type === 'Vehicle') {
-                            const vehicleConnections = intersected.userData.path.point.connections.targets.length;
+                            console.log('intersected: ', intersected);
+                            const vehicleConnections = intersected.userData.path.points.connections.targets.length;
                             if (vehicleConnections >= 1) {
                                 console.log("Vehicle can only have one connection");
                                 return;
@@ -418,7 +421,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                                 t.pathUUID === pathUUID && t.pointUUID === sphereUUID
                             );
                         } else if (path.type === 'Vehicle') {
-                            return path.point.connections.targets.some(t =>
+                            return path.points.connections.targets.some(t =>
                                 t.pathUUID === pathUUID && t.pointUUID === sphereUUID
                             );
                         }
@@ -440,7 +443,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                 // Check vehicle connection rules
                 const isVehicleAtMaxConnections = pathData.type === 'Vehicle' &&
-                    pathData.point.connections.targets.length >= 1;
+                    pathData.points.connections.targets.length >= 1;
                 const isVehicleConnectingToNonConveyor =
                     (firstPath?.type === 'Vehicle' && secondPath?.type !== 'Conveyor') ||
                     (secondPath?.type === 'Vehicle' && firstPath?.type !== 'Conveyor');
@@ -501,7 +504,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
     });
 
     return (
-        <>
+        <group name='simulationConnectionGroup' visible={!isPlaying} >
             {simulationPaths.flatMap(path => {
                 if (path.type === 'Conveyor') {
                     return path.points.flatMap(point =>
@@ -545,8 +548,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         })
                     );
                 } else if (path.type === 'Vehicle') {
-                    return path.point.connections.targets.map((target, index) => {
-                        const fromSphere = pathsGroupRef.current?.getObjectByProperty('uuid', path.point.uuid);
+                    return path.points.connections.targets.map((target, index) => {
+                        const fromSphere = pathsGroupRef.current?.getObjectByProperty('uuid', path.points.uuid);
                         const toSphere = pathsGroupRef.current?.getObjectByProperty('uuid', target.pointUUID);
 
                         if (fromSphere && toSphere) {
@@ -566,7 +569,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                             return (
                                 <QuadraticBezierLine
-                                    key={`${path.point.uuid}-${target.pointUUID}-${index}`}
+                                    key={`${path.points.uuid}-${target.pointUUID}-${index}`}
                                     start={fromWorldPosition.toArray()}
                                     end={toWorldPosition.toArray()}
                                     mid={midPoint.toArray()}
@@ -596,7 +599,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     dashScale={20}
                 />
             )}
-        </>
+        </group>
     );
 }
 
diff --git a/app/src/modules/simulation/path/pathCreation.tsx b/app/src/modules/simulation/path/pathCreation.tsx
index dd531a9..619a011 100644
--- a/app/src/modules/simulation/path/pathCreation.tsx
+++ b/app/src/modules/simulation/path/pathCreation.tsx
@@ -15,6 +15,7 @@ import {
 import { useFrame, useThree } from "@react-three/fiber";
 import { useSubModuleStore } from "../../../store/useModuleStore";
 import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
+import { setEventApi } from "../../../services/factoryBuilder/assest/floorAsset/setEventsApt";
 
 function PathCreation({
   pathsGroupRef,
@@ -24,16 +25,12 @@ function PathCreation({
   const { isPlaying } = usePlayButtonStore();
   const { renderDistance } = useRenderDistance();
   const { setSubModule } = useSubModuleStore();
-  const { setSelectedActionSphere, selectedActionSphere } =
-    useSelectedActionSphere();
+  const { setSelectedActionSphere, selectedActionSphere } = useSelectedActionSphere();
   const { eyeDropMode, setEyeDropMode } = useEyeDropMode();
   const { editingPoint, setEditingPoint } = useEditingPoint();
   const { previewPosition, setPreviewPosition } = usePreviewPosition();
   const { raycaster, camera, pointer, gl } = useThree();
-  const plane = useMemo(
-    () => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0),
-    []
-  );
+  const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
   const { setSelectedPath } = useSelectedPath();
   const { simulationPaths, setSimulationPaths } = useSimulationPaths();
   const { isConnecting } = useIsConnecting();
@@ -42,9 +39,7 @@ function PathCreation({
   const sphereRefs = useRef<{ [key: string]: THREE.Mesh }>({});
   const isMovingRef = useRef(false);
   const transformRef = useRef<any>(null);
-  const [transformMode, setTransformMode] = useState<
-    "translate" | "rotate" | null
-  >(null);
+  const [transformMode, setTransformMode] = useState<"translate" | "rotate" | null>(null);
 
   useEffect(() => {
     setTransformMode(null);
@@ -81,20 +76,20 @@ function PathCreation({
         return {
           ...path,
           points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.point.uuid
+            point.uuid === selectedActionSphere.points.uuid
               ? {
-                  ...point,
-                  position: [
-                    selectedActionSphere.point.position.x,
-                    selectedActionSphere.point.position.y,
-                    selectedActionSphere.point.position.z,
-                  ],
-                  rotation: [
-                    selectedActionSphere.point.rotation.x,
-                    selectedActionSphere.point.rotation.y,
-                    selectedActionSphere.point.rotation.z,
-                  ],
-                }
+                ...point,
+                position: [
+                  selectedActionSphere.points.position.x,
+                  selectedActionSphere.points.position.y,
+                  selectedActionSphere.points.position.z,
+                ],
+                rotation: [
+                  selectedActionSphere.points.rotation.x,
+                  selectedActionSphere.points.rotation.y,
+                  selectedActionSphere.points.rotation.z,
+                ],
+              }
               : point
           ),
         };
@@ -161,26 +156,37 @@ function PathCreation({
     };
   }, [eyeDropMode, editingPoint, previewPosition]);
 
+  const updateBackend = async (updatedPath: Types.VehicleEventsSchema | undefined) => {
+    if (!updatedPath) return;
+    const email = localStorage.getItem("email");
+    const organization = email ? email.split("@")[1].split(".")[0] : "";
+    await setEventApi(
+      organization,
+      updatedPath.modeluuid,
+      { type: "Vehicle", points: updatedPath.points }
+    );
+  }
+
   const handlePointUpdate = (
     pointType: "start" | "end",
     x: number,
     z: number
   ) => {
-    if (!selectedActionSphere?.point?.uuid) return;
-
+    if (!selectedActionSphere?.points?.uuid) return;
     const updatedPaths = simulationPaths.map((path) => {
+
       if (
         path.type === "Vehicle" &&
-        path.point.uuid === selectedActionSphere.point.uuid
+        path.points.uuid === selectedActionSphere.points.uuid
       ) {
         return {
           ...path,
-          point: {
-            ...path.point,
+          points: {
+            ...path.points,
             actions: {
-              ...path.point.actions,
+              ...path.points.actions,
               [pointType]: {
-                ...path.point.actions[pointType],
+                ...path.points.actions[pointType],
                 x: x,
                 y: z,
               },
@@ -191,6 +197,13 @@ function PathCreation({
       return path;
     });
 
+    const updatedPath = updatedPaths.find(
+      (path): path is Types.VehicleEventsSchema =>
+        path.type === "Vehicle" &&
+        path.points.uuid === selectedActionSphere.points.uuid
+    );
+    updateBackend(updatedPath);
+
     setSimulationPaths(updatedPaths);
   };
 
@@ -239,12 +252,12 @@ function PathCreation({
                     e.stopPropagation();
                     setSelectedActionSphere({
                       path,
-                      point: sphereRefs.current[point.uuid],
+                      points: sphereRefs.current[point.uuid],
                     });
                     setSubModule("mechanics");
                     setSelectedPath(null);
                   }}
-                  userData={{ point, path }}
+                  userData={{ points, path }}
                   onPointerMissed={() => {
                     if (eyeDropMode) return;
                     setSubModule("properties");
@@ -256,8 +269,8 @@ function PathCreation({
                       index === 0
                         ? "orange"
                         : index === path.points.length - 1
-                        ? "blue"
-                        : "green"
+                          ? "blue"
+                          : "green"
                     }
                   />
                 </Sphere>
@@ -318,23 +331,23 @@ function PathCreation({
               }}
             >
               <Sphere
-                key={path.point.uuid}
-                uuid={path.point.uuid}
-                position={path.point.position}
+                key={path.points.uuid}
+                uuid={path.points.uuid}
+                position={path.points.position}
                 args={[0.15, 32, 32]}
                 name="events-sphere"
-                ref={(el) => (sphereRefs.current[path.point.uuid] = el!)}
+                ref={(el) => (sphereRefs.current[path.points.uuid] = el!)}
                 onClick={(e) => {
                   if (isConnecting || eyeDropMode) return;
                   e.stopPropagation();
                   setSelectedActionSphere({
                     path,
-                    point: sphereRefs.current[path.point.uuid],
+                    points: sphereRefs.current[path.points.uuid],
                   });
                   setSubModule("mechanics");
                   setSelectedPath(null);
                 }}
-                userData={{ point: path.point, path }}
+                userData={{ points: path.points, path }}
                 onPointerMissed={() => {
                   if (eyeDropMode) return;
                   setSubModule("properties");
@@ -352,7 +365,7 @@ function PathCreation({
       {selectedActionSphere && transformMode && (
         <TransformControls
           ref={transformRef}
-          object={selectedActionSphere.point}
+          object={selectedActionSphere.points}
           mode={transformMode}
           onMouseUp={updateSimulationPaths}
         />
diff --git a/app/src/modules/simulation/process/processCreator.tsx b/app/src/modules/simulation/process/processCreator.tsx
index 91bc4c1..f089285 100644
--- a/app/src/modules/simulation/process/processCreator.tsx
+++ b/app/src/modules/simulation/process/processCreator.tsx
@@ -486,20 +486,20 @@ function convertToSimulationPath(
       modeluuid,
       points: [
         {
-          uuid: path.point.uuid,
-          position: path.point.position,
-          actions: Array.isArray(path.point.actions)
-            ? path.point.actions.map(normalizeAction)
-            : [normalizeAction(path.point.actions)],
+          uuid: path.points.uuid,
+          position: path.points.position,
+          actions: Array.isArray(path.points.actions)
+            ? path.points.actions.map(normalizeAction)
+            : [normalizeAction(path.points.actions)],
           connections: {
-            targets: path.point.connections.targets.map((target) => ({
+            targets: path.points.connections.targets.map((target) => ({
               pathUUID: target.pathUUID,
             })),
           },
         },
       ],
       pathPosition: path.position,
-      speed: path.point.speed || 1,
+      speed: path.points.speed || 1,
     };
   }
 }
diff --git a/app/src/modules/simulation/simulation.tsx b/app/src/modules/simulation/simulation.tsx
index 830a0b1..fd8b520 100644
--- a/app/src/modules/simulation/simulation.tsx
+++ b/app/src/modules/simulation/simulation.tsx
@@ -19,7 +19,7 @@ function Simulation() {
   const [processes, setProcesses] = useState([]);
 
   useEffect(() => {
-    console.log('simulationPaths: ', simulationPaths);
+    // console.log('simulationPaths: ', simulationPaths);
   }, [simulationPaths]);
 
   // useEffect(() => {
diff --git a/app/src/modules/simulation/simulationUI.tsx b/app/src/modules/simulation/simulationUI.tsx
index 0ce9fc2..bff2b20 100644
--- a/app/src/modules/simulation/simulationUI.tsx
+++ b/app/src/modules/simulation/simulationUI.tsx
@@ -19,7 +19,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) => {
-//                 if (point.uuid === selectedActionSphere.point.uuid) {
+//                 if (point.uuid === selectedActionSphere.points.uuid) {
 //                     const actionIndex = point.actions.length;
 //                     const newAction = {
 //                         uuid: THREE.MathUtils.generateUUID(),
@@ -46,7 +46,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? { ...point, actions: point.actions.filter(action => action.uuid !== uuid) }
 //                     : point
 //             ),
@@ -61,7 +61,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         actions: point.actions.map((action) =>
@@ -81,7 +81,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         actions: point.actions.map((action) =>
@@ -101,7 +101,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         actions: point.actions.map((action) =>
@@ -121,7 +121,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         actions: point.actions.map((action) =>
@@ -152,7 +152,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) => {
-//                 if (point.uuid === selectedActionSphere.point.uuid) {
+//                 if (point.uuid === selectedActionSphere.points.uuid) {
 //                     const triggerIndex = point.triggers.length;
 //                     const newTrigger = {
 //                         uuid: THREE.MathUtils.generateUUID(),
@@ -176,7 +176,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? { ...point, triggers: point.triggers.filter(trigger => trigger.uuid !== uuid) }
 //                     : point
 //             ),
@@ -191,7 +191,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         triggers: point.triggers.map((trigger) =>
@@ -217,7 +217,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         actions: point.actions.map((action) => ({
@@ -238,7 +238,7 @@
 //         const updatedPaths = simulationPaths.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
-//                 point.uuid === selectedActionSphere.point.uuid
+//                 point.uuid === selectedActionSphere.points.uuid
 //                     ? {
 //                         ...point,
 //                         triggers: point.triggers.map((trigger) => ({
@@ -255,7 +255,7 @@
 
 //     const selectedPoint = useMemo(() => {
 //         if (!selectedActionSphere) return null;
-//         return simulationPaths.flatMap((path) => path.points).find((point) => point.uuid === selectedActionSphere.point.uuid);
+//         return simulationPaths.flatMap((path) => path.points).find((point) => point.uuid === selectedActionSphere.points.uuid);
 //     }, [selectedActionSphere, simulationPaths]);
 
 //     const createPath = () => {
diff --git a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
index a1ac727..0c96ac4 100644
--- a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
+++ b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
@@ -2,7 +2,7 @@ let BackEnd_url = `http://${process.env.REACT_APP_SERVER_ASSET_LIBRARY_URL}`;
 export const getCategoryAsset = async (categoryName: any) => {
   try {
     const response = await fetch(
-      `${BackEnd_url}/api/v2/getCatagoryAssets/${categoryName}`,
+      `${BackEnd_url}/api/v2/getCategoryAssets/${categoryName}`,
       {
         method: "GET",
         headers: {
diff --git a/app/src/services/factoryBuilder/assest/floorAsset/setEventsApt.ts b/app/src/services/factoryBuilder/assest/floorAsset/setEventsApt.ts
index 86c8f71..b419963 100644
--- a/app/src/services/factoryBuilder/assest/floorAsset/setEventsApt.ts
+++ b/app/src/services/factoryBuilder/assest/floorAsset/setEventsApt.ts
@@ -17,7 +17,7 @@ export const setEventApi = async (
         });
 
         if (!response.ok) {
-            throw new Error("Failed to set or update Floor Item");
+            throw new Error("Failed to set or Update Event Data");
         }
 
         const result = await response.json();
diff --git a/app/src/types/world/worldTypes.d.ts b/app/src/types/world/worldTypes.d.ts
index d1ce13f..59d4713 100644
--- a/app/src/types/world/worldTypes.d.ts
+++ b/app/src/types/world/worldTypes.d.ts
@@ -201,27 +201,6 @@ export type FloorItemType = {
     modelfileID: string;
     isLocked: boolean;
     isVisible: boolean;
-    eventData?: {
-        type: 'Conveyor';
-        points: {
-            uuid: string;
-            position: [number, number, number];
-            rotation: [number, number, number];
-            actions: { uuid: string; name: string; type: string; material: string; delay: number | string; spawnInterval: number | string; isUsed: boolean }[] | [];
-            triggers: { uuid: string; name: string; type: string; isUsed: boolean; bufferTime: number }[] | [];
-            connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
-        }[];
-        speed: number | string;
-    } | {
-        type: 'Vehicle';
-        point: {
-            uuid: string;
-            position: [number, number, number];
-            actions: { uuid: string; name: string; type: string; start: { x: number, y: number } | {}, hitCount: number, end: { x: number, y: number } | {}, buffer: number };
-            connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
-            speed: number;
-        };
-    };
 };
 
 // Array of floor items for managing multiple objects on the floor
@@ -328,12 +307,43 @@ interface VehicleEventsSchema {
     modeluuid: string;
     modelName: string;
     type: 'Vehicle';
-    point: {
+    points: {
         uuid: string;
         position: [number, number, number];
         actions: { uuid: string; name: string; type: string; start: { x: number, y: number } | {}, hitCount: number, end: { x: number, y: number } | {}, buffer: number };
-        connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
         speed: number;
     };
     position: [number, number, number];
+}
+
+export type EventData = {
+    modeluuid: string;
+    modelname: string;
+    position: [number, number, number];
+    rotation: { x: number; y: number; z: number };
+    modelfileID: string;
+    isLocked: boolean;
+    isVisible: boolean;
+    eventData?: {
+        type: 'Conveyor';
+        points: {
+            uuid: string;
+            position: [number, number, number];
+            rotation: [number, number, number];
+            actions: { uuid: string; name: string; type: string; material: string; delay: number | string; spawnInterval: number | string; isUsed: boolean }[] | [];
+            triggers: { uuid: string; name: string; type: string; isUsed: boolean; bufferTime: number }[] | [];
+            connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+        }[];
+        speed: number | string;
+    } | {
+        type: 'Vehicle';
+        points: {
+            uuid: string;
+            position: [number, number, number];
+            actions: { uuid: string; name: string; type: string; start: { x: number, y: number } | {}, hitCount: number, end: { x: number, y: number } | {}, buffer: number };
+            connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+            speed: number;
+        };
+    };
 }
\ No newline at end of file

From 8dc6b3949fbad8e96d0782e54ca6d3cda0acfbed Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Fri, 4 Apr 2025 17:46:19 +0530
Subject: [PATCH 05/17] refactor: update event handling in mechanics components
 to use socket communication

---
 .../mechanics/ConveyorMechanics.tsx           | 22 +++++++++++++----
 .../mechanics/VehicleMechanics.tsx            | 23 +++++++++++++-----
 .../modules/builder/agv/navMeshDetails.tsx    |  2 +-
 .../builder/groups/floorItemsGroup.tsx        |  1 -
 .../selection/duplicationControls.tsx         | 24 +++++++++----------
 5 files changed, 47 insertions(+), 25 deletions(-)

diff --git a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
index 0a20f4b..8ad0886 100644
--- a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
@@ -14,6 +14,7 @@ import {
   useSelectedActionSphere,
   useSelectedPath,
   useSimulationPaths,
+  useSocketStore,
 } from "../../../../store/store";
 import * as THREE from "three";
 import * as Types from "../../../../types/world/worldTypes";
@@ -26,6 +27,7 @@ const ConveyorMechanics: React.FC = () => {
   const { selectedPath, setSelectedPath } = useSelectedPath();
   const { simulationPaths, setSimulationPaths } = useSimulationPaths();
   const { floorItems, setFloorItems } = useFloorItems();
+  const { socket } = useSocketStore();
 
   const actionsContainerRef = useRef<HTMLDivElement>(null);
   const triggersContainerRef = useRef<HTMLDivElement>(null);
@@ -44,11 +46,21 @@ const ConveyorMechanics: React.FC = () => {
     if (!updatedPath) return;
     const email = localStorage.getItem("email");
     const organization = email ? email.split("@")[1].split(".")[0] : "";
-    await setEventApi(
-      organization,
-      updatedPath.modeluuid,
-      { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
-    );
+
+    // await setEventApi(
+    //   organization,
+    //   updatedPath.modeluuid,
+    //   { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
+    // );
+
+    const data = {
+      organization: organization,
+      modeluuid: updatedPath.modeluuid,
+      eventData: { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
+    }
+
+    socket.emit('v2:model-asset:updateEventData', data);
+
   }
 
   const handleAddAction = () => {
diff --git a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
index f1929ad..e9bd6a2 100644
--- a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
@@ -1,7 +1,7 @@
 import React, { useRef, useMemo } from "react";
 import { InfoIcon } from "../../../icons/ExportCommonIcons";
 import InputWithDropDown from "../../../ui/inputs/InputWithDropDown";
-import { useEditingPoint, useEyeDropMode, usePreviewPosition, useSelectedActionSphere, useSimulationPaths } from "../../../../store/store";
+import { useEditingPoint, useEyeDropMode, usePreviewPosition, useSelectedActionSphere, useSimulationPaths, useSocketStore } from "../../../../store/store";
 import * as Types from '../../../../types/world/worldTypes';
 import PositionInput from "../customInput/PositionInputs";
 import { setEventApi } from "../../../../services/factoryBuilder/assest/floorAsset/setEventsApt";
@@ -12,6 +12,7 @@ const VehicleMechanics: React.FC = () => {
     const { eyeDropMode, setEyeDropMode } = useEyeDropMode();
     const { editingPoint, setEditingPoint } = useEditingPoint();
     const { previewPosition, setPreviewPosition } = usePreviewPosition();
+    const { socket } = useSocketStore();
 
     const propertiesContainerRef = useRef<HTMLDivElement>(null);
 
@@ -45,11 +46,21 @@ const VehicleMechanics: React.FC = () => {
         if (!updatedPath) return;
         const email = localStorage.getItem("email");
         const organization = email ? email.split("@")[1].split(".")[0] : "";
-        await setEventApi(
-            organization,
-            updatedPath.modeluuid,
-            { type: "Vehicle", points: updatedPath.points }
-        );
+
+        // await setEventApi(
+        //     organization,
+        //     updatedPath.modeluuid,
+        //     { type: "Vehicle", points: updatedPath.points }
+        // );
+
+        const data = {
+            organization: organization,
+            modeluuid: updatedPath.modeluuid,
+            eventData: { type: "Vehicle", points: updatedPath.points }
+        }
+
+        socket.emit('v2:model-asset:updateEventData', data);
+
     }
 
     const handleActionUpdate = React.useCallback((updatedAction: Partial<Types.VehicleEventsSchema['points']['actions']>) => {
diff --git a/app/src/modules/builder/agv/navMeshDetails.tsx b/app/src/modules/builder/agv/navMeshDetails.tsx
index 54b3c7c..626b673 100644
--- a/app/src/modules/builder/agv/navMeshDetails.tsx
+++ b/app/src/modules/builder/agv/navMeshDetails.tsx
@@ -54,7 +54,7 @@ export default function NavMeshDetails({
 
         const debugDrawer = new DebugDrawer();
         debugDrawer.drawNavMesh(navMesh);
-        scene.add(debugDrawer);
+        // scene.add(debugDrawer);
       } catch (error) { }
     };
 
diff --git a/app/src/modules/builder/groups/floorItemsGroup.tsx b/app/src/modules/builder/groups/floorItemsGroup.tsx
index 2b77fb2..cef7d74 100644
--- a/app/src/modules/builder/groups/floorItemsGroup.tsx
+++ b/app/src/modules/builder/groups/floorItemsGroup.tsx
@@ -110,7 +110,6 @@ const FloorItemsGroup = ({
         }
         gltfLoaderWorker.postMessage({ floorItems: data });
       } else {
-        console.log('data: ', data);
         gltfLoaderWorker.postMessage({ floorItems: [] });
         loadInitialFloorItems(itemsGroup, setFloorItems, setSimulationPaths);
         updateLoadingProgress(100);
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index 8f3b514..c28c401 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -263,17 +263,17 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
 
                         // API
 
-                        setFloorItemApi(
-                            organization,
-                            obj.uuid,
-                            obj.userData.name,
-                            obj.userData.modelId,
-                            [worldPosition.x, worldPosition.y, worldPosition.z],
-                            { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
-                            false,
-                            true,
-                            { type: backendEventData.type, points: backendEventData.points }
-                        );
+                        // setFloorItemApi(
+                        //     organization,
+                        //     obj.uuid,
+                        //     obj.userData.name,
+                        //     obj.userData.modelId,
+                        //     [worldPosition.x, worldPosition.y, worldPosition.z],
+                        //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
+                        //     false,
+                        //     true,
+                        //     { type: backendEventData.type, points: backendEventData.points }
+                        // );
 
                         // SOCKET
 
@@ -300,7 +300,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                             newEventData as Types.VehicleEventsSchema
                         ]);
 
-                        // socket.emit("v2:model-asset:add", data);
+                        socket.emit("v2:model-asset:add", data);
 
                     }
                 } else {

From 46d4308f9ae20270e7002b7d5c5e05028c6f24e5 Mon Sep 17 00:00:00 2001
From: Nalvazhuthi <nalvazhuthi@hexrfactory.com>
Date: Fri, 4 Apr 2025 17:47:15 +0530
Subject: [PATCH 06/17] display menu bugfix

---
 .../ui/componets/Dropped3dWidget.tsx          | 694 ++++++++++--------
 .../ui/componets/RealTimeVisulization.tsx     |  74 +-
 .../components/ui/menu/EditWidgetOption.tsx   |  41 +-
 app/src/store/useZone3DWidgetStore.ts         |  11 +
 app/src/styles/pages/realTimeViz.scss         |   7 +-
 5 files changed, 472 insertions(+), 355 deletions(-)

diff --git a/app/src/components/ui/componets/Dropped3dWidget.tsx b/app/src/components/ui/componets/Dropped3dWidget.tsx
index f12712d..7885275 100644
--- a/app/src/components/ui/componets/Dropped3dWidget.tsx
+++ b/app/src/components/ui/componets/Dropped3dWidget.tsx
@@ -1,6 +1,10 @@
 import { useThree } from "@react-three/fiber";
 import React, { useEffect, useRef } from "react";
-import { useAsset3dWidget, useSocketStore, useWidgetSubOption } from "../../../store/store";
+import {
+  useAsset3dWidget,
+  useSocketStore,
+  useWidgetSubOption,
+} from "../../../store/store";
 import useModuleStore from "../../../store/useModuleStore";
 import { ThreeState } from "../../../types/world/worldTypes";
 import * as THREE from "three";
@@ -13,347 +17,391 @@ import { generateUniqueId } from "../../../functions/generateUniqueId";
 import { adding3dWidgets } from "../../../services/realTimeVisulization/zoneData/add3dWidget";
 import { get3dWidgetZoneData } from "../../../services/realTimeVisulization/zoneData/get3dWidgetData";
 import { use3DWidget } from "../../../store/useDroppedObjectsStore";
-import { useLeftData, useRightClickSelected, useRightSelected, useTopData, useZoneWidgetStore } from "../../../store/useZone3DWidgetStore";
+import {
+  useEditWidgetOptionsStore,
+  useLeftData,
+  useRightClickSelected,
+  useRightSelected,
+  useTopData,
+  useZoneWidgetStore,
+} from "../../../store/useZone3DWidgetStore";
 import { useWidgetStore } from "../../../store/useWidgetStore";
 import EditWidgetOption from "../menu/EditWidgetOption";
 type WidgetData = {
-    id: string;
-    type: string;
-    position: [number, number, number];
-    rotation?: [number, number, number];
-    tempPosition?: [number, number, number];
+  id: string;
+  type: string;
+  position: [number, number, number];
+  rotation?: [number, number, number];
+  tempPosition?: [number, number, number];
 };
 
-
 export default function Dropped3dWidgets() {
-    const { widgetSelect } = useAsset3dWidget();
-    const { activeModule } = useModuleStore();
-    const { raycaster, gl, scene, mouse, camera }: ThreeState = useThree();
-    const { widgetSubOption } = useWidgetSubOption();
-    const { selectedZone } = useSelectedZoneStore();
-    const { top, setTop } = useTopData();
-    const { left, setLeft } = useLeftData();
-    const { rightSelect, setRightSelect } = useRightSelected();
+  const { widgetSelect } = useAsset3dWidget();
+  const { activeModule } = useModuleStore();
+  const { raycaster, gl, scene, mouse, camera }: ThreeState = useThree();
+  const { widgetSubOption } = useWidgetSubOption();
+  const { selectedZone } = useSelectedZoneStore();
+  const { top, setTop } = useTopData();
+  const { left, setLeft } = useLeftData();
+  const { rightSelect, setRightSelect } = useRightSelected();
+  const { setEditWidgetOptions } = useEditWidgetOptionsStore();
 
-    const { zoneWidgetData, setZoneWidgetData, addWidget, updateWidgetPosition, updateWidgetRotation } = useZoneWidgetStore();
-    const { setWidgets3D } = use3DWidget();
-    const { visualizationSocket } = useSocketStore();
-    const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
-    const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0)); // Floor plane for horizontal move
-    const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0)); // Vertical plane for vertical move
-    const planeIntersect = useRef(new THREE.Vector3());
-    // const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);
-    // const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
-    // const planeIntersect = useRef(new THREE.Vector3());
-    const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
-    const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
+  const {
+    zoneWidgetData,
+    setZoneWidgetData,
+    addWidget,
+    updateWidgetPosition,
+    updateWidgetRotation,
+  } = useZoneWidgetStore();
+  const { setWidgets3D } = use3DWidget();
+  const { visualizationSocket } = useSocketStore();
+  const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
+  const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0)); // Floor plane for horizontal move
+  const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0)); // Vertical plane for vertical move
+  const planeIntersect = useRef(new THREE.Vector3());
+  // const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);
+  // const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
+  // const planeIntersect = useRef(new THREE.Vector3());
+  const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
+  const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
 
-    useEffect(() => {
-        if (activeModule !== "visualization") return;
-        if (!selectedZone.zoneId) return;
+  useEffect(() => {
+    if (activeModule !== "visualization") return;
+    if (!selectedZone.zoneId) return;
 
-        const email = localStorage.getItem("email") || "";
-        const organization = email?.split("@")[1]?.split(".")[0];
+    const email = localStorage.getItem("email") || "";
+    const organization = email?.split("@")[1]?.split(".")[0];
 
-        async function get3dWidgetData() {
-            const result = await get3dWidgetZoneData(selectedZone.zoneId, organization);
-            setWidgets3D(result);
+    async function get3dWidgetData() {
+      const result = await get3dWidgetZoneData(
+        selectedZone.zoneId,
+        organization
+      );
+      setWidgets3D(result);
 
-            const formattedWidgets = result.map((widget: WidgetData) => ({
-                id: widget.id,
-                type: widget.type,
-                position: widget.position,
-                rotation: widget.rotation || [0, 0, 0],
-            }));
+      const formattedWidgets = result.map((widget: WidgetData) => ({
+        id: widget.id,
+        type: widget.type,
+        position: widget.position,
+        rotation: widget.rotation || [0, 0, 0],
+      }));
 
-            setZoneWidgetData(selectedZone.zoneId, formattedWidgets);
+      setZoneWidgetData(selectedZone.zoneId, formattedWidgets);
+    }
+
+    get3dWidgetData();
+  }, [selectedZone.zoneId, activeModule]);
+
+  useEffect(() => {
+    if (activeModule !== "visualization") return;
+    if (widgetSubOption === "Floating" || widgetSubOption === "2D") return;
+    if (selectedZone.zoneName === "") return;
+
+    const canvasElement = gl.domElement;
+
+    const onDrop = async (event: DragEvent) => {
+      event.preventDefault();
+
+      const email = localStorage.getItem("email") || "";
+      const organization = email?.split("@")[1]?.split(".")[0];
+      if (!widgetSelect.startsWith("ui")) return;
+      const group1 = scene.getObjectByName("itemsGroup");
+      if (!group1) return;
+
+      const intersects = raycaster
+        .intersectObjects(scene.children, true)
+        .filter(
+          (intersect) =>
+            !intersect.object.name.includes("Roof") &&
+            !intersect.object.name.includes("agv-collider") &&
+            !intersect.object.name.includes("MeasurementReference") &&
+            !intersect.object.userData.isPathObject &&
+            !(intersect.object.type === "GridHelper")
+        );
+
+      if (intersects.length > 0) {
+        const { x, y, z } = intersects[0].point;
+        const newWidget: WidgetData = {
+          id: generateUniqueId(),
+          type: widgetSelect,
+          position: [x, y, z],
+          rotation: [0, 0, 0],
+        };
+
+        const add3dWidget = {
+          organization: organization,
+          widget: newWidget,
+          zoneId: selectedZone.zoneId,
+        };
+
+        if (visualizationSocket) {
+          visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
         }
 
-        get3dWidgetData();
-    }, [selectedZone.zoneId, activeModule]);
+        addWidget(selectedZone.zoneId, newWidget);
+      }
+    };
 
-    useEffect(() => {
-        if (activeModule !== "visualization") return;
-        if (widgetSubOption === "Floating" || widgetSubOption === "2D") return;
-        if (selectedZone.zoneName === "") return;
+    canvasElement.addEventListener("drop", onDrop);
+    return () => {
+      canvasElement.removeEventListener("drop", onDrop);
+    };
+  }, [widgetSelect, activeModule, selectedZone.zoneId, widgetSubOption]);
 
-        const canvasElement = gl.domElement;
+  const activeZoneWidgets = zoneWidgetData[selectedZone.zoneId] || [];
 
-        const onDrop = async (event: DragEvent) => {
+  useEffect(() => {
+    if (!rightClickSelected) return;
+    const email = localStorage.getItem("email") || "";
+    const organization = email?.split("@")[1]?.split(".")[0];
+
+    if (rightSelect === "Duplicate") {
+      const widgetToDuplicate = activeZoneWidgets.find(
+        (w: WidgetData) => w.id === rightClickSelected
+      );
+      if (!widgetToDuplicate) return;
+      const newWidget: WidgetData = {
+        id: generateUniqueId(),
+        type: widgetToDuplicate.type,
+        position: [
+          widgetToDuplicate.position[0] + 0.5,
+          widgetToDuplicate.position[1],
+          widgetToDuplicate.position[2] + 0.5,
+        ],
+        rotation: widgetToDuplicate.rotation || [0, 0, 0],
+      };
+
+      const add3dWidget = {
+        organization,
+        widget: newWidget,
+        zoneId: selectedZone.zoneId,
+      };
+
+      addWidget(selectedZone.zoneId, newWidget);
+      setRightSelect(null);
+      setRightClickSelected(null);
+    }
+
+    if (rightSelect === "Delete") {
+      const deleteWidget = {
+        organization,
+        widgetId: rightClickSelected,
+        zoneId: selectedZone.zoneId,
+      };
+
+      setZoneWidgetData(
+        selectedZone.zoneId,
+        activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
+      );
+      setRightClickSelected(null);
+      setRightSelect(null);
+    }
+  }, [rightSelect, rightClickSelected]);
+
+  useEffect(() => {
+    const handleMouseDown = (event: MouseEvent) => {
+      if (!rightClickSelected || !rightSelect) return;
+
+      if (rightSelect === "RotateX" || rightSelect === "RotateY") {
+        mouseStartRef.current = { x: event.clientX, y: event.clientY };
+
+        const selectedZone = Object.keys(zoneWidgetData).find(
+          (zoneId: string) =>
+            zoneWidgetData[zoneId].some(
+              (widget: WidgetData) => widget.id === rightClickSelected
+            )
+        );
+
+        if (!selectedZone) return;
+
+        const selectedWidget = zoneWidgetData[selectedZone].find(
+          (widget: WidgetData) => widget.id === rightClickSelected
+        );
+        if (selectedWidget) {
+          rotationStartRef.current = selectedWidget.rotation || [0, 0, 0];
+        }
+      }
+    };
+
+    const handleMouseMove = (event: MouseEvent) => {
+      if (!rightClickSelected || !rightSelect) return;
+      const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
+        zoneWidgetData[zoneId].some(
+          (widget: WidgetData) => widget.id === rightClickSelected
+        )
+      );
+      if (!selectedZone) return;
+
+      const selectedWidget = zoneWidgetData[selectedZone].find(
+        (widget: WidgetData) => widget.id === rightClickSelected
+      );
+      if (!selectedWidget) return;
+
+      const rect = gl.domElement.getBoundingClientRect();
+      mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
+      mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
+
+      raycaster.setFromCamera(mouse, camera);
+
+      if (
+        rightSelect === "Horizontal Move" &&
+        raycaster.ray.intersectPlane(plane.current, planeIntersect.current)
+      ) {
+        const newPosition: [number, number, number] = [
+          planeIntersect.current.x,
+          selectedWidget.position[1],
+          planeIntersect.current.z,
+        ];
+        updateWidgetPosition(selectedZone, rightClickSelected, newPosition);
+        console.log("Horizontal Move - Final Position:", newPosition);
+      }
+
+      if (rightSelect === "Vertical Move") {
+        if (
+          raycaster.ray.intersectPlane(
+            verticalPlane.current,
+            planeIntersect.current
+          )
+        ) {
+          updateWidgetPosition(selectedZone, rightClickSelected, [
+            selectedWidget.position[0],
+            planeIntersect.current.y,
+            selectedWidget.position[2],
+          ]);
+        }
+      }
+
+      if (rightSelect === "RotateX") {
+        const deltaX = event.clientX - mouseStartRef.current.x;
+        const rotationSpeed = 0.03;
+        const newRotation: [number, number, number] = [
+          rotationStartRef.current[0] + deltaX * rotationSpeed,
+          rotationStartRef.current[1],
+          rotationStartRef.current[2],
+        ];
+        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+      }
+
+      if (rightSelect === "RotateY") {
+        const deltaY = event.clientY - mouseStartRef.current.y;
+        const rotationSpeed = 0.03;
+        const newRotation: [number, number, number] = [
+          rotationStartRef.current[0],
+          rotationStartRef.current[1] + deltaY * rotationSpeed,
+          rotationStartRef.current[2],
+        ];
+        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+      }
+      if (rightSelect === "RotateZ") {
+        const deltaX = event.movementX;
+        const rotationSpeed = 0.03;
+        const currentRotation = selectedWidget.rotation || [0, 0, 0];
+        const newRotation: [number, number, number] = [
+          currentRotation[0],
+          currentRotation[1],
+          currentRotation[2] + deltaX * rotationSpeed,
+        ];
+        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+      }
+    };
+
+    const handleMouseUp = () => {
+      if (
+        rightClickSelected &&
+        (rightSelect === "Horizontal Move" ||
+          rightSelect === "Vertical Move" ||
+          rightSelect === "RotateX" ||
+          rightSelect === "RotateY" ||
+          rightSelect === "RotateZ")
+      ) {
+        setTimeout(() => {
+          setRightClickSelected(null);
+          setRightSelect(null);
+        }, 50);
+      }
+    };
+
+    window.addEventListener("mousedown", handleMouseDown);
+    window.addEventListener("mousemove", handleMouseMove);
+    window.addEventListener("mouseup", handleMouseUp);
+
+    return () => {
+      window.removeEventListener("mousedown", handleMouseDown);
+      window.removeEventListener("mousemove", handleMouseMove);
+      window.removeEventListener("mouseup", handleMouseUp);
+    };
+  }, [rightClickSelected, rightSelect, zoneWidgetData, gl]);
+
+  return (
+    <>
+      {activeZoneWidgets.map(
+        ({ id, type, position, rotation = [0, 0, 0] }: WidgetData) => {
+          const handleRightClick = (event: React.MouseEvent, id: string) => {
             event.preventDefault();
-
-            const email = localStorage.getItem("email") || "";
-            const organization = email?.split("@")[1]?.split(".")[0];
-            if (!widgetSelect.startsWith("ui")) return;
-            const group1 = scene.getObjectByName("itemsGroup");
-            if (!group1) return;
-
-            const intersects = raycaster.intersectObjects(scene.children, true).filter(
-                (intersect) =>
-                    !intersect.object.name.includes("Roof") &&
-                    !intersect.object.name.includes("agv-collider") &&
-                    !intersect.object.name.includes("MeasurementReference") &&
-                    !intersect.object.userData.isPathObject &&
-                    !(intersect.object.type === "GridHelper")
+            const canvasElement = document.getElementById(
+              "real-time-vis-canvas"
             );
+            if (!canvasElement) throw new Error("Canvas element not found");
+            const canvasRect = canvasElement.getBoundingClientRect();
+            const relativeX = event.clientX - canvasRect.left;
+            const relativeY = event.clientY - canvasRect.top;
+            setEditWidgetOptions(true);
+            setRightClickSelected(id);
 
-            if (intersects.length > 0) {
-                const { x, y, z } = intersects[0].point;
-                const newWidget: WidgetData = {
-                    id: generateUniqueId(),
-                    type: widgetSelect,
-                    position: [x, y, z],
-                    rotation: [0, 0, 0],
-                };
+            setTop(relativeY);
+            setLeft(relativeX);
+          };
 
-                const add3dWidget = {
-                    organization: organization,
-                    widget: newWidget,
-                    zoneId: selectedZone.zoneId
-                };
-
-                if (visualizationSocket) {
-                    visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
-                }
-
-                addWidget(selectedZone.zoneId, newWidget);
-            }
-        };
-
-        canvasElement.addEventListener("drop", onDrop);
-        return () => {
-            canvasElement.removeEventListener("drop", onDrop);
-        };
-    }, [widgetSelect, activeModule, selectedZone.zoneId, widgetSubOption]);
-
-    const activeZoneWidgets = zoneWidgetData[selectedZone.zoneId] || [];
-
-    useEffect(() => {
-        if (!rightClickSelected) return;
-        const email = localStorage.getItem("email") || "";
-        const organization = email?.split("@")[1]?.split(".")[0];
-
-        if (rightSelect === "Duplicate") {
-            const widgetToDuplicate = activeZoneWidgets.find((w: WidgetData) => w.id === rightClickSelected);
-            if (!widgetToDuplicate) return;
-            const newWidget: WidgetData = {
-                id: generateUniqueId(),
-                type: widgetToDuplicate.type,
-                position: [
-                    widgetToDuplicate.position[0] + 0.5,
-                    widgetToDuplicate.position[1],
-                    widgetToDuplicate.position[2] + 0.5,
-                ],
-                rotation: widgetToDuplicate.rotation || [0, 0, 0],
-            };
-
-            const add3dWidget = {
-                organization,
-                widget: newWidget,
-                zoneId: selectedZone.zoneId
-            };
-
-            addWidget(selectedZone.zoneId, newWidget);
-            setRightSelect(null);
-            setRightClickSelected(null);
+          switch (type) {
+            case "ui-Widget 1":
+              return (
+                <ProductionCapacity
+                  key={id}
+                  id={id}
+                  type={type}
+                  position={position}
+                  rotation={rotation}
+                  onContextMenu={(e) => handleRightClick(e, id)}
+                />
+              );
+            case "ui-Widget 2":
+              return (
+                <ReturnOfInvestment
+                  key={id}
+                  id={id}
+                  type={type}
+                  position={position}
+                  // rotation={rotation}
+                  onContextMenu={(e) => handleRightClick(e, id)}
+                />
+              );
+            case "ui-Widget 3":
+              return (
+                <StateWorking
+                  key={id}
+                  id={id}
+                  type={type}
+                  position={position}
+                  // rotation={rotation}
+                  onContextMenu={(e) => handleRightClick(e, id)}
+                />
+              );
+            case "ui-Widget 4":
+              return (
+                <Throughput
+                  key={id}
+                  id={id}
+                  type={type}
+                  position={position}
+                  // rotation={rotation}
+                  onContextMenu={(e) => handleRightClick(e, id)}
+                />
+              );
+            default:
+              return null;
+          }
         }
-
-        if (rightSelect === "Delete") {
-            const deleteWidget = {
-                organization,
-                widgetId: rightClickSelected,
-                zoneId: selectedZone.zoneId
-            };
-
-            setZoneWidgetData(
-                selectedZone.zoneId,
-                activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
-            );
-            setRightClickSelected(null);
-            setRightSelect(null);
-        }
-    }, [rightSelect, rightClickSelected]);
-
-    useEffect(() => {
-        const handleMouseDown = (event: MouseEvent) => {
-            if (!rightClickSelected || !rightSelect) return;
-
-            if (rightSelect === "RotateX" || rightSelect === "RotateY") {
-                mouseStartRef.current = { x: event.clientX, y: event.clientY };
-
-                const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
-                    zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
-                );
-
-                if (!selectedZone) return;
-
-                const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
-                if (selectedWidget) {
-                    rotationStartRef.current = selectedWidget.rotation || [0, 0, 0];
-                }
-            }
-        };
-
-        const handleMouseMove = (event: MouseEvent) => {
-            if (!rightClickSelected || !rightSelect) return;
-            const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
-                zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
-            );
-            if (!selectedZone) return;
-
-            const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
-            if (!selectedWidget) return;
-
-            const rect = gl.domElement.getBoundingClientRect();
-            mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
-            mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
-
-            raycaster.setFromCamera(mouse, camera);
-
-            if (rightSelect === "Horizontal Move" && raycaster.ray.intersectPlane(plane.current, planeIntersect.current)) {
-                const newPosition: [number, number, number] = [
-                    planeIntersect.current.x,
-                    selectedWidget.position[1],
-                    planeIntersect.current.z
-                ];
-                updateWidgetPosition(selectedZone, rightClickSelected, newPosition);
-                console.log('Horizontal Move - Final Position:', newPosition);
-            }
-
-            if (rightSelect === "Vertical Move") {
-                if (raycaster.ray.intersectPlane(verticalPlane.current, planeIntersect.current)) {
-                    updateWidgetPosition(selectedZone, rightClickSelected, [
-                        selectedWidget.position[0],
-                        planeIntersect.current.y,
-                        selectedWidget.position[2]
-                    ]);
-                }
-            }
-
-            if (rightSelect === "RotateX") {
-                const deltaX = event.clientX - mouseStartRef.current.x;
-                const rotationSpeed = 0.03;
-                const newRotation: [number, number, number] = [
-                    rotationStartRef.current[0] + deltaX * rotationSpeed,
-                    rotationStartRef.current[1],
-                    rotationStartRef.current[2]
-                ];
-                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-            }
-
-            if (rightSelect === "RotateY") {
-                const deltaY = event.clientY - mouseStartRef.current.y;
-                const rotationSpeed = 0.03;
-                const newRotation: [number, number, number] = [
-                    rotationStartRef.current[0],
-                    rotationStartRef.current[1] + deltaY * rotationSpeed,
-                    rotationStartRef.current[2]
-                ];
-                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-            }
-            if (rightSelect === "RotateZ") {
-                const deltaX = event.movementX;
-                const rotationSpeed = 0.03;
-                const currentRotation = selectedWidget.rotation || [0, 0, 0];
-                const newRotation: [number, number, number] = [
-                    currentRotation[0],
-                    currentRotation[1],
-                    currentRotation[2] + deltaX * rotationSpeed
-                ];
-                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-            }
-
-        };
-
-        const handleMouseUp = () => {
-            if (rightClickSelected && (
-                rightSelect === "Horizontal Move" ||
-                rightSelect === "Vertical Move" ||
-                rightSelect === "RotateX" ||
-                rightSelect === "RotateY" || rightSelect === "RotateZ"
-            )) {
-                setTimeout(() => {
-                    setRightClickSelected(null);
-                    setRightSelect(null);
-                }, 50);
-            }
-        };
-
-        window.addEventListener("mousedown", handleMouseDown);
-        window.addEventListener("mousemove", handleMouseMove);
-        window.addEventListener("mouseup", handleMouseUp);
-
-        return () => {
-            window.removeEventListener("mousedown", handleMouseDown);
-            window.removeEventListener("mousemove", handleMouseMove);
-            window.removeEventListener("mouseup", handleMouseUp);
-        };
-    }, [rightClickSelected, rightSelect, zoneWidgetData, gl]);
-
-    return (
-        <>
-            {activeZoneWidgets.map(({ id, type, position, rotation = [0, 0, 0] }: WidgetData) => {
-                const handleRightClick = (event: React.MouseEvent, id: string) => {
-                    event.preventDefault();
-                    const canvasElement = document.getElementById("real-time-vis-canvas");
-                    if (!canvasElement) throw new Error("Canvas element not found");
-                    const canvasRect = canvasElement.getBoundingClientRect();
-                    const relativeX = event.clientX - canvasRect.left;
-                    const relativeY = event.clientY - canvasRect.top;
-                    setRightClickSelected(id);
-                    setTop(relativeY);
-                    setLeft(relativeX);
-                };
-
-                switch (type) {
-                    case "ui-Widget 1":
-                        return (
-                            <ProductionCapacity
-                                key={id}
-                                id={id}
-                                type={type}
-                                position={position}
-                                rotation={rotation}
-                                onContextMenu={(e) => handleRightClick(e, id)}
-                            />
-                        );
-                    case "ui-Widget 2":
-                        return (
-                            <ReturnOfInvestment
-                                key={id}
-                                id={id}
-                                type={type}
-                                position={position}
-                                // rotation={rotation}
-                                onContextMenu={(e) => handleRightClick(e, id)}
-                            />
-                        );
-                    case "ui-Widget 3":
-                        return (
-                            <StateWorking
-                                key={id}
-                                id={id}
-                                type={type}
-                                position={position}
-                                // rotation={rotation}
-                                onContextMenu={(e) => handleRightClick(e, id)}
-                            />
-                        );
-                    case "ui-Widget 4":
-                        return (
-                            <Throughput
-                                key={id}
-                                id={id}
-                                type={type}
-                                position={position}
-                                // rotation={rotation}
-                                onContextMenu={(e) => handleRightClick(e, id)}
-                            />
-                        );
-                    default:
-                        return null;
-                }
-            })}
-        </>
-    );
-}
\ No newline at end of file
+      )}
+    </>
+  );
+}
diff --git a/app/src/components/ui/componets/RealTimeVisulization.tsx b/app/src/components/ui/componets/RealTimeVisulization.tsx
index acbbf68..4b8d7c8 100644
--- a/app/src/components/ui/componets/RealTimeVisulization.tsx
+++ b/app/src/components/ui/componets/RealTimeVisulization.tsx
@@ -7,7 +7,6 @@ import DisplayZone from "./DisplayZone";
 import Scene from "../../../modules/scene/scene";
 import useModuleStore from "../../../store/useModuleStore";
 
-
 import { useDroppedObjectsStore } from "../../../store/useDroppedObjectsStore";
 import {
   useAsset3dWidget,
@@ -24,7 +23,11 @@ import RenderOverlay from "../../templates/Overlay";
 import ConfirmationPopup from "../../layout/confirmationPopup/ConfirmationPopup";
 import DroppedObjects from "./DroppedFloatingWidgets";
 import EditWidgetOption from "../menu/EditWidgetOption";
-import { useRightClickSelected } from "../../../store/useZone3DWidgetStore";
+import {
+  useRightClickSelected,
+  useRightSelected,
+  useEditWidgetOptionsStore,
+} from "../../../store/useZone3DWidgetStore";
 
 type Side = "top" | "bottom" | "left" | "right";
 
@@ -57,9 +60,9 @@ const RealTimeVisulization: React.FC = () => {
   const [droppedObjects, setDroppedObjects] = useState<any[]>([]);
   const [zonesData, setZonesData] = useState<FormattedZoneData>({});
   const { selectedZone, setSelectedZone } = useSelectedZoneStore();
-
-
-  const { rightClickSelected, setRightClickSelected } = useRightClickSelected()
+  
+  const { editWidgetOptions, setEditWidgetOptions } = useEditWidgetOptionsStore();
+  const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
   const [openConfirmationPopup, setOpenConfirmationPopup] = useState(false);
 
   const [floatingWidgets, setFloatingWidgets] = useState<
@@ -68,6 +71,7 @@ const RealTimeVisulization: React.FC = () => {
   const { widgetSelect, setWidgetSelect } = useAsset3dWidget();
   const { widgetSubOption, setWidgetSubOption } = useWidgetSubOption();
   const { visualizationSocket } = useSocketStore();
+  const { setRightSelect } = useRightSelected();
 
   useEffect(() => {
     async function GetZoneData() {
@@ -96,7 +100,7 @@ const RealTimeVisulization: React.FC = () => {
           {}
         );
         setZonesData(formattedData);
-      } catch (error) { }
+      } catch (error) {}
     }
 
     GetZoneData();
@@ -142,8 +146,8 @@ const RealTimeVisulization: React.FC = () => {
       const relativeX = event.clientX - canvasRect.left;
       const relativeY = event.clientY - canvasRect.top;
 
-      const newPosition = determinePosition(canvasRect, relativeX, relativeY)
-      console.log('newPosition: ', newPosition);
+      const newPosition = determinePosition(canvasRect, relativeX, relativeY);
+      console.log("newPosition: ", newPosition);
       const newObject = {
         ...droppedData,
         id: generateUniqueId(),
@@ -162,12 +166,12 @@ const RealTimeVisulization: React.FC = () => {
       let addFloatingWidget = {
         organization: organization,
         widget: newObject,
-        zoneId: selectedZone.zoneId
-      }
-      console.log('newObject: ', newObject);
+        zoneId: selectedZone.zoneId,
+      };
+      console.log("newObject: ", newObject);
 
       if (visualizationSocket) {
-        visualizationSocket.emit("v2:viz-float:add", addFloatingWidget)
+        visualizationSocket.emit("v2:viz-float:add", addFloatingWidget);
       }
 
       // let response = await addingFloatingWidgets(
@@ -194,9 +198,30 @@ const RealTimeVisulization: React.FC = () => {
           ],
         },
       }));
-    } catch (error) { }
+    } catch (error) {}
   };
 
+  // Add this useEffect hook to your component
+  useEffect(() => {
+    const handleClickOutside = (event: MouseEvent) => {
+      const editWidgetOptions = document.querySelector(
+        ".editWidgetOptions-wrapper"
+      );
+      if (
+        editWidgetOptions &&
+        !editWidgetOptions.contains(event.target as Node)
+      ) {
+        setRightClickSelected(null);
+        setRightSelect(null);
+      }
+    };
+
+    document.addEventListener("mousedown", handleClickOutside);
+    return () => {
+      document.removeEventListener("mousedown", handleClickOutside);
+    };
+  }, [setRightClickSelected]);
+
   return (
     <div
       ref={containerRef}
@@ -230,12 +255,27 @@ const RealTimeVisulization: React.FC = () => {
       >
         <Scene />
       </div>
-      {activeModule === "visualization" && selectedZone.zoneName !== "" && <DroppedObjects />}
+      {activeModule === "visualization" && selectedZone.zoneName !== "" && (
+        <DroppedObjects />
+      )}
       {activeModule === "visualization" && <SocketRealTimeViz />}
 
-      {activeModule === "visualization" && rightClickSelected && <EditWidgetOption
-        options={["Duplicate", "Vertical Move", "Horizontal Move", "RotateX", "RotateY", "RotateZ", "Delete"]}
-      />}
+      {activeModule === "visualization" &&
+        editWidgetOptions &&
+        rightClickSelected && (
+          <EditWidgetOption
+            setWidgetSelect={setWidgetSelect}
+            options={[
+              "Duplicate",
+              "Vertical Move",
+              "Horizontal Move",
+              "RotateX",
+              "RotateY",
+              "RotateZ",
+              "Delete",
+            ]}
+          />
+        )}
 
       {activeModule === "visualization" && (
         <>
diff --git a/app/src/components/ui/menu/EditWidgetOption.tsx b/app/src/components/ui/menu/EditWidgetOption.tsx
index 3978430..f1d6263 100644
--- a/app/src/components/ui/menu/EditWidgetOption.tsx
+++ b/app/src/components/ui/menu/EditWidgetOption.tsx
@@ -1,34 +1,51 @@
 import React, { useEffect } from "react";
-import { useLeftData, useRightSelected, useTopData } from "../../../store/useZone3DWidgetStore";
+import {
+  useEditWidgetOptionsStore,
+  useLeftData,
+  useRightClickSelected,
+  useRightSelected,
+  useTopData,
+} from "../../../store/useZone3DWidgetStore";
 
 interface EditWidgetOptionProps {
+  setWidgetSelect: any;
   options: string[];
 }
 
-const EditWidgetOption: React.FC<EditWidgetOptionProps> = ({ options }) => {
-  const { top, setTop } = useTopData()
-  const { left, setLeft } = useLeftData()
-  const { rightSelect, setRightSelect } = useRightSelected()
+const EditWidgetOption: React.FC<EditWidgetOptionProps> = ({
+  setWidgetSelect,
+  options,
+}) => {
+  const { top, setTop } = useTopData();
+  const { left, setLeft } = useLeftData();
+  const { rightSelect, setRightSelect } = useRightSelected();
+  const { setEditWidgetOptions } = useEditWidgetOptionsStore();
 
   useEffect(() => {
-
-    console.log('left: ', left);
-    console.log('top: ', top);
-  }, [top, left])
+    console.log("left: ", left);
+    console.log("top: ", top);
+  }, [top, left]);
 
   return (
-    <div className="editWidgetOptions-wrapper"
+    <div
+      className="editWidgetOptions-wrapper"
       style={{
         position: "absolute",
         top: `${top}px`,
         left: `${left}px`,
         zIndex: 10000,
-        
       }}
     >
       <div className="editWidgetOptions">
         {options.map((option, index) => (
-          <div className="option" key={index} onClick={(e) => setRightSelect(option)}>
+          <div
+            className="option"
+            key={index}
+            onClick={(e) => {
+              setRightSelect(option);
+              setEditWidgetOptions(false);
+            }}
+          >
             {option}
           </div>
         ))}
diff --git a/app/src/store/useZone3DWidgetStore.ts b/app/src/store/useZone3DWidgetStore.ts
index 9700878..425674f 100644
--- a/app/src/store/useZone3DWidgetStore.ts
+++ b/app/src/store/useZone3DWidgetStore.ts
@@ -96,3 +96,14 @@ export const useRightSelected = create<RightSelectStore>((set) => ({
   rightSelect: null, // Default state is null
   setRightSelect: (x) => set({ rightSelect: x }),
 }));
+
+
+interface EditWidgetOptionsStore {
+  editWidgetOptions: boolean;
+  setEditWidgetOptions: (value: boolean) => void;
+}
+
+export const useEditWidgetOptionsStore = create<EditWidgetOptionsStore>((set) => ({
+  editWidgetOptions: false,  // Initial state
+  setEditWidgetOptions: (value: boolean) => set({ editWidgetOptions: value }),
+}));
diff --git a/app/src/styles/pages/realTimeViz.scss b/app/src/styles/pages/realTimeViz.scss
index a79823c..74ef66e 100644
--- a/app/src/styles/pages/realTimeViz.scss
+++ b/app/src/styles/pages/realTimeViz.scss
@@ -719,9 +719,9 @@
 
 .editWidgetOptions {
   position: absolute;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
+  // top: 50%;
+  // left: 50%;
+  // transform: translate(-50%, -50%);
   background-color: var(--background-color);
   z-index: 3;
   display: flex;
@@ -729,6 +729,7 @@
   border-radius: 6px;
   overflow: hidden;
 
+min-width: 150px;
   .option {
     padding: 8px 10px;
     color: var(--text-color);

From c5ca0da1c54e2cf8429f95f6e7b1d8bb7b8cffb1 Mon Sep 17 00:00:00 2001
From: SreeNath14 <153710861+SreeNath14@users.noreply.github.com>
Date: Fri, 4 Apr 2025 18:02:53 +0530
Subject: [PATCH 07/17] "updated overall animation logics"

---
 app/src/assets/gltf-glb/box.glb               | Bin 0 -> 496872 bytes
 .../ui/simulation/simulationPlayer.tsx        |  19 +-
 .../simulation/process/animation.Worker.js    | 916 ------------------
 .../simulation/process/processAnimator.tsx    | 751 +++-----------
 .../process/processObjectRender.tsx           | 114 +++
 app/src/modules/simulation/process/types.ts   |  79 ++
 .../assest/assets/getCategoryAsset.ts         |   4 +-
 app/src/store/usePlayButtonStore.ts           |  24 +
 8 files changed, 367 insertions(+), 1540 deletions(-)
 create mode 100644 app/src/assets/gltf-glb/box.glb
 delete mode 100644 app/src/modules/simulation/process/animation.Worker.js
 create mode 100644 app/src/modules/simulation/process/processObjectRender.tsx
 create mode 100644 app/src/modules/simulation/process/types.ts

diff --git a/app/src/assets/gltf-glb/box.glb b/app/src/assets/gltf-glb/box.glb
new file mode 100644
index 0000000000000000000000000000000000000000..92ef9d8eac2eb8cee69482aa8ee09b18d1cac0e0
GIT binary patch
literal 496872
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%0DGA7E9hM{M*dWg-ciW+}cEEN=s08)w-zL9ym=
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

literal 0
HcmV?d00001

diff --git a/app/src/components/ui/simulation/simulationPlayer.tsx b/app/src/components/ui/simulation/simulationPlayer.tsx
index 85f2c54..31b7d25 100644
--- a/app/src/components/ui/simulation/simulationPlayer.tsx
+++ b/app/src/components/ui/simulation/simulationPlayer.tsx
@@ -1,19 +1,28 @@
 import React, { useState, useRef, useEffect } from "react";
 import { ExitIcon, PlayStopIcon, ResetIcon } from "../../icons/SimulationIcons";
-import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
+import {
+  useAnimationPlaySpeed,
+  usePauseButtonStore,
+  usePlayButtonStore,
+  useResetButtonStore,
+} from "../../../store/usePlayButtonStore";
 
 const SimulationPlayer: React.FC = () => {
-  const [speed, setSpeed] = useState<number>(1);
+  const { speed, setSpeed } = useAnimationPlaySpeed();
   const [playSimulation, setPlaySimulation] = useState(false);
   const { setIsPlaying } = usePlayButtonStore();
   const sliderRef = useRef<HTMLDivElement>(null);
   const isDragging = useRef(false);
+  const { isPaused, setIsPaused } = usePauseButtonStore();
+  const { isReset, setReset } = useResetButtonStore();
 
   // Button functions
   const handleReset = () => {
+    setReset(true);
     setSpeed(1);
   };
   const handlePlayStop = () => {
+    setIsPaused(!isPaused);
     setPlaySimulation(!playSimulation);
   };
   const handleExit = () => {
@@ -27,7 +36,7 @@ const SimulationPlayer: React.FC = () => {
   };
 
   const calculateHandlePosition = () => {
-    return ((speed - 0.5) / (50 - 0.5)) * 100;
+    return ((speed - 0.5) / (8 - 0.5)) * 100;
   };
 
   const handleMouseDown = () => {
@@ -115,7 +124,7 @@ const SimulationPlayer: React.FC = () => {
               <input
                 type="range"
                 min="0.5"
-                max="50"
+                max="8"
                 step="0.1"
                 value={speed}
                 onChange={handleSpeedChange}
@@ -123,7 +132,7 @@ const SimulationPlayer: React.FC = () => {
               />
             </div>
           </div>
-          <div className="max-value">50x</div>
+          <div className="max-value">8x</div>
         </div>
       </div>
     </div>
diff --git a/app/src/modules/simulation/process/animation.Worker.js b/app/src/modules/simulation/process/animation.Worker.js
deleted file mode 100644
index faa6587..0000000
--- a/app/src/modules/simulation/process/animation.Worker.js
+++ /dev/null
@@ -1,916 +0,0 @@
-// // animation-worker.js
-// // This web worker handles animation calculations off the main thread
-
-// /* eslint-disable no-restricted-globals */
-// // The above disables the ESLint rule for this file since 'self' is valid in web workers
-
-// // Store process data, animation states, and objects
-// let processes = [];
-// let animationStates = {};
-// let lastTimestamp = 0;
-
-// // Message handler for communication with main thread
-// self.onmessage = function (event) {
-//   const { type, data } = event.data;
-
-//   switch (type) {
-//     case "initialize":
-//       processes = data.processes;
-//       initializeAnimationStates();
-//       break;
-
-//     case "update":
-//       const { timestamp, isPlaying } = data;
-//       if (isPlaying) {
-//         const delta = (timestamp - lastTimestamp) / 1000; // Convert to seconds
-//         updateAnimations(delta, timestamp);
-//       }
-//       lastTimestamp = timestamp;
-//       break;
-
-//     case "reset":
-//       resetAnimations();
-//       break;
-
-//     case "togglePlay":
-//       // If resuming from pause, recalculate the time delta
-//       lastTimestamp = data.timestamp;
-//       break;
-//   }
-// };
-
-// // Initialize animation states for all processes
-// function initializeAnimationStates() {
-//   animationStates = {};
-
-//   processes.forEach((process) => {
-//     animationStates[process.id] = {
-//       spawnedObjects: {},
-//       nextSpawnTime: 0,
-//       objectIdCounter: 0,
-//     };
-//   });
-
-//   // Send initial states back to main thread
-//   self.postMessage({
-//     type: "statesInitialized",
-//     data: { animationStates },
-//   });
-// }
-
-// // Reset all animations
-// function resetAnimations() {
-//   initializeAnimationStates();
-// }
-
-// // Find spawn point in a process
-// function findSpawnPoint(process) {
-//   for (const path of process.paths || []) {
-//     for (const point of path.points || []) {
-//       const spawnAction = point.actions?.find(
-//         (a) => a.isUsed && a.type === "Spawn"
-//       );
-//       if (spawnAction) {
-//         return { point, path };
-//       }
-//     }
-//   }
-//   return null;
-// }
-
-// // Create a new spawned object with proper initial position
-// function createSpawnedObject(process, spawnPoint, currentTime, materialType) {
-//   // Extract spawn position from the actual spawn point
-//   const position = spawnPoint.point.position
-//     ? [...spawnPoint.point.position]
-//     : [0, 0, 0];
-
-//   // Get the path position and add it to the spawn point position
-//   const pathPosition = spawnPoint.path.pathPosition || [0, 0, 0];
-//   const absolutePosition = [
-//     position[0] + pathPosition[0],
-//     position[1] + pathPosition[1],
-//     position[2] + pathPosition[2],
-//   ];
-
-//   return {
-//     id: `obj-${process.id}-${animationStates[process.id].objectIdCounter}`,
-//     position: absolutePosition,
-//     state: {
-//       currentIndex: 0,
-//       progress: 0,
-//       isAnimating: true,
-//       speed: process.speed || 1,
-//       isDelaying: false,
-//       delayStartTime: 0,
-//       currentDelayDuration: 0,
-//       delayComplete: false,
-//       currentPathIndex: 0,
-//       // Store the spawn point index to start animation from correct path point
-//       spawnPointIndex: getPointIndexInProcess(process, spawnPoint.point),
-//     },
-//     visible: true,
-//     materialType: materialType || "Default",
-//     spawnTime: currentTime,
-//   };
-// }
-
-// // Get the index of a point within the process animation path
-// function getPointIndexInProcess(process, point) {
-//   if (!process.paths) return 0;
-
-//   let cumulativePoints = 0;
-//   for (const path of process.paths) {
-//     for (let i = 0; i < (path.points?.length || 0); i++) {
-//       if (path.points[i].uuid === point.uuid) {
-//         return cumulativePoints + i;
-//       }
-//     }
-//     cumulativePoints += path.points?.length || 0;
-//   }
-
-//   return 0;
-// }
-
-// // Get point data for current animation index
-// function getPointDataForAnimationIndex(process, index) {
-//   if (!process.paths) return null;
-
-//   let cumulativePoints = 0;
-//   for (const path of process.paths) {
-//     const pointCount = path.points?.length || 0;
-
-//     if (index < cumulativePoints + pointCount) {
-//       const pointIndex = index - cumulativePoints;
-//       return path.points?.[pointIndex] || null;
-//     }
-
-//     cumulativePoints += pointCount;
-//   }
-
-//   return null;
-// }
-
-// // Convert process paths to Vector3 format
-// function getProcessPath(process) {
-//   return process.animationPath?.map((p) => ({ x: p.x, y: p.y, z: p.z })) || [];
-// }
-
-// // Handle material swap for an object
-// function handleMaterialSwap(processId, objectId, materialType) {
-//   const processState = animationStates[processId];
-//   if (!processState || !processState.spawnedObjects[objectId]) return;
-
-//   processState.spawnedObjects[objectId].materialType = materialType;
-
-//   // Notify main thread about material change
-//   self.postMessage({
-//     type: "materialChanged",
-//     data: {
-//       processId,
-//       objectId,
-//       materialType,
-//     },
-//   });
-// }
-
-// // Handle point actions for an object
-// function handlePointActions(processId, objectId, actions = [], currentTime) {
-//   let shouldStopAnimation = false;
-//   const processState = animationStates[processId];
-
-//   if (!processState || !processState.spawnedObjects[objectId]) return false;
-
-//   const objectState = processState.spawnedObjects[objectId];
-
-//   actions.forEach((action) => {
-//     if (!action.isUsed) return;
-
-//     switch (action.type) {
-//       case "Delay":
-//         if (objectState.state.isDelaying) return;
-
-//         const delayDuration =
-//           typeof action.delay === "number"
-//             ? action.delay
-//             : parseFloat(action.delay || "0");
-
-//         if (delayDuration > 0) {
-//           objectState.state.isDelaying = true;
-//           objectState.state.delayStartTime = currentTime;
-//           objectState.state.currentDelayDuration = delayDuration;
-//           objectState.state.delayComplete = false;
-//           shouldStopAnimation = true;
-//         }
-//         break;
-
-//       case "Despawn":
-//         delete processState.spawnedObjects[objectId];
-//         shouldStopAnimation = true;
-
-//         // Notify main thread about despawn
-//         self.postMessage({
-//           type: "objectDespawned",
-//           data: {
-//             processId,
-//             objectId,
-//           },
-//         });
-//         break;
-
-//       case "Swap":
-//         if (action.material) {
-//           handleMaterialSwap(processId, objectId, action.material);
-//         }
-//         break;
-
-//       default:
-//         break;
-//     }
-//   });
-
-//   return shouldStopAnimation;
-// }
-
-// // Check if point has non-inherit actions
-// function hasNonInheritActions(actions = []) {
-//   return actions.some((action) => action.isUsed && action.type !== "Inherit");
-// }
-
-// // Calculate vector lerp (linear interpolation)
-// function lerpVectors(v1, v2, alpha) {
-//   return {
-//     x: v1.x + (v2.x - v1.x) * alpha,
-//     y: v1.y + (v2.y - v1.y) * alpha,
-//     z: v1.z + (v2.z - v1.z) * alpha,
-//   };
-// }
-
-// // Calculate vector distance
-// function distanceBetweenVectors(v1, v2) {
-//   const dx = v2.x - v1.x;
-//   const dy = v2.y - v1.y;
-//   const dz = v2.z - v1.z;
-//   return Math.sqrt(dx * dx + dy * dy + dz * dz);
-// }
-
-// // Process spawn logic
-// function processSpawns(currentTime) {
-//   processes.forEach((process) => {
-//     const processState = animationStates[process.id];
-//     if (!processState) return;
-
-//     const spawnPointData = findSpawnPoint(process);
-//     if (!spawnPointData || !spawnPointData.point.actions) return;
-
-//     const spawnAction = spawnPointData.point.actions.find(
-//       (a) => a.isUsed && a.type === "Spawn"
-//     );
-//     if (!spawnAction) return;
-
-//     const spawnInterval =
-//       typeof spawnAction.spawnInterval === "number"
-//         ? spawnAction.spawnInterval
-//         : parseFloat(spawnAction.spawnInterval || "0");
-
-//     if (currentTime >= processState.nextSpawnTime) {
-//       const newObject = createSpawnedObject(
-//         process,
-//         spawnPointData,
-//         currentTime,
-//         spawnAction.material || "Default"
-//       );
-
-//       processState.spawnedObjects[newObject.id] = newObject;
-//       processState.objectIdCounter++;
-//       processState.nextSpawnTime = currentTime + spawnInterval;
-
-//       // Notify main thread about new object
-//       self.postMessage({
-//         type: "objectSpawned",
-//         data: {
-//           processId: process.id,
-//           object: newObject,
-//         },
-//       });
-//     }
-//   });
-// }
-
-// // Update all animations
-// function updateAnimations(delta, currentTime) {
-//   // First handle spawning of new objects
-//   processSpawns(currentTime);
-
-//   // Then animate existing objects
-//   processes.forEach((process) => {
-//     const processState = animationStates[process.id];
-//     if (!processState) return;
-
-//     const path = getProcessPath(process);
-//     if (path.length < 2) return;
-
-//     const updatedObjects = {};
-//     let hasChanges = false;
-
-//     Object.entries(processState.spawnedObjects).forEach(([objectId, obj]) => {
-//       if (!obj.visible || !obj.state.isAnimating) return;
-
-//       const stateRef = obj.state;
-
-//       // Use the spawnPointIndex as starting point if it's the initial movement
-//       if (stateRef.currentIndex === 0 && stateRef.progress === 0) {
-//         stateRef.currentIndex = stateRef.spawnPointIndex || 0;
-//       }
-
-//       // Get current point data
-//       const currentPointData = getPointDataForAnimationIndex(
-//         process,
-//         stateRef.currentIndex
-//       );
-
-//       // Execute actions when arriving at a new point
-//       if (stateRef.progress === 0 && currentPointData?.actions) {
-//         const shouldStop = handlePointActions(
-//           process.id,
-//           objectId,
-//           currentPointData.actions,
-//           currentTime
-//         );
-//         if (shouldStop) return;
-//       }
-
-//       // Handle delays
-//       if (stateRef.isDelaying) {
-//         if (
-//           currentTime - stateRef.delayStartTime >=
-//           stateRef.currentDelayDuration
-//         ) {
-//           stateRef.isDelaying = false;
-//           stateRef.delayComplete = true;
-//         } else {
-//           updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
-//           return; // Keep waiting
-//         }
-//       }
-
-//       const nextPointIdx = stateRef.currentIndex + 1;
-//       const isLastPoint = nextPointIdx >= path.length;
-
-//       if (isLastPoint) {
-//         if (currentPointData?.actions) {
-//           const shouldStop = !hasNonInheritActions(currentPointData.actions);
-//           if (shouldStop) {
-//             // Reached the end of path with no more actions
-//             delete processState.spawnedObjects[objectId];
-
-//             // Notify main thread to remove the object
-//             self.postMessage({
-//               type: "objectCompleted",
-//               data: {
-//                 processId: process.id,
-//                 objectId,
-//               },
-//             });
-//             return;
-//           }
-//         }
-//       }
-
-//       if (!isLastPoint) {
-//         const currentPos = path[stateRef.currentIndex];
-//         const nextPos = path[nextPointIdx];
-//         const distance = distanceBetweenVectors(currentPos, nextPos);
-//         const movement = stateRef.speed * delta;
-
-//         // Update progress based on distance and speed
-//         const oldProgress = stateRef.progress;
-//         stateRef.progress += movement / distance;
-
-//         if (stateRef.progress >= 1) {
-//           // Reached next point
-//           stateRef.currentIndex = nextPointIdx;
-//           stateRef.progress = 0;
-//           stateRef.delayComplete = false;
-//           obj.position = [nextPos.x, nextPos.y, nextPos.z];
-//         } else {
-//           // Interpolate position
-//           const lerpedPos = lerpVectors(currentPos, nextPos, stateRef.progress);
-//           obj.position = [lerpedPos.x, lerpedPos.y, lerpedPos.z];
-//         }
-
-//         // Only send updates when there's meaningful movement
-//         if (Math.abs(oldProgress - stateRef.progress) > 0.01) {
-//           hasChanges = true;
-//         }
-//       }
-
-//       updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
-//     });
-
-//     // Update animation state with modified objects
-//     if (Object.keys(updatedObjects).length > 0) {
-//       processState.spawnedObjects = {
-//         ...processState.spawnedObjects,
-//         ...updatedObjects,
-//       };
-
-//       // Only send position updates when there are meaningful changes
-//       if (hasChanges) {
-//         self.postMessage({
-//           type: "positionsUpdated",
-//           data: {
-//             processId: process.id,
-//             objects: updatedObjects,
-//           },
-//         });
-//       }
-//     }
-//   });
-// }
-
-// animation-worker.js
-// This web worker handles animation calculations off the main thread
-
-/* eslint-disable no-restricted-globals */
-// The above disables the ESLint rule for this file since 'self' is valid in web workers
-
-// Store process data, animation states, and objects
-let processes = [];
-let animationStates = {};
-let lastTimestamp = 0;
-let debugMode = true;
-
-// Logger function for debugging
-function log(...args) {
-  if (debugMode) {
-    self.postMessage({
-      type: "debug",
-      data: { message: args.join(' ') }
-    });
-  }
-}
-
-// Message handler for communication with main thread
-self.onmessage = function (event) {
-  const { type, data } = event.data;
-  log(`Worker received message: ${type}`);
-
-  switch (type) {
-    case "initialize":
-      processes = data.processes;
-      log(`Initialized with ${processes.length} processes`);
-      initializeAnimationStates();
-      break;
-
-    case "update":
-      const { timestamp, isPlaying } = data;
-      if (isPlaying) {
-        const delta = lastTimestamp === 0 ? 0.016 : (timestamp - lastTimestamp) / 1000; // Convert to seconds
-        updateAnimations(delta, timestamp);
-      }
-      lastTimestamp = timestamp;
-      break;
-
-    case "reset":
-      log("Resetting animations");
-      resetAnimations();
-      break;
-
-    case "togglePlay":
-      // If resuming from pause, recalculate the time delta
-      log(`Toggle play: ${data.isPlaying}`);
-      lastTimestamp = data.timestamp;
-      break;
-      
-    case "setDebug":
-      debugMode = data.enabled;
-      log(`Debug mode: ${debugMode}`);
-      break;
-  }
-};
-
-// Initialize animation states for all processes
-function initializeAnimationStates() {
-  animationStates = {};
-
-  processes.forEach((process) => {
-    if (!process || !process.id) {
-      log("Invalid process found:", process);
-      return;
-    }
-    
-    animationStates[process.id] = {
-      spawnedObjects: {},
-      nextSpawnTime: 0,
-      objectIdCounter: 0,
-    };
-  });
-
-  // Send initial states back to main thread
-  self.postMessage({
-    type: "statesInitialized",
-    data: { animationStates },
-  });
-}
-
-// Reset all animations
-function resetAnimations() {
-  initializeAnimationStates();
-}
-
-// Find spawn point in a process
-function findSpawnPoint(process) {
-  if (!process || !process.paths) {
-    log(`No paths found for process ${process?.id}`);
-    return null;
-  }
-  
-  for (const path of process.paths) {
-    if (!path || !path.points) continue;
-    
-    for (const point of path.points) {
-      if (!point || !point.actions) continue;
-      
-      const spawnAction = point.actions.find(
-        (a) => a && a.isUsed && a.type === "Spawn"
-      );
-      if (spawnAction) {
-        return { point, path };
-      }
-    }
-  }
-  log(`No spawn points found for process ${process.id}`);
-  return null;
-}
-
-// Create a new spawned object with proper initial position
-function createSpawnedObject(process, spawnPoint, currentTime, materialType) {
-  // Extract spawn position from the actual spawn point
-  const position = spawnPoint.point.position
-    ? [...spawnPoint.point.position]
-    : [0, 0, 0];
-
-  // Get the path position and add it to the spawn point position
-  const pathPosition = spawnPoint.path.pathPosition || [0, 0, 0];
-  const absolutePosition = [
-    position[0] + pathPosition[0],
-    position[1] + pathPosition[1],
-    position[2] + pathPosition[2],
-  ];
-
-  return {
-    id: `obj-${process.id}-${animationStates[process.id].objectIdCounter}`,
-    position: absolutePosition,
-    state: {
-      currentIndex: 0,
-      progress: 0,
-      isAnimating: true,
-      speed: process.speed || 1,
-      isDelaying: false,
-      delayStartTime: 0,
-      currentDelayDuration: 0,
-      delayComplete: false,
-      currentPathIndex: 0,
-      // Store the spawn point index to start animation from correct path point
-      spawnPointIndex: getPointIndexInProcess(process, spawnPoint.point),
-    },
-    visible: true,
-    materialType: materialType || "Default",
-    spawnTime: currentTime,
-  };
-}
-
-// Get the index of a point within the process animation path
-function getPointIndexInProcess(process, point) {
-  if (!process.paths) return 0;
-
-  let cumulativePoints = 0;
-  for (const path of process.paths) {
-    for (let i = 0; i < (path.points?.length || 0); i++) {
-      if (path.points[i].uuid === point.uuid) {
-        return cumulativePoints + i;
-      }
-    }
-    cumulativePoints += path.points?.length || 0;
-  }
-
-  return 0;
-}
-
-// Get point data for current animation index
-function getPointDataForAnimationIndex(process, index) {
-  if (!process.paths) return null;
-
-  let cumulativePoints = 0;
-  for (const path of process.paths) {
-    const pointCount = path.points?.length || 0;
-
-    if (index < cumulativePoints + pointCount) {
-      const pointIndex = index - cumulativePoints;
-      return path.points?.[pointIndex] || null;
-    }
-
-    cumulativePoints += pointCount;
-  }
-
-  return null;
-}
-
-// Convert process paths to Vector3 format
-function getProcessPath(process) {
-  if (!process.animationPath) {
-    log(`No animation path for process ${process.id}`);
-    return [];
-  }
-  return process.animationPath.map((p) => ({ x: p.x, y: p.y, z: p.z })) || [];
-}
-
-// Handle material swap for an object
-function handleMaterialSwap(processId, objectId, materialType) {
-  const processState = animationStates[processId];
-  if (!processState || !processState.spawnedObjects[objectId]) return;
-
-  processState.spawnedObjects[objectId].materialType = materialType;
-
-  // Notify main thread about material change
-  self.postMessage({
-    type: "materialChanged",
-    data: {
-      processId,
-      objectId,
-      materialType,
-    },
-  });
-}
-
-// Handle point actions for an object
-function handlePointActions(processId, objectId, actions = [], currentTime) {
-  let shouldStopAnimation = false;
-  const processState = animationStates[processId];
-
-  if (!processState || !processState.spawnedObjects[objectId]) return false;
-
-  const objectState = processState.spawnedObjects[objectId];
-
-  actions.forEach((action) => {
-    if (!action || !action.isUsed) return;
-
-    switch (action.type) {
-      case "Delay":
-        if (objectState.state.isDelaying) return;
-
-        const delayDuration =
-          typeof action.delay === "number"
-            ? action.delay
-            : parseFloat(action.delay || "0");
-
-        if (delayDuration > 0) {
-          objectState.state.isDelaying = true;
-          objectState.state.delayStartTime = currentTime;
-          objectState.state.currentDelayDuration = delayDuration;
-          objectState.state.delayComplete = false;
-          shouldStopAnimation = true;
-        }
-        break;
-
-      case "Despawn":
-        delete processState.spawnedObjects[objectId];
-        shouldStopAnimation = true;
-
-        // Notify main thread about despawn
-        self.postMessage({
-          type: "objectDespawned",
-          data: {
-            processId,
-            objectId,
-          },
-        });
-        break;
-
-      case "Swap":
-        if (action.material) {
-          handleMaterialSwap(processId, objectId, action.material);
-        }
-        break;
-
-      default:
-        break;
-    }
-  });
-
-  return shouldStopAnimation;
-}
-
-// Check if point has non-inherit actions
-function hasNonInheritActions(actions = []) {
-  return actions.some((action) => action && action.isUsed && action.type !== "Inherit");
-}
-
-// Calculate vector lerp (linear interpolation)
-function lerpVectors(v1, v2, alpha) {
-  return {
-    x: v1.x + (v2.x - v1.x) * alpha,
-    y: v1.y + (v2.y - v1.y) * alpha,
-    z: v1.z + (v2.z - v1.z) * alpha,
-  };
-}
-
-// Calculate vector distance
-function distanceBetweenVectors(v1, v2) {
-  const dx = v2.x - v1.x;
-  const dy = v2.y - v1.y;
-  const dz = v2.z - v1.z;
-  return Math.sqrt(dx * dx + dy * dy + dz * dz);
-}
-
-// Process spawn logic
-function processSpawns(currentTime) {
-  processes.forEach((process) => {
-    const processState = animationStates[process.id];
-    if (!processState) return;
-
-    const spawnPointData = findSpawnPoint(process);
-    if (!spawnPointData || !spawnPointData.point.actions) return;
-
-    const spawnAction = spawnPointData.point.actions.find(
-      (a) => a.isUsed && a.type === "Spawn"
-    );
-    if (!spawnAction) return;
-
-    const spawnInterval =
-      typeof spawnAction.spawnInterval === "number"
-        ? spawnAction.spawnInterval
-        : parseFloat(spawnAction.spawnInterval || "2"); // Default to 2 seconds if not specified
-
-    if (currentTime >= processState.nextSpawnTime) {
-      const newObject = createSpawnedObject(
-        process,
-        spawnPointData,
-        currentTime,
-        spawnAction.material || "Default"
-      );
-
-      processState.spawnedObjects[newObject.id] = newObject;
-      processState.objectIdCounter++;
-      processState.nextSpawnTime = currentTime + spawnInterval;
-
-      log(`Spawned object ${newObject.id} for process ${process.id}`);
-      
-      // Notify main thread about new object
-      self.postMessage({
-        type: "objectSpawned",
-        data: {
-          processId: process.id,
-          object: newObject,
-        },
-      });
-    }
-  });
-}
-
-// Update all animations
-function updateAnimations(delta, currentTime) {
-  // First handle spawning of new objects
-  processSpawns(currentTime);
-
-  // Then animate existing objects
-  processes.forEach((process) => {
-    const processState = animationStates[process.id];
-    if (!processState) return;
-
-    const path = getProcessPath(process);
-    if (path.length < 2) {
-      log(`Path too short for process ${process.id}, length: ${path.length}`);
-      return;
-    }
-
-    const updatedObjects = {};
-    let hasChanges = false;
-
-    Object.entries(processState.spawnedObjects).forEach(([objectId, obj]) => {
-      if (!obj.visible || !obj.state.isAnimating) return;
-
-      const stateRef = obj.state;
-
-      // Use the spawnPointIndex as starting point if it's the initial movement
-      if (stateRef.currentIndex === 0 && stateRef.progress === 0) {
-        stateRef.currentIndex = stateRef.spawnPointIndex || 0;
-      }
-
-      // Get current point data
-      const currentPointData = getPointDataForAnimationIndex(
-        process,
-        stateRef.currentIndex
-      );
-
-      // Execute actions when arriving at a new point
-      if (stateRef.progress === 0 && currentPointData?.actions) {
-        const shouldStop = handlePointActions(
-          process.id,
-          objectId,
-          currentPointData.actions,
-          currentTime
-        );
-        if (shouldStop) return;
-      }
-
-      // Handle delays
-      if (stateRef.isDelaying) {
-        if (
-          currentTime - stateRef.delayStartTime >=
-          stateRef.currentDelayDuration
-        ) {
-          stateRef.isDelaying = false;
-          stateRef.delayComplete = true;
-        } else {
-          updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
-          return; // Keep waiting
-        }
-      }
-
-      const nextPointIdx = stateRef.currentIndex + 1;
-      const isLastPoint = nextPointIdx >= path.length;
-
-      if (isLastPoint) {
-        if (currentPointData?.actions) {
-          const shouldStop = !hasNonInheritActions(currentPointData.actions);
-          if (shouldStop) {
-            // Reached the end of path with no more actions
-            delete processState.spawnedObjects[objectId];
-            log(`Object ${objectId} completed path`);
-
-            // Notify main thread to remove the object
-            self.postMessage({
-              type: "objectCompleted",
-              data: {
-                processId: process.id,
-                objectId,
-              },
-            });
-            return;
-          }
-        }
-      }
-
-      if (!isLastPoint) {
-        const currentPos = path[stateRef.currentIndex];
-        const nextPos = path[nextPointIdx];
-        const distance = distanceBetweenVectors(currentPos, nextPos);
-        
-        // Ensure we don't divide by zero
-        if (distance > 0) {
-          const movement = stateRef.speed * delta;
-
-          // Update progress based on distance and speed
-          const oldProgress = stateRef.progress;
-          stateRef.progress += movement / distance;
-
-          if (stateRef.progress >= 1) {
-            // Reached next point
-            stateRef.currentIndex = nextPointIdx;
-            stateRef.progress = 0;
-            stateRef.delayComplete = false;
-            obj.position = [nextPos.x, nextPos.y, nextPos.z];
-          } else {
-            // Interpolate position
-            const lerpedPos = lerpVectors(currentPos, nextPos, stateRef.progress);
-            obj.position = [lerpedPos.x, lerpedPos.y, lerpedPos.z];
-          }
-
-          // Only send updates when there's meaningful movement
-          if (Math.abs(oldProgress - stateRef.progress) > 0.01) {
-            hasChanges = true;
-          }
-        } else {
-          // Skip to next point if distance is zero
-          stateRef.currentIndex = nextPointIdx;
-          stateRef.progress = 0;
-          obj.position = [nextPos.x, nextPos.y, nextPos.z];
-          hasChanges = true;
-        }
-      }
-
-      updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
-    });
-
-    // Update animation state with modified objects
-    if (Object.keys(updatedObjects).length > 0) {
-      processState.spawnedObjects = {
-        ...processState.spawnedObjects,
-        ...updatedObjects,
-      };
-
-      // Only send position updates when there are meaningful changes
-      if (hasChanges) {
-        self.postMessage({
-          type: "positionsUpdated",
-          data: {
-            processId: process.id,
-            objects: updatedObjects,
-          },
-        });
-      }
-    }
-  });
-}
diff --git a/app/src/modules/simulation/process/processAnimator.tsx b/app/src/modules/simulation/process/processAnimator.tsx
index fe62343..d82b800 100644
--- a/app/src/modules/simulation/process/processAnimator.tsx
+++ b/app/src/modules/simulation/process/processAnimator.tsx
@@ -1,590 +1,16 @@
-// import React, { useRef, useState, useEffect, useMemo } from "react";
-// import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
-// import { GLTFLoader } from "three-stdlib";
-// import { useLoader, useFrame } from "@react-three/fiber";
-// import * as THREE from "three";
-// import { GLTF } from "three-stdlib";
-// import boxGltb from "../../../assets/gltf-glb/crate_box.glb";
-
-// interface PointAction {
-//   uuid: string;
-//   name: string;
-//   type: "Inherit" | "Spawn" | "Despawn" | "Delay" | "Swap";
-//   objectType: string;
-//   material: string;
-//   delay: string | number;
-//   spawnInterval: string | number;
-//   isUsed: boolean;
-// }
-
-// interface ProcessPoint {
-//   uuid: string;
-//   position: number[];
-//   rotation: number[];
-//   actions: PointAction[];
-//   connections: {
-//     source: { pathUUID: string; pointUUID: string };
-//     targets: { pathUUID: string; pointUUID: string }[];
-//   };
-// }
-
-// interface ProcessPath {
-//   modeluuid: string;
-//   modelName: string;
-//   points: ProcessPoint[];
-//   pathPosition: number[];
-//   pathRotation: number[];
-//   speed: number;
-// }
-
-// interface ProcessData {
-//   id: string;
-//   paths: ProcessPath[];
-//   animationPath: { x: number; y: number; z: number }[];
-//   pointActions: PointAction[][];
-//   speed: number;
-//   customMaterials?: Record<string, THREE.Material>;
-//   renderAs?: "box" | "custom";
-// }
-
-// interface AnimationState {
-//   currentIndex: number;
-//   progress: number;
-//   isAnimating: boolean;
-//   speed: number;
-//   isDelaying: boolean;
-//   delayStartTime: number;
-//   currentDelayDuration: number;
-//   delayComplete: boolean;
-//   currentPathIndex: number;
-// }
-
-// interface SpawnedObject {
-//   ref: React.RefObject<THREE.Group | THREE.Mesh>;
-//   state: AnimationState;
-//   visible: boolean;
-//   material: THREE.Material;
-//   spawnTime: number;
-//   currentMaterialType: string;
-//   position: THREE.Vector3; // The position of the object
-// }
-
-// interface ProcessAnimationState {
-//   spawnedObjects: { [objectId: string]: SpawnedObject };
-//   nextSpawnTime: number;
-//   objectIdCounter: number;
-// }
-
-// const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
-//   processes,
-// }) => {
-//
-//   const gltf = useLoader(GLTFLoader, boxGltb) as GLTF;
-//   const { isPlaying } = usePlayButtonStore();
-//   const groupRef = useRef<THREE.Group>(null);
-
-//   const [animationStates, setAnimationStates] = useState<
-//     Record<string, ProcessAnimationState>
-//   >({});
-
-//   // Base materials
-//   const baseMaterials = useMemo(
-//     () => ({
-//       Wood: new THREE.MeshStandardMaterial({ color: 0x8b4513 }),
-//       Box: new THREE.MeshStandardMaterial({
-//         color: 0xcccccc,
-//         metalness: 0.8,
-//         roughness: 0.2,
-//       }),
-//       Crate: new THREE.MeshStandardMaterial({
-//         color: 0x00aaff,
-//         metalness: 0.1,
-//         roughness: 0.5,
-//       }),
-//       Default: new THREE.MeshStandardMaterial({ color: 0x00ff00 }),
-//     }),
-//     []
-//   );
-
-//   // Initialize animation states when processes or play state changes
-//   useEffect(() => {
-//     if (!isPlaying) {
-//       setAnimationStates({});
-//       return;
-//     }
-
-//     const newStates: Record<string, ProcessAnimationState> = {};
-//     processes.forEach((process) => {
-//       newStates[process.id] = {
-//         spawnedObjects: {},
-//         nextSpawnTime: 0,
-//         objectIdCounter: 0,
-//       };
-//     });
-//     setAnimationStates(newStates);
-//   }, [isPlaying, processes]);
-
-//   // Find spawn point in a process
-//   const findSpawnPoint = (process: ProcessData): ProcessPoint | null => {
-//     for (const path of process.paths || []) {
-//       for (const point of path.points || []) {
-//         const spawnAction = point.actions?.find(
-//           (a) => a.isUsed && a.type === "Spawn"
-//         );
-//         if (spawnAction) {
-//           return point;
-//         }
-//       }
-//     }
-//     return null;
-//   };
-
-//   // Find the corresponding animation path point for a spawn point
-//   const findAnimationPathPoint = (process: ProcessData, spawnPoint: ProcessPoint): THREE.Vector3 => {
-//     // If we have an animation path, use the first point
-//     if (process.animationPath && process.animationPath.length > 0) {
-//       // Find the index of this point in the path
-//       let pointIndex = 0;
-
-//       // Try to find the corresponding point in the animation path
-//       for (const path of process.paths || []) {
-//         for (let i = 0; i < (path.points?.length || 0); i++) {
-//           const point = path.points?.[i];
-//           if (point && point.uuid === spawnPoint.uuid) {
-//             // Found the matching point
-//             if (process.animationPath[pointIndex]) {
-//               const p = process.animationPath[pointIndex];
-//               return new THREE.Vector3(p.x, p.y, p.z);
-//             }
-//           }
-//           pointIndex++;
-//         }
-//       }
-
-//       // Fallback to the spawn point's position
-//       return new THREE.Vector3(
-//         spawnPoint.position[0],
-//         spawnPoint.position[1],
-//         spawnPoint.position[2]
-//       );
-//     }
-
-//     // If no animation path, use the spawn point's position
-//     return new THREE.Vector3(
-//       spawnPoint.position[0],
-//       spawnPoint.position[1],
-//       spawnPoint.position[2]
-//     );
-//   };
-
-//   // Create a new spawned object
-//   const createSpawnedObject = (
-//     process: ProcessData,
-//     currentTime: number,
-//     materialType: string,
-//     spawnPoint: ProcessPoint
-//   ): SpawnedObject => {
-//     const processMaterials = {
-//       ...baseMaterials,
-//       ...(process.customMaterials || {}),
-//     };
-
-//     // Get the position where we should spawn
-//     const spawnPosition = findAnimationPathPoint(process, spawnPoint);
-
-//     return {
-//       ref: React.createRef(),
-//       state: {
-//         currentIndex: 0,
-//         progress: 0,
-//         isAnimating: true,
-//         speed: process.speed || 1,
-//         isDelaying: false,
-//         delayStartTime: 0,
-//         currentDelayDuration: 0,
-//         delayComplete: false,
-//         currentPathIndex: 0,
-//       },
-//       visible: true,
-//       material:
-//         processMaterials[materialType as keyof typeof processMaterials] ||
-//         baseMaterials.Default,
-//       currentMaterialType: materialType,
-//       spawnTime: currentTime,
-//       position: spawnPosition, // Store the position directly
-//     };
-//   };
-
-//   // Handle material swap for an object
-//   const handleMaterialSwap = (
-//     processId: string,
-//     objectId: string,
-//     materialType: string
-//   ) => {
-//     setAnimationStates((prev) => {
-//       const processState = prev[processId];
-//       if (!processState || !processState.spawnedObjects[objectId]) return prev;
-
-//       const process = processes.find((p) => p.id === processId);
-//       const processMaterials = {
-//         ...baseMaterials,
-//         ...(process?.customMaterials || {}),
-//       };
-
-//       const newMaterial =
-//         processMaterials[materialType as keyof typeof processMaterials] ||
-//         baseMaterials.Default;
-
-//       return {
-//         ...prev,
-//         [processId]: {
-//           ...processState,
-//           spawnedObjects: {
-//             ...processState.spawnedObjects,
-//             [objectId]: {
-//               ...processState.spawnedObjects[objectId],
-//               material: newMaterial,
-//               currentMaterialType: materialType,
-//             },
-//           },
-//         },
-//       };
-//     });
-//   };
-
-//   // Handle point actions for an object
-//   const handlePointActions = (
-//     processId: string,
-//     objectId: string,
-//     actions: PointAction[] = [],
-//     currentTime: number
-//   ): boolean => {
-//     let shouldStopAnimation = false;
-
-//     actions.forEach((action) => {
-//       if (!action.isUsed) return;
-
-//       switch (action.type) {
-//         case "Delay":
-//           setAnimationStates((prev) => {
-//             const processState = prev[processId];
-//             if (
-//               !processState ||
-//               !processState.spawnedObjects[objectId] ||
-//               processState.spawnedObjects[objectId].state.isDelaying
-//             ) {
-//               return prev;
-//             }
-
-//             const delayDuration =
-//               typeof action.delay === "number"
-//                 ? action.delay
-//                 : parseFloat(action.delay as string) || 0;
-
-//             if (delayDuration > 0) {
-//               return {
-//                 ...prev,
-//                 [processId]: {
-//                   ...processState,
-//                   spawnedObjects: {
-//                     ...processState.spawnedObjects,
-//                     [objectId]: {
-//                       ...processState.spawnedObjects[objectId],
-//                       state: {
-//                         ...processState.spawnedObjects[objectId].state,
-//                         isDelaying: true,
-//                         delayStartTime: currentTime,
-//                         currentDelayDuration: delayDuration,
-//                         delayComplete: false,
-//                       },
-//                     },
-//                   },
-//                 },
-//               };
-//             }
-//             return prev;
-//           });
-//           shouldStopAnimation = true;
-//           break;
-
-//         case "Despawn":
-//           setAnimationStates((prev) => {
-//             const processState = prev[processId];
-//             if (!processState) return prev;
-
-//             const newSpawnedObjects = { ...processState.spawnedObjects };
-//             delete newSpawnedObjects[objectId];
-
-//             return {
-//               ...prev,
-//               [processId]: {
-//                 ...processState,
-//                 spawnedObjects: newSpawnedObjects,
-//               },
-//             };
-//           });
-//           shouldStopAnimation = true;
-//           break;
-
-//         case "Swap":
-//           if (action.material) {
-//             handleMaterialSwap(processId, objectId, action.material);
-//           }
-//           break;
-
-//         default:
-//           break;
-//       }
-//     });
-
-//     return shouldStopAnimation;
-//   };
-
-//   // Check if point has non-inherit actions
-//   const hasNonInheritActions = (actions: PointAction[] = []): boolean => {
-//     return actions.some((action) => action.isUsed && action.type !== "Inherit");
-//   };
-
-//   // Get point data for current animation index
-//   const getPointDataForAnimationIndex = (
-//     process: ProcessData,
-//     index: number
-//   ): ProcessPoint | null => {
-//     if (!process.paths) return null;
-
-//     let cumulativePoints = 0;
-//     for (const path of process.paths) {
-//       const pointCount = path.points?.length || 0;
-
-//       if (index < cumulativePoints + pointCount) {
-//         const pointIndex = index - cumulativePoints;
-//         return path.points?.[pointIndex] || null;
-//       }
-
-//       cumulativePoints += pointCount;
-//     }
-
-//     return null;
-//   };
-
-//   // Spawn objects for all processes
-//   useFrame((state) => {
-//     if (!isPlaying) return;
-
-//     const currentTime = state.clock.getElapsedTime();
-//     setAnimationStates((prev) => {
-//       const newStates = { ...prev };
-
-//       processes.forEach((process) => {
-//         const processState = newStates[process.id];
-//         if (!processState) return;
-
-//         const spawnPoint = findSpawnPoint(process);
-//         if (!spawnPoint || !spawnPoint.actions) return;
-
-//         const spawnAction = spawnPoint.actions.find(
-//           (a) => a.isUsed && a.type === "Spawn"
-//         );
-//         if (!spawnAction) return;
-
-//         const spawnInterval =
-//           typeof spawnAction.spawnInterval === "number"
-//             ? spawnAction.spawnInterval
-//             : parseFloat(spawnAction.spawnInterval as string) || 0;
-
-//         if (currentTime >= processState.nextSpawnTime) {
-//           const objectId = `obj-${process.id}-${processState.objectIdCounter}`;
-
-//           // Create the new object with the spawn point
-//           const newObject = createSpawnedObject(
-//             process,
-//             currentTime,
-//             spawnAction.material || "Default",
-//             spawnPoint
-//           );
-
-//           newStates[process.id] = {
-//             ...processState,
-//             spawnedObjects: {
-//               ...processState.spawnedObjects,
-//               [objectId]: newObject,
-//             },
-//             objectIdCounter: processState.objectIdCounter + 1,
-//             nextSpawnTime: currentTime + spawnInterval,
-//           };
-//         }
-//       });
-
-//       return newStates;
-//     });
-//   });
-
-//   // Animate objects for all processes
-//   useFrame((state, delta) => {
-//     if (!isPlaying) return;
-
-//     const currentTime = state.clock.getElapsedTime();
-//     setAnimationStates((prev) => {
-//       const newStates = { ...prev };
-
-//       processes.forEach((process) => {
-//         const processState = newStates[process.id];
-//         if (!processState) return;
-
-//         const path =
-//           process.animationPath?.map((p) => new THREE.Vector3(p.x, p.y, p.z)) ||
-//           [];
-//         if (path.length < 2) return;
-
-//         const updatedObjects = { ...processState.spawnedObjects };
-
-//         Object.entries(processState.spawnedObjects).forEach(
-//           ([objectId, obj]) => {
-//             if (!obj.visible || !obj.state.isAnimating) return;
-
-//             const currentRef = gltf?.scene ? obj.ref.current : obj.ref.current;
-//             if (!currentRef) return;
-
-//             // Set the position when the reference is first available
-//             if (obj.position && obj.state.currentIndex === 0 && obj.state.progress === 0) {
-//               currentRef.position.copy(obj.position);
-//             }
-
-//             const stateRef = obj.state;
-
-//             // Get current point data
-//             const currentPointData = getPointDataForAnimationIndex(
-//               process,
-//               stateRef.currentIndex
-//             );
-
-//             // Execute actions when arriving at a new point
-//             if (stateRef.progress === 0 && currentPointData?.actions) {
-//               const shouldStop = handlePointActions(
-//                 process.id,
-//                 objectId,
-//                 currentPointData.actions,
-//                 currentTime
-//               );
-//               if (shouldStop) return;
-//             }
-
-//             // Handle delays
-//             if (stateRef.isDelaying) {
-//               if (
-//                 currentTime - stateRef.delayStartTime >=
-//                 stateRef.currentDelayDuration
-//               ) {
-//                 stateRef.isDelaying = false;
-//                 stateRef.delayComplete = true;
-//               } else {
-//                 return; // Keep waiting
-//               }
-//             }
-
-//             const nextPointIdx = stateRef.currentIndex + 1;
-//             const isLastPoint = nextPointIdx >= path.length;
-
-//             if (isLastPoint) {
-//               if (currentPointData?.actions) {
-//                 const shouldStop = !hasNonInheritActions(
-//                   currentPointData.actions
-//                 );
-//                 if (shouldStop) {
-//                   currentRef.position.copy(path[stateRef.currentIndex]);
-//                   delete updatedObjects[objectId];
-//                   return;
-//                 }
-//               }
-//             }
-
-//             if (!isLastPoint) {
-//               const nextPoint = path[nextPointIdx];
-//               const distance =
-//                 path[stateRef.currentIndex].distanceTo(nextPoint);
-//               const movement = stateRef.speed * delta;
-//               stateRef.progress += movement / distance;
-
-//               if (stateRef.progress >= 1) {
-//                 stateRef.currentIndex = nextPointIdx;
-//                 stateRef.progress = 0;
-//                 stateRef.delayComplete = false;
-//                 currentRef.position.copy(nextPoint);
-//               } else {
-//                 currentRef.position.lerpVectors(
-//                   path[stateRef.currentIndex],
-//                   nextPoint,
-//                   stateRef.progress
-//                 );
-//               }
-//             }
-
-//             updatedObjects[objectId] = { ...obj, state: { ...stateRef } };
-//           }
-//         );
-
-//         newStates[process.id] = {
-//           ...processState,
-//           spawnedObjects: updatedObjects,
-//         };
-//       });
-
-//       return newStates;
-//     });
-//   });
-
-//   if (!processes || processes.length === 0) {
-//     return null;
-//   }
-
-//   return (
-//     <>
-//       {Object.entries(animationStates).flatMap(([processId, processState]) =>
-//         Object.entries(processState.spawnedObjects)
-//           .filter(([_, obj]) => obj.visible)
-//           .map(([objectId, obj]) => {
-//             const process = processes.find((p) => p.id === processId);
-//             const renderAs = process?.renderAs || "custom";
-
-//             return renderAs === "box" ? (
-//               <mesh
-//                 key={objectId}
-//                 ref={obj.ref as React.RefObject<THREE.Mesh>}
-//                 material={obj.material}
-//                 position={obj.position}  // Set position directly in the JSX
-//               >
-//                 <boxGeometry args={[1, 1, 1]} />
-//               </mesh>
-//             ) : (
-//               gltf?.scene && (
-//                 <group
-//                   key={objectId}
-//                   ref={obj.ref as React.RefObject<THREE.Group>}
-//                   position={obj.position}  // Set position directly in the JSX
-//                 >
-//                   <primitive
-//                     object={gltf.scene.clone()}
-//                     material={obj.material}
-//                   />
-//                 </group>
-//               )
-//             );
-//           })
-//       )}
-//     </>
-//   );
-// };
-
-// export default ProcessAnimator;
-
 import React, { useRef, useState, useEffect, useMemo } from "react";
-import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
+import {
+  useAnimationPlaySpeed,
+  usePauseButtonStore,
+  usePlayButtonStore,
+  useResetButtonStore,
+} from "../../../store/usePlayButtonStore";
 import { GLTFLoader } from "three-stdlib";
 import { useLoader, useFrame } from "@react-three/fiber";
 import * as THREE from "three";
 import { GLTF } from "three-stdlib";
-import boxGltb from "../../../assets/gltf-glb/crate_box.glb";
-import camera from "../../../assets/gltf-glb/camera face 2.gltf";
+import crate from "../../../assets/gltf-glb/crate_box.glb";
+import box from "../../../assets/gltf-glb/box.glb";
 
 interface PointAction {
   uuid: string;
@@ -661,15 +87,47 @@ interface ProcessAnimationState {
 const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
   processes,
 }) => {
-  const gltf = useLoader(GLTFLoader, boxGltb) as GLTF;
-  const { isPlaying } = usePlayButtonStore();
+  const gltf = useLoader(GLTFLoader, crate) as GLTF;
+  const { isPlaying, setIsPlaying } = usePlayButtonStore();
+  const { isPaused, setIsPaused } = usePauseButtonStore();
+  const { isReset, setReset } = useResetButtonStore();
   const groupRef = useRef<THREE.Group>(null);
   const debugRef = useRef<boolean>(false);
-
+  const clockRef = useRef<THREE.Clock>(new THREE.Clock());
+  const pauseTimeRef = useRef<number>(0);
+  const elapsedBeforePauseRef = useRef<number>(0);
+  const animationStatesRef = useRef<Record<string, ProcessAnimationState>>({});
+  const { speed, setSpeed } = useAnimationPlaySpeed();
+  const prevIsPlaying = useRef<boolean | null>(null);
+  const [internalResetFlag, setInternalResetFlag] = useState(false);
   const [animationStates, setAnimationStates] = useState<
     Record<string, ProcessAnimationState>
   >({});
 
+  // Store the speed in a ref to access the latest value in animation frames
+  const speedRef = useRef<number>(speed);
+
+  // Update the ref when speed changes
+  useEffect(() => {
+    speedRef.current = speed;
+  }, [speed]);
+
+  useEffect(() => {
+    if (prevIsPlaying.current !== null) {
+      setAnimationStates({});
+    }
+
+    // Update ref to current isPlaying after effect
+    prevIsPlaying.current = isPlaying;
+
+    // setAnimationStates({});
+  }, [isPlaying]);
+
+  // Sync ref with state
+  useEffect(() => {
+    animationStatesRef.current = animationStates;
+  }, [animationStates]);
+
   // Base materials
   const baseMaterials = useMemo(
     () => ({
@@ -680,26 +138,66 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     []
   );
 
+  // Replace your reset effect with this:
+  useEffect(() => {
+    if (isReset) {
+      // 1. Mark that we're doing an internal reset
+      setInternalResetFlag(true);
+
+      // 2. Pause the animation first
+      setIsPlaying(false);
+      setIsPaused(false);
+
+      // 3. Reset all animation states
+      setAnimationStates({});
+      animationStatesRef.current = {};
+
+      // 4. Reset timing references
+      clockRef.current = new THREE.Clock();
+      elapsedBeforePauseRef.current = 0;
+      pauseTimeRef.current = 0;
+
+      // 5. Clear the external reset flag
+      setReset(false);
+
+      // 6. After state updates are complete, restart
+      setTimeout(() => {
+        setInternalResetFlag(false);
+        setIsPlaying(true);
+      }, 0);
+    }
+  }, [isReset, setReset, setIsPlaying, setIsPaused]);
+
+  // Handle pause state changes
+  useEffect(() => {
+    if (isPaused) {
+      pauseTimeRef.current = clockRef.current.getElapsedTime();
+    } else if (pauseTimeRef.current > 0) {
+      const pausedDuration =
+        clockRef.current.getElapsedTime() - pauseTimeRef.current;
+      elapsedBeforePauseRef.current += pausedDuration;
+    }
+  }, [isPaused]);
+
   // Initialize animation states when processes or play state changes
   useEffect(() => {
-    if (!isPlaying) {
-      setAnimationStates({});
-      return;
+    if (isPlaying && !internalResetFlag) {
+      const newStates: Record<string, ProcessAnimationState> = {};
+      processes.forEach((process) => {
+        newStates[process.id] = {
+          spawnedObjects: {},
+          nextSpawnTime: 0,
+          objectIdCounter: 0,
+          isProcessDelaying: false,
+          processDelayStartTime: 0,
+          processDelayDuration: 0,
+        };
+      });
+      setAnimationStates(newStates);
+      animationStatesRef.current = newStates;
+      clockRef.current.start();
     }
-
-    const newStates: Record<string, ProcessAnimationState> = {};
-    processes.forEach((process) => {
-      newStates[process.id] = {
-        spawnedObjects: {},
-        nextSpawnTime: 0,
-        objectIdCounter: 0,
-        isProcessDelaying: false,
-        processDelayStartTime: 0,
-        processDelayDuration: 0,
-      };
-    });
-    setAnimationStates(newStates);
-  }, [isPlaying, processes]);
+  }, [isPlaying, processes, internalResetFlag]);
 
   const findSpawnPoint = (process: ProcessData): ProcessPoint | null => {
     for (const path of process.paths || []) {
@@ -767,7 +265,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         currentIndex: 0,
         progress: 0,
         isAnimating: true,
-        speed: process.speed || 1,
+        speed: process.speed || 1, // Process base speed (will be multiplied by global speed)
         isDelaying: false,
         delayStartTime: 0,
         currentDelayDuration: 0,
@@ -953,10 +451,12 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     return null;
   };
 
-  useFrame((state) => {
-    if (!isPlaying) return;
+  useFrame(() => {
+    if (!isPlaying || isPaused) return;
+
+    const currentTime =
+      clockRef.current.getElapsedTime() - elapsedBeforePauseRef.current;
 
-    const currentTime = state.clock.getElapsedTime();
     setAnimationStates((prev) => {
       const newStates = { ...prev };
 
@@ -965,9 +465,13 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         if (!processState) return;
 
         if (processState.isProcessDelaying) {
+          // Apply global speed to delays (faster speed = shorter delays)
+          const effectiveDelayTime =
+            processState.processDelayDuration / speedRef.current;
+
           if (
             currentTime - processState.processDelayStartTime >=
-            processState.processDelayDuration
+            effectiveDelayTime
           ) {
             newStates[process.id] = {
               ...processState,
@@ -1009,6 +513,9 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
             ? spawnAction.spawnInterval
             : parseFloat(spawnAction.spawnInterval as string) || 0;
 
+        // Apply global speed to spawn intervals (faster speed = more frequent spawns)
+        const effectiveSpawnInterval = spawnInterval / speedRef.current;
+
         if (currentTime >= processState.nextSpawnTime) {
           const objectId = `obj-${process.id}-${processState.objectIdCounter}`;
           const newObject = createSpawnedObject(
@@ -1025,7 +532,7 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
               [objectId]: newObject,
             },
             objectIdCounter: processState.objectIdCounter + 1,
-            nextSpawnTime: currentTime + spawnInterval,
+            nextSpawnTime: currentTime + effectiveSpawnInterval,
           };
         }
       });
@@ -1034,10 +541,12 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
     });
   });
 
-  useFrame((state, delta) => {
-    if (!isPlaying) return;
+  useFrame((_, delta) => {
+    if (!isPlaying || isPaused) return;
+
+    const currentTime =
+      clockRef.current.getElapsedTime() - elapsedBeforePauseRef.current;
 
-    const currentTime = state.clock.getElapsedTime();
     setAnimationStates((prev) => {
       const newStates = { ...prev };
 
@@ -1046,9 +555,13 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
         if (!processState) return;
 
         if (processState.isProcessDelaying) {
+          // Apply global speed to delays (faster speed = shorter delays)
+          const effectiveDelayTime =
+            processState.processDelayDuration / speedRef.current;
+
           if (
             currentTime - processState.processDelayStartTime >=
-            processState.processDelayDuration
+            effectiveDelayTime
           ) {
             newStates[process.id] = {
               ...processState,
@@ -1104,10 +617,11 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
             const stateRef = obj.state;
 
             if (stateRef.isDelaying) {
-              if (
-                currentTime - stateRef.delayStartTime >=
-                stateRef.currentDelayDuration
-              ) {
+              // Apply global speed to delays (faster speed = shorter delays)
+              const effectiveDelayTime =
+                stateRef.currentDelayDuration / speedRef.current;
+
+              if (currentTime - stateRef.delayStartTime >= effectiveDelayTime) {
                 stateRef.isDelaying = false;
                 stateRef.delayComplete = true;
                 stateRef.isAnimating = true;
@@ -1177,7 +691,10 @@ const ProcessAnimator: React.FC<{ processes: ProcessData[] }> = ({
               const nextPoint = path[nextPointIdx];
               const distance =
                 path[stateRef.currentIndex].distanceTo(nextPoint);
-              const movement = stateRef.speed * delta;
+
+              // Apply both process-specific speed and global speed multiplier
+              const effectiveSpeed = stateRef.speed * speedRef.current;
+              const movement = effectiveSpeed * delta;
 
               if (stateRef.delayComplete && stateRef.progress < 0.01) {
                 stateRef.progress = 0.05;
diff --git a/app/src/modules/simulation/process/processObjectRender.tsx b/app/src/modules/simulation/process/processObjectRender.tsx
new file mode 100644
index 0000000..7f5a0cc
--- /dev/null
+++ b/app/src/modules/simulation/process/processObjectRender.tsx
@@ -0,0 +1,114 @@
+import React, { useRef, useEffect } from "react";
+import { useFrame } from "@react-three/fiber";
+import * as THREE from "three";
+import { GLTF } from "three-stdlib";
+import { Box3Helper } from "three";
+import { SpawnedObject, ProcessData } from "./types";
+
+interface ProcessObjectRendererProps {
+  objectId: string;
+  object: SpawnedObject;
+  process: ProcessData;
+  gltf: GLTF;
+  showBoundingBox?: boolean;
+}
+
+export const ProcessObjectRenderer: React.FC<ProcessObjectRendererProps> = ({
+  objectId,
+  object,
+  process,
+  gltf,
+  showBoundingBox = false,
+}) => {
+  const meshRef = useRef<THREE.Mesh>(null);
+  const boxHelperRef = useRef<THREE.Box3Helper | null>(null);
+  const boundingBoxRef = useRef<THREE.Box3>(new THREE.Box3());
+
+  // Issue 1: Can't assign to ref.current as it's read-only
+  useEffect(() => {
+    if (object.ref && meshRef.current) {
+      // Instead of direct assignment, we need to store the mesh reference another way
+      // Option 1: If you can modify the SpawnedObject interface, add a setMesh method
+      if (typeof (object as any).setMesh === 'function') {
+        (object as any).setMesh(meshRef.current);
+      }
+      
+      // Option 2: Store the mesh in a property that isn't ref.current
+      // This requires modifying your SpawnedObject interface to include this property
+      (object as any).meshInstance = meshRef.current;
+      
+      // Option 3: If you need to maintain compatibility, you could use Object.defineProperty
+      // But this is a hack and not recommended
+      // Object.defineProperty(object.ref, 'current', { value: meshRef.current, writable: true });
+    }
+  }, [object.ref]);
+
+  // Create a bounding box helper for visualization
+  useFrame(() => {
+    if (meshRef.current && showBoundingBox) {
+      // Update the bounding box to match the mesh position
+      if (!boxHelperRef.current) {
+        // Get the size of the mesh
+        const size = new THREE.Vector3(1, 1, 1);
+        
+        // If the mesh has geometry, use its dimensions
+        if (meshRef.current.geometry) {
+          const box = new THREE.Box3().setFromObject(meshRef.current);
+          box.getSize(size);
+        }
+        
+        // Create a new bounding box centered on the mesh
+        boundingBoxRef.current = new THREE.Box3().setFromCenterAndSize(
+          meshRef.current.position,
+          size
+        );
+        
+        // Create a helper to visualize the box
+        boxHelperRef.current = new Box3Helper(
+          boundingBoxRef.current,
+          new THREE.Color(0xff0000)
+        );
+        
+        // Add the helper to the scene
+        meshRef.current.parent?.add(boxHelperRef.current);
+      } else {
+        // Update the box position to match the mesh
+        boundingBoxRef.current.setFromCenterAndSize(
+          meshRef.current.position,
+          boundingBoxRef.current.getSize(new THREE.Vector3())
+        );
+        
+        // Force the helper to update
+        boxHelperRef.current.updateMatrixWorld(true);
+      }
+    }
+  });
+
+  if (gltf?.scene) {
+    return (
+      <primitive
+        ref={meshRef}
+        object={gltf.scene.clone()}
+        position={[0, 0, 0]}
+        material={object.material}
+      />
+    );
+  }
+
+  // Issue 2: Material color type problem
+  return (
+    <mesh ref={meshRef}>
+      <boxGeometry args={[1, 1, 1]} />
+      <meshStandardMaterial
+        // Fix the color property access
+        color={
+          object.material && 'color' in object.material 
+            ? (object.material as THREE.MeshStandardMaterial).color 
+            : "#00ff00"
+        }
+        metalness={0.5}
+        roughness={0.3}
+      />
+    </mesh>
+  );
+};
\ No newline at end of file
diff --git a/app/src/modules/simulation/process/types.ts b/app/src/modules/simulation/process/types.ts
new file mode 100644
index 0000000..64a3e6a
--- /dev/null
+++ b/app/src/modules/simulation/process/types.ts
@@ -0,0 +1,79 @@
+import * as THREE from "three";
+import React from "react";
+
+export interface ProcessPoint {
+  uuid: string;
+  position: number[];
+  actions?: PointAction[];
+}
+
+export interface PointAction {
+  type: string;
+  isUsed: boolean;
+  spawnInterval?: number | string;
+  material?: string;
+  delay?: number | string;
+}
+
+export interface ProcessData {
+  id: string;
+  name: string;
+  paths?: {
+    points?: ProcessPoint[];
+  }[];
+  animationPath?: { x: number; y: number; z: number }[];
+  speed?: number;
+  customMaterials?: Record<string, THREE.Material>;
+}
+
+export interface ProcessAnimationState {
+  spawnedObjects: Record<string, SpawnedObject | SpawnedObjectWithCollision>;
+  nextSpawnTime: number;
+  objectIdCounter: number;
+  isProcessDelaying: boolean;
+  processDelayStartTime: number;
+  processDelayDuration: number;
+  isCollisionPaused?: boolean;
+}
+
+export interface SpawnedObject {
+  ref: React.RefObject<THREE.Object3D>;
+  state: {
+    currentIndex: number;
+    progress: number;
+    isAnimating: boolean;
+    speed: number;
+    isDelaying: boolean;
+    delayStartTime: number;
+    currentDelayDuration: number;
+    delayComplete: boolean;
+    currentPathIndex: number;
+  };
+  visible: boolean;
+  material: THREE.Material;
+  currentMaterialType: string;
+  spawnTime: number;
+  position: THREE.Vector3;
+  collision?: {
+    boundingBox: THREE.Box3;
+    isColliding: boolean;
+    colliding: boolean; // Added this property
+  };
+}
+
+// For use in your processAnimator.tsx
+// Update the CollisionState interface to include all required properties
+interface CollisionState {
+    boundingBox: THREE.Box3;
+    isColliding: boolean;
+    colliding: boolean;  // This was missing
+    collidingWith: string[];
+  }
+export interface SpawnedObjectWithCollision extends SpawnedObject {
+    collision: {
+      boundingBox: THREE.Box3;
+      isColliding: boolean;
+      colliding: boolean;
+      collidingWith: string[];
+    };
+  }
diff --git a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
index a1ac727..2685ca4 100644
--- a/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
+++ b/app/src/services/factoryBuilder/assest/assets/getCategoryAsset.ts
@@ -1,8 +1,8 @@
-let BackEnd_url = `http://${process.env.REACT_APP_SERVER_ASSET_LIBRARY_URL}`;
+let BackEnd_url = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`;
 export const getCategoryAsset = async (categoryName: any) => {
   try {
     const response = await fetch(
-      `${BackEnd_url}/api/v2/getCatagoryAssets/${categoryName}`,
+      `${BackEnd_url}/api/v2/getCategoryAssets/${categoryName}`,
       {
         method: "GET",
         headers: {
diff --git a/app/src/store/usePlayButtonStore.ts b/app/src/store/usePlayButtonStore.ts
index e975a7c..bed2bd7 100644
--- a/app/src/store/usePlayButtonStore.ts
+++ b/app/src/store/usePlayButtonStore.ts
@@ -4,8 +4,32 @@ type PlayButtonStore = {
   isPlaying: boolean; // Updated state name to reflect the play/pause status more clearly
   setIsPlaying: (value: boolean) => void; // Updated setter function name for clarity
 };
+type PauseButtonStore = {
+  isPaused: boolean; // Updated state name to reflect the play/pause status more clearly
+  setIsPaused: (value: boolean) => void; // Updated setter function name for clarity
+};
+type ResetButtonStore = {
+  isReset: boolean; // Updated state name to reflect the play/pause status more clearly
+  setReset: (value: boolean) => void; // Updated setter function name for clarity
+};
+interface AnimationSpeedState {
+  speed: number;
+  setSpeed: (value: number) => void;
+}
 
 export const usePlayButtonStore = create<PlayButtonStore>((set) => ({
   isPlaying: false, // Default state for play/pause
   setIsPlaying: (value) => set({ isPlaying: value }), // Update isPlaying state
 }));
+export const useResetButtonStore = create<ResetButtonStore>((set) => ({
+  isReset: false, // Default state for play/pause
+  setReset: (value) => set({ isReset: value }), // Update isPlaying state
+}));
+export const usePauseButtonStore = create<PauseButtonStore>((set) => ({
+  isPaused: false, // Default state for play/pause
+  setIsPaused: (value) => set({ isPaused: value }), // Update isPlaying state
+}));
+export const useAnimationPlaySpeed = create<AnimationSpeedState>((set) => ({
+  speed: 1,
+  setSpeed: (value) => set({ speed: value }),
+}));

From baed3cd98b1b2613f24b0fbb894a3b4d594f0f4f Mon Sep 17 00:00:00 2001
From: Gomathi9520 <gomathi@hexrfactory.com>
Date: Fri, 4 Apr 2025 18:47:47 +0530
Subject: [PATCH 08/17] 3d editoption api added and rotation functionality
 added

---
 .../3D-cards/cards/ProductionCapacity.tsx     |   7 +-
 .../3D-cards/cards/ReturnOfInvestment.tsx     |  21 +-
 .../layout/3D-cards/cards/StateWorking.tsx    |  20 +-
 .../layout/3D-cards/cards/Throughput.tsx      |  21 +-
 .../visualization/widgets/Widgets2D.tsx       |   2 +-
 .../properties/GlobalProperties.tsx           |   2 +-
 .../FleetEfficiencyInputComponent.tsx         |   2 +-
 .../IotInputCards/FlotingWidgetInput.tsx      |   2 +-
 .../WarehouseThroughputInputComponent.tsx     |   2 +-
 .../ui/componets/Dropped3dWidget.tsx          | 760 +++++++++---------
 .../ui/componets/DroppedFloatingWidgets.tsx   |  60 +-
 .../ui/componets/RealTimeVisulization.tsx     |  42 +-
 .../components/ui/menu/EditWidgetOption.tsx   |  11 +-
 .../realTimeVis/charts/BarGraphComponent.tsx  |   2 +-
 .../charts/DoughnutGraphComponent.tsx         |   2 +-
 .../realTimeVis/charts/LineGraphComponent.tsx |   2 +-
 .../realTimeVis/charts/PieGraphComponent.tsx  |   2 +-
 .../charts/PolarAreaGraphComponent.tsx        |   2 +-
 .../zoneData/add3dWidget.ts                   |   3 -
 .../zoneData/delete3dWidget.ts                |  38 +
 .../zoneData/update3dWidget.ts                |  81 ++
 app/src/store/useZone3DWidgetStore.ts         |   1 -
 22 files changed, 637 insertions(+), 448 deletions(-)
 create mode 100644 app/src/services/realTimeVisulization/zoneData/delete3dWidget.ts
 create mode 100644 app/src/services/realTimeVisulization/zoneData/update3dWidget.ts

diff --git a/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx b/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
index 0d239b4..a719023 100644
--- a/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
+++ b/app/src/components/layout/3D-cards/cards/ProductionCapacity.tsx
@@ -157,10 +157,10 @@ const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, posit
           setDuration(response.data.Data.duration)
           setName(response.data.widgetName)
         } else {
-          console.log("Unexpected response:", response);
+          
         }
       } catch (error) {
-        console.error("There was an error!", error);
+        
       }
     }
   }
@@ -178,7 +178,7 @@ const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, posit
 
   useEffect(() => {
 
-    console.log('rotation: ', rotation);
+    
   }, [rotation])
   const rotationDegrees = {
     x: (rotation[0] * 180) / Math.PI,
@@ -202,7 +202,6 @@ const ProductionCapacity: React.FC<ProductionCapacityProps> = ({ id, type, posit
         transform: transformStyle.transform,
         transformStyle: 'preserve-3d',
         transition: 'transform 0.1s ease-out'
-
       }}>
       <div className="productionCapacity-wrapper card"
         onClick={() => setSelectedChartId({ id: id, type: type })}
diff --git a/app/src/components/layout/3D-cards/cards/ReturnOfInvestment.tsx b/app/src/components/layout/3D-cards/cards/ReturnOfInvestment.tsx
index 96fc305..8e6c707 100644
--- a/app/src/components/layout/3D-cards/cards/ReturnOfInvestment.tsx
+++ b/app/src/components/layout/3D-cards/cards/ReturnOfInvestment.tsx
@@ -43,9 +43,10 @@ interface ReturnOfInvestmentProps {
   id: string;
   type: string;
   position: [number, number, number];
+  rotation: [number, number, number];
   onContextMenu?: (event: React.MouseEvent) => void;
 }
-const ReturnOfInvestment: React.FC<ReturnOfInvestmentProps> = ({ id, type, position, onContextMenu }) => {
+const ReturnOfInvestment: React.FC<ReturnOfInvestmentProps> = ({ id, type, position, rotation, onContextMenu }) => {
 
   const { selectedChartId, setSelectedChartId } = useWidgetStore();
   const { measurements: chartMeasurements, duration: chartDuration, name: widgetName } = useChartStore();
@@ -203,13 +204,29 @@ const ReturnOfInvestment: React.FC<ReturnOfInvestmentProps> = ({ id, type, posit
     }
   }
     , [chartMeasurements, chartDuration, widgetName])
+  const rotationDegrees = {
+    x: (rotation[0] * 180) / Math.PI,
+    y: (rotation[1] * 180) / Math.PI,
+    z: (rotation[2] * 180) / Math.PI,
+  };
+
+  const transformStyle = {
+    transform: `rotateX(${rotationDegrees.x}deg) rotateY(${rotationDegrees.y}deg) rotateZ(${rotationDegrees.z}deg)`,
+  };
 
   return (
     <Html position={[position[0], position[1], position[2]]}
       scale={[0.5, 0.5, 0.5]}
       transform
       zIndexRange={[1, 0]}
-      sprite>
+      sprite
+      style={{
+        transform: transformStyle.transform,
+        transformStyle: 'preserve-3d',
+        transition: 'transform 0.1s ease-out'
+
+      }}
+    >
       <div className="returnOfInvestment card"
         onClick={() => setSelectedChartId({ id: id, type: type })}
         onContextMenu={onContextMenu}
diff --git a/app/src/components/layout/3D-cards/cards/StateWorking.tsx b/app/src/components/layout/3D-cards/cards/StateWorking.tsx
index efd4e7d..287bc15 100644
--- a/app/src/components/layout/3D-cards/cards/StateWorking.tsx
+++ b/app/src/components/layout/3D-cards/cards/StateWorking.tsx
@@ -10,9 +10,10 @@ interface StateWorkingProps {
   id: string;
   type: string;
   position: [number, number, number];
+  rotation: [number, number, number];
   onContextMenu?: (event: React.MouseEvent) => void;
 }
-const StateWorking: React.FC<StateWorkingProps> = ({ id, type, position, onContextMenu }) => {
+const StateWorking: React.FC<StateWorkingProps> = ({ id, type, position, rotation, onContextMenu }) => {
   const { selectedChartId, setSelectedChartId } = useWidgetStore();
   const { measurements: chartMeasurements, duration: chartDuration, name: widgetName } = useChartStore();
   const [measurements, setmeasurements] = useState<any>({});
@@ -89,13 +90,28 @@ const StateWorking: React.FC<StateWorkingProps> = ({ id, type, position, onConte
   }
     , [chartMeasurements, chartDuration, widgetName])
 
+  const rotationDegrees = {
+    x: (rotation[0] * 180) / Math.PI,
+    y: (rotation[1] * 180) / Math.PI,
+    z: (rotation[2] * 180) / Math.PI,
+  };
 
+  const transformStyle = {
+    transform: `rotateX(${rotationDegrees.x}deg) rotateY(${rotationDegrees.y}deg) rotateZ(${rotationDegrees.z}deg)`,
+  };
   return (
     <Html position={[position[0], position[1], position[2]]}
       scale={[0.5, 0.5, 0.5]}
       transform
       zIndexRange={[1, 0]}
-      sprite>
+      sprite
+      style={{
+        transform: transformStyle.transform,
+        transformStyle: 'preserve-3d',
+        transition: 'transform 0.1s ease-out'
+
+      }}
+    >
       <div className="stateWorking-wrapper card"
         onClick={() => setSelectedChartId({ id: id, type: type })}
         onContextMenu={onContextMenu}
diff --git a/app/src/components/layout/3D-cards/cards/Throughput.tsx b/app/src/components/layout/3D-cards/cards/Throughput.tsx
index 5d6fab9..de3109b 100644
--- a/app/src/components/layout/3D-cards/cards/Throughput.tsx
+++ b/app/src/components/layout/3D-cards/cards/Throughput.tsx
@@ -45,10 +45,11 @@ interface ThroughputProps {
   id: string;
   type: string;
   position: [number, number, number];
+  rotation: [number, number, number];
   onContextMenu?: (event: React.MouseEvent) => void;
 }
 
-const Throughput: React.FC<ThroughputProps> = ({ id, type, position, onContextMenu }) => {
+const Throughput: React.FC<ThroughputProps> = ({ id, type, position, rotation, onContextMenu }) => {
 
   const { selectedChartId, setSelectedChartId } = useWidgetStore();
   const { measurements: chartMeasurements, duration: chartDuration, name: widgetName } = useChartStore();
@@ -183,13 +184,29 @@ const Throughput: React.FC<ThroughputProps> = ({ id, type, position, onContextMe
     }
   }
     , [chartMeasurements, chartDuration, widgetName])
+  const rotationDegrees = {
+    x: (rotation[0] * 180) / Math.PI,
+    y: (rotation[1] * 180) / Math.PI,
+    z: (rotation[2] * 180) / Math.PI,
+  };
+
+  const transformStyle = {
+    transform: `rotateX(${rotationDegrees.x}deg) rotateY(${rotationDegrees.y}deg) rotateZ(${rotationDegrees.z}deg)`,
+  };
 
   return (
     <Html position={[position[0], position[1], position[2]]}
       scale={[0.5, 0.5, 0.5]}
       transform
       zIndexRange={[1, 0]}
-      sprite>
+      sprite
+      style={{
+        transform: transformStyle.transform,
+        transformStyle: 'preserve-3d',
+        transition: 'transform 0.1s ease-out'
+
+      }}
+    >
       <div className="throughput-wrapper"
         onClick={() => setSelectedChartId({ id: id, type: type })}
         onContextMenu={onContextMenu}
diff --git a/app/src/components/layout/sidebarLeft/visualization/widgets/Widgets2D.tsx b/app/src/components/layout/sidebarLeft/visualization/widgets/Widgets2D.tsx
index 561c82b..9f71423 100644
--- a/app/src/components/layout/sidebarLeft/visualization/widgets/Widgets2D.tsx
+++ b/app/src/components/layout/sidebarLeft/visualization/widgets/Widgets2D.tsx
@@ -101,7 +101,7 @@ const ProgressBarWidget = ({
     </div>
   );
 };
-console.log(chartTypes, "chartTypes");
+
 
 const Widgets2D = () => {
   return (
diff --git a/app/src/components/layout/sidebarRight/properties/GlobalProperties.tsx b/app/src/components/layout/sidebarRight/properties/GlobalProperties.tsx
index 4e6a537..4ffea3b 100644
--- a/app/src/components/layout/sidebarRight/properties/GlobalProperties.tsx
+++ b/app/src/components/layout/sidebarRight/properties/GlobalProperties.tsx
@@ -33,7 +33,7 @@ const GlobalProperties: React.FC = () => {
   const { setPlaneValue, setGridValue, planeValue, gridValue } =
     useTileDistance();
   useEffect(() => {
-    console.log(gridValue, planeValue, "values");
+ 
   }, [gridValue, planeValue]);
   const { socket } = useSocketStore();
   const { limitDistance, setLimitDistance } = useLimitDistance();
diff --git a/app/src/components/layout/sidebarRight/visualization/IotInputCards/FleetEfficiencyInputComponent.tsx b/app/src/components/layout/sidebarRight/visualization/IotInputCards/FleetEfficiencyInputComponent.tsx
index cd60d24..55ae422 100644
--- a/app/src/components/layout/sidebarRight/visualization/IotInputCards/FleetEfficiencyInputComponent.tsx
+++ b/app/src/components/layout/sidebarRight/visualization/IotInputCards/FleetEfficiencyInputComponent.tsx
@@ -45,7 +45,7 @@ const FleetEfficiencyInputComponent = (props: Props) => {
         try {
           const response = await axios.get(`http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}/api/v2/A_floatWidget/${selectedChartId.id}/${organization}`);
           if (response.status === 200) {
-            console.log(response.data);
+           
             
             setSelections(response.data.Data.measurements)
             setDuration(response.data.Data.duration)
diff --git a/app/src/components/layout/sidebarRight/visualization/IotInputCards/FlotingWidgetInput.tsx b/app/src/components/layout/sidebarRight/visualization/IotInputCards/FlotingWidgetInput.tsx
index e389802..1164a84 100644
--- a/app/src/components/layout/sidebarRight/visualization/IotInputCards/FlotingWidgetInput.tsx
+++ b/app/src/components/layout/sidebarRight/visualization/IotInputCards/FlotingWidgetInput.tsx
@@ -45,7 +45,7 @@ const FlotingWidgetInput = (props: Props) => {
         try {
           const response = await axios.get(`http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}/api/v2/A_floatWidget/${selectedChartId.id}/${organization}`);
           if (response.status === 200) {
-            console.log(response.data);
+        
             
             setSelections(response.data.Data.measurements)
             setDuration(response.data.Data.duration)
diff --git a/app/src/components/layout/sidebarRight/visualization/IotInputCards/WarehouseThroughputInputComponent.tsx b/app/src/components/layout/sidebarRight/visualization/IotInputCards/WarehouseThroughputInputComponent.tsx
index c35211e..d3ed377 100644
--- a/app/src/components/layout/sidebarRight/visualization/IotInputCards/WarehouseThroughputInputComponent.tsx
+++ b/app/src/components/layout/sidebarRight/visualization/IotInputCards/WarehouseThroughputInputComponent.tsx
@@ -45,7 +45,7 @@ const WarehouseThroughputInputComponent = (props: Props) => {
         try {
           const response = await axios.get(`http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}/api/v2/A_floatWidget/${selectedChartId.id}/${organization}`);
           if (response.status === 200) {
-            console.log(response.data);
+        
             
             setSelections(response.data.Data.measurements)
             setDuration(response.data.Data.duration)
diff --git a/app/src/components/ui/componets/Dropped3dWidget.tsx b/app/src/components/ui/componets/Dropped3dWidget.tsx
index 7885275..567aa7a 100644
--- a/app/src/components/ui/componets/Dropped3dWidget.tsx
+++ b/app/src/components/ui/componets/Dropped3dWidget.tsx
@@ -1,10 +1,6 @@
 import { useThree } from "@react-three/fiber";
 import React, { useEffect, useRef } from "react";
-import {
-  useAsset3dWidget,
-  useSocketStore,
-  useWidgetSubOption,
-} from "../../../store/store";
+import { useAsset3dWidget, useSocketStore, useWidgetSubOption } from "../../../store/store";
 import useModuleStore from "../../../store/useModuleStore";
 import { ThreeState } from "../../../types/world/worldTypes";
 import * as THREE from "three";
@@ -17,391 +13,413 @@ import { generateUniqueId } from "../../../functions/generateUniqueId";
 import { adding3dWidgets } from "../../../services/realTimeVisulization/zoneData/add3dWidget";
 import { get3dWidgetZoneData } from "../../../services/realTimeVisulization/zoneData/get3dWidgetData";
 import { use3DWidget } from "../../../store/useDroppedObjectsStore";
-import {
-  useEditWidgetOptionsStore,
-  useLeftData,
-  useRightClickSelected,
-  useRightSelected,
-  useTopData,
-  useZoneWidgetStore,
-} from "../../../store/useZone3DWidgetStore";
+import { useEditWidgetOptionsStore, useLeftData, useRightClickSelected, useRightSelected, useTopData, useZoneWidgetStore } from "../../../store/useZone3DWidgetStore";
 import { useWidgetStore } from "../../../store/useWidgetStore";
 import EditWidgetOption from "../menu/EditWidgetOption";
+import { delete3dWidgetApi } from "../../../services/realTimeVisulization/zoneData/delete3dWidget";
+import { update3dWidget, update3dWidgetRotation } from "../../../services/realTimeVisulization/zoneData/update3dWidget";
 type WidgetData = {
-  id: string;
-  type: string;
-  position: [number, number, number];
-  rotation?: [number, number, number];
-  tempPosition?: [number, number, number];
+    id: string;
+    type: string;
+    position: [number, number, number];
+    rotation?: [number, number, number];
+    tempPosition?: [number, number, number];
 };
 
+
 export default function Dropped3dWidgets() {
-  const { widgetSelect } = useAsset3dWidget();
-  const { activeModule } = useModuleStore();
-  const { raycaster, gl, scene, mouse, camera }: ThreeState = useThree();
-  const { widgetSubOption } = useWidgetSubOption();
-  const { selectedZone } = useSelectedZoneStore();
-  const { top, setTop } = useTopData();
-  const { left, setLeft } = useLeftData();
-  const { rightSelect, setRightSelect } = useRightSelected();
-  const { setEditWidgetOptions } = useEditWidgetOptionsStore();
+    const { widgetSelect } = useAsset3dWidget();
+    const { activeModule } = useModuleStore();
+    const { raycaster, gl, scene, mouse, camera }: ThreeState = useThree();
+    const { widgetSubOption } = useWidgetSubOption();
+    const { selectedZone } = useSelectedZoneStore();
+    const { top, setTop } = useTopData();
+    const { left, setLeft } = useLeftData();
+    const { rightSelect, setRightSelect } = useRightSelected();
+    const { editWidgetOptions, setEditWidgetOptions } = useEditWidgetOptionsStore()
+    const { zoneWidgetData, setZoneWidgetData, addWidget, updateWidgetPosition, updateWidgetRotation } = useZoneWidgetStore();
+    const { setWidgets3D } = use3DWidget();
+    const { visualizationSocket } = useSocketStore();
+    const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
+    const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0)); // Floor plane for horizontal move
+    const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0)); // Vertical plane for vertical move
+    const planeIntersect = useRef(new THREE.Vector3());
+    // const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);
+    // const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
+    // const planeIntersect = useRef(new THREE.Vector3());
+    const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
+    const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
 
-  const {
-    zoneWidgetData,
-    setZoneWidgetData,
-    addWidget,
-    updateWidgetPosition,
-    updateWidgetRotation,
-  } = useZoneWidgetStore();
-  const { setWidgets3D } = use3DWidget();
-  const { visualizationSocket } = useSocketStore();
-  const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
-  const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0)); // Floor plane for horizontal move
-  const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0)); // Vertical plane for vertical move
-  const planeIntersect = useRef(new THREE.Vector3());
-  // const plane = useRef(new THREE.Plane(new THREE.Vector3(0, 1, 0), 0);
-  // const verticalPlane = useRef(new THREE.Plane(new THREE.Vector3(0, 0, 1), 0);
-  // const planeIntersect = useRef(new THREE.Vector3());
-  const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
-  const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
+    useEffect(() => {
+        if (activeModule !== "visualization") return;
+        if (!selectedZone.zoneId) return;
 
-  useEffect(() => {
-    if (activeModule !== "visualization") return;
-    if (!selectedZone.zoneId) return;
+        const email = localStorage.getItem("email") || "";
+        const organization = email?.split("@")[1]?.split(".")[0];
 
-    const email = localStorage.getItem("email") || "";
-    const organization = email?.split("@")[1]?.split(".")[0];
+        async function get3dWidgetData() {
+            const result = await get3dWidgetZoneData(selectedZone.zoneId, organization);
+            console.log('result: ', result);
+            setWidgets3D(result);
 
-    async function get3dWidgetData() {
-      const result = await get3dWidgetZoneData(
-        selectedZone.zoneId,
-        organization
-      );
-      setWidgets3D(result);
+            const formattedWidgets = result.map((widget: WidgetData) => ({
+                id: widget.id,
+                type: widget.type,
+                position: widget.position,
+                rotation: widget.rotation || [0, 0, 0],
+            }));
 
-      const formattedWidgets = result.map((widget: WidgetData) => ({
-        id: widget.id,
-        type: widget.type,
-        position: widget.position,
-        rotation: widget.rotation || [0, 0, 0],
-      }));
 
-      setZoneWidgetData(selectedZone.zoneId, formattedWidgets);
-    }
-
-    get3dWidgetData();
-  }, [selectedZone.zoneId, activeModule]);
-
-  useEffect(() => {
-    if (activeModule !== "visualization") return;
-    if (widgetSubOption === "Floating" || widgetSubOption === "2D") return;
-    if (selectedZone.zoneName === "") return;
-
-    const canvasElement = gl.domElement;
-
-    const onDrop = async (event: DragEvent) => {
-      event.preventDefault();
-
-      const email = localStorage.getItem("email") || "";
-      const organization = email?.split("@")[1]?.split(".")[0];
-      if (!widgetSelect.startsWith("ui")) return;
-      const group1 = scene.getObjectByName("itemsGroup");
-      if (!group1) return;
-
-      const intersects = raycaster
-        .intersectObjects(scene.children, true)
-        .filter(
-          (intersect) =>
-            !intersect.object.name.includes("Roof") &&
-            !intersect.object.name.includes("agv-collider") &&
-            !intersect.object.name.includes("MeasurementReference") &&
-            !intersect.object.userData.isPathObject &&
-            !(intersect.object.type === "GridHelper")
-        );
-
-      if (intersects.length > 0) {
-        const { x, y, z } = intersects[0].point;
-        const newWidget: WidgetData = {
-          id: generateUniqueId(),
-          type: widgetSelect,
-          position: [x, y, z],
-          rotation: [0, 0, 0],
-        };
-
-        const add3dWidget = {
-          organization: organization,
-          widget: newWidget,
-          zoneId: selectedZone.zoneId,
-        };
-
-        if (visualizationSocket) {
-          visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
+            setZoneWidgetData(selectedZone.zoneId, formattedWidgets);
         }
 
-        addWidget(selectedZone.zoneId, newWidget);
-      }
-    };
+        get3dWidgetData();
+    }, [selectedZone.zoneId, activeModule]);
 
-    canvasElement.addEventListener("drop", onDrop);
-    return () => {
-      canvasElement.removeEventListener("drop", onDrop);
-    };
-  }, [widgetSelect, activeModule, selectedZone.zoneId, widgetSubOption]);
+    useEffect(() => {
+        if (activeModule !== "visualization") return;
+        if (widgetSubOption === "Floating" || widgetSubOption === "2D") return;
+        if (selectedZone.zoneName === "") return;
 
-  const activeZoneWidgets = zoneWidgetData[selectedZone.zoneId] || [];
+        const canvasElement = gl.domElement;
 
-  useEffect(() => {
-    if (!rightClickSelected) return;
-    const email = localStorage.getItem("email") || "";
-    const organization = email?.split("@")[1]?.split(".")[0];
-
-    if (rightSelect === "Duplicate") {
-      const widgetToDuplicate = activeZoneWidgets.find(
-        (w: WidgetData) => w.id === rightClickSelected
-      );
-      if (!widgetToDuplicate) return;
-      const newWidget: WidgetData = {
-        id: generateUniqueId(),
-        type: widgetToDuplicate.type,
-        position: [
-          widgetToDuplicate.position[0] + 0.5,
-          widgetToDuplicate.position[1],
-          widgetToDuplicate.position[2] + 0.5,
-        ],
-        rotation: widgetToDuplicate.rotation || [0, 0, 0],
-      };
-
-      const add3dWidget = {
-        organization,
-        widget: newWidget,
-        zoneId: selectedZone.zoneId,
-      };
-
-      addWidget(selectedZone.zoneId, newWidget);
-      setRightSelect(null);
-      setRightClickSelected(null);
-    }
-
-    if (rightSelect === "Delete") {
-      const deleteWidget = {
-        organization,
-        widgetId: rightClickSelected,
-        zoneId: selectedZone.zoneId,
-      };
-
-      setZoneWidgetData(
-        selectedZone.zoneId,
-        activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
-      );
-      setRightClickSelected(null);
-      setRightSelect(null);
-    }
-  }, [rightSelect, rightClickSelected]);
-
-  useEffect(() => {
-    const handleMouseDown = (event: MouseEvent) => {
-      if (!rightClickSelected || !rightSelect) return;
-
-      if (rightSelect === "RotateX" || rightSelect === "RotateY") {
-        mouseStartRef.current = { x: event.clientX, y: event.clientY };
-
-        const selectedZone = Object.keys(zoneWidgetData).find(
-          (zoneId: string) =>
-            zoneWidgetData[zoneId].some(
-              (widget: WidgetData) => widget.id === rightClickSelected
-            )
-        );
-
-        if (!selectedZone) return;
-
-        const selectedWidget = zoneWidgetData[selectedZone].find(
-          (widget: WidgetData) => widget.id === rightClickSelected
-        );
-        if (selectedWidget) {
-          rotationStartRef.current = selectedWidget.rotation || [0, 0, 0];
-        }
-      }
-    };
-
-    const handleMouseMove = (event: MouseEvent) => {
-      if (!rightClickSelected || !rightSelect) return;
-      const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
-        zoneWidgetData[zoneId].some(
-          (widget: WidgetData) => widget.id === rightClickSelected
-        )
-      );
-      if (!selectedZone) return;
-
-      const selectedWidget = zoneWidgetData[selectedZone].find(
-        (widget: WidgetData) => widget.id === rightClickSelected
-      );
-      if (!selectedWidget) return;
-
-      const rect = gl.domElement.getBoundingClientRect();
-      mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
-      mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
-
-      raycaster.setFromCamera(mouse, camera);
-
-      if (
-        rightSelect === "Horizontal Move" &&
-        raycaster.ray.intersectPlane(plane.current, planeIntersect.current)
-      ) {
-        const newPosition: [number, number, number] = [
-          planeIntersect.current.x,
-          selectedWidget.position[1],
-          planeIntersect.current.z,
-        ];
-        updateWidgetPosition(selectedZone, rightClickSelected, newPosition);
-        console.log("Horizontal Move - Final Position:", newPosition);
-      }
-
-      if (rightSelect === "Vertical Move") {
-        if (
-          raycaster.ray.intersectPlane(
-            verticalPlane.current,
-            planeIntersect.current
-          )
-        ) {
-          updateWidgetPosition(selectedZone, rightClickSelected, [
-            selectedWidget.position[0],
-            planeIntersect.current.y,
-            selectedWidget.position[2],
-          ]);
-        }
-      }
-
-      if (rightSelect === "RotateX") {
-        const deltaX = event.clientX - mouseStartRef.current.x;
-        const rotationSpeed = 0.03;
-        const newRotation: [number, number, number] = [
-          rotationStartRef.current[0] + deltaX * rotationSpeed,
-          rotationStartRef.current[1],
-          rotationStartRef.current[2],
-        ];
-        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-      }
-
-      if (rightSelect === "RotateY") {
-        const deltaY = event.clientY - mouseStartRef.current.y;
-        const rotationSpeed = 0.03;
-        const newRotation: [number, number, number] = [
-          rotationStartRef.current[0],
-          rotationStartRef.current[1] + deltaY * rotationSpeed,
-          rotationStartRef.current[2],
-        ];
-        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-      }
-      if (rightSelect === "RotateZ") {
-        const deltaX = event.movementX;
-        const rotationSpeed = 0.03;
-        const currentRotation = selectedWidget.rotation || [0, 0, 0];
-        const newRotation: [number, number, number] = [
-          currentRotation[0],
-          currentRotation[1],
-          currentRotation[2] + deltaX * rotationSpeed,
-        ];
-        updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
-      }
-    };
-
-    const handleMouseUp = () => {
-      if (
-        rightClickSelected &&
-        (rightSelect === "Horizontal Move" ||
-          rightSelect === "Vertical Move" ||
-          rightSelect === "RotateX" ||
-          rightSelect === "RotateY" ||
-          rightSelect === "RotateZ")
-      ) {
-        setTimeout(() => {
-          setRightClickSelected(null);
-          setRightSelect(null);
-        }, 50);
-      }
-    };
-
-    window.addEventListener("mousedown", handleMouseDown);
-    window.addEventListener("mousemove", handleMouseMove);
-    window.addEventListener("mouseup", handleMouseUp);
-
-    return () => {
-      window.removeEventListener("mousedown", handleMouseDown);
-      window.removeEventListener("mousemove", handleMouseMove);
-      window.removeEventListener("mouseup", handleMouseUp);
-    };
-  }, [rightClickSelected, rightSelect, zoneWidgetData, gl]);
-
-  return (
-    <>
-      {activeZoneWidgets.map(
-        ({ id, type, position, rotation = [0, 0, 0] }: WidgetData) => {
-          const handleRightClick = (event: React.MouseEvent, id: string) => {
+        const onDrop = async (event: DragEvent) => {
             event.preventDefault();
-            const canvasElement = document.getElementById(
-              "real-time-vis-canvas"
+
+            const email = localStorage.getItem("email") || "";
+            const organization = email?.split("@")[1]?.split(".")[0];
+            if (!widgetSelect.startsWith("ui")) return;
+            const group1 = scene.getObjectByName("itemsGroup");
+            if (!group1) return;
+
+            const intersects = raycaster.intersectObjects(scene.children, true).filter(
+                (intersect) =>
+                    !intersect.object.name.includes("Roof") &&
+                    !intersect.object.name.includes("agv-collider") &&
+                    !intersect.object.name.includes("MeasurementReference") &&
+                    !intersect.object.userData.isPathObject &&
+                    !(intersect.object.type === "GridHelper")
             );
-            if (!canvasElement) throw new Error("Canvas element not found");
-            const canvasRect = canvasElement.getBoundingClientRect();
-            const relativeX = event.clientX - canvasRect.left;
-            const relativeY = event.clientY - canvasRect.top;
-            setEditWidgetOptions(true);
-            setRightClickSelected(id);
 
-            setTop(relativeY);
-            setLeft(relativeX);
-          };
+            if (intersects.length > 0) {
+                const { x, y, z } = intersects[0].point;
+                const newWidget: WidgetData = {
+                    id: generateUniqueId(),
+                    type: widgetSelect,
+                    position: [x, y, z],
+                    rotation: [0, 0, 0],
+                };
 
-          switch (type) {
-            case "ui-Widget 1":
-              return (
-                <ProductionCapacity
-                  key={id}
-                  id={id}
-                  type={type}
-                  position={position}
-                  rotation={rotation}
-                  onContextMenu={(e) => handleRightClick(e, id)}
-                />
-              );
-            case "ui-Widget 2":
-              return (
-                <ReturnOfInvestment
-                  key={id}
-                  id={id}
-                  type={type}
-                  position={position}
-                  // rotation={rotation}
-                  onContextMenu={(e) => handleRightClick(e, id)}
-                />
-              );
-            case "ui-Widget 3":
-              return (
-                <StateWorking
-                  key={id}
-                  id={id}
-                  type={type}
-                  position={position}
-                  // rotation={rotation}
-                  onContextMenu={(e) => handleRightClick(e, id)}
-                />
-              );
-            case "ui-Widget 4":
-              return (
-                <Throughput
-                  key={id}
-                  id={id}
-                  type={type}
-                  position={position}
-                  // rotation={rotation}
-                  onContextMenu={(e) => handleRightClick(e, id)}
-                />
-              );
-            default:
-              return null;
-          }
+                const add3dWidget = {
+                    organization: organization,
+                    widget: newWidget,
+                    zoneId: selectedZone.zoneId
+                };
+
+                if (visualizationSocket) {
+                    visualizationSocket.emit("v2:viz-3D-widget:add", add3dWidget);
+                }
+
+                addWidget(selectedZone.zoneId, newWidget);
+            }
+        };
+
+        canvasElement.addEventListener("drop", onDrop);
+        return () => {
+            canvasElement.removeEventListener("drop", onDrop);
+        };
+    }, [widgetSelect, activeModule, selectedZone.zoneId, widgetSubOption]);
+
+    const activeZoneWidgets = zoneWidgetData[selectedZone.zoneId] || [];
+
+    useEffect(() => {
+        if (!rightClickSelected) return;
+        const email = localStorage.getItem("email") || "";
+        const organization = email?.split("@")[1]?.split(".")[0];
+
+        if (rightSelect === "Duplicate") {
+            async function duplicateWidget() {
+
+
+                const widgetToDuplicate = activeZoneWidgets.find((w: WidgetData) => w.id === rightClickSelected);
+                if (!widgetToDuplicate) return;
+                const newWidget: WidgetData = {
+                    id: generateUniqueId(),
+                    type: widgetToDuplicate.type,
+                    position: [
+                        widgetToDuplicate.position[0] + 0.5,
+                        widgetToDuplicate.position[1],
+                        widgetToDuplicate.position[2] + 0.5,
+                    ],
+                    rotation: widgetToDuplicate.rotation || [0, 0, 0],
+                };
+                const adding3dWidget = {
+                    organization,
+                    widget: newWidget,
+                    zoneId: selectedZone.zoneId
+                };
+                let response = await adding3dWidgets(selectedZone.zoneId, organization, newWidget)
+                console.log('response: ', response);
+
+                addWidget(selectedZone.zoneId, newWidget);
+                setRightSelect(null);
+                setRightClickSelected(null);
+            }
+            duplicateWidget()
         }
-      )}
-    </>
-  );
-}
+
+        if (rightSelect === "Delete") {
+            const deleteWidgetApi = async () => {
+                try {
+                    const deleteWidget = {
+                        organization,
+                        widgetId: rightClickSelected,
+                        zoneId: selectedZone.zoneId,
+                    };
+
+                    // Call the API to delete the widget
+                    const response = await delete3dWidgetApi(selectedZone.zoneId, organization, rightClickSelected);
+        
+
+                    // if (response?.success) {
+                    // Remove from state only if API call succeeds
+                    setZoneWidgetData(
+                        selectedZone.zoneId,
+                        activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
+                    );
+                    // } else {
+                    //     console.error("Failed to delete widget:", response?.message);
+                    // }
+                } catch (error) {
+                    console.error("Error deleting widget:", error);
+                } finally {
+                    setRightClickSelected(null);
+                    setRightSelect(null);
+                }
+            };
+
+            deleteWidgetApi();
+        }
+    }, [rightSelect, rightClickSelected]);
+
+    useEffect(() => {
+
+        const email = localStorage.getItem("email") || "";
+        const organization = email?.split("@")[1]?.split(".")[0];
+        const handleMouseDown = (event: MouseEvent) => {
+            if (!rightClickSelected || !rightSelect) return;
+
+            if (rightSelect === "RotateX" || rightSelect === "RotateY") {
+                mouseStartRef.current = { x: event.clientX, y: event.clientY };
+
+                const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
+                    zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
+                );
+
+                if (!selectedZone) return;
+
+                const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
+                if (selectedWidget) {
+                    rotationStartRef.current = selectedWidget.rotation || [0, 0, 0];
+                }
+            }
+        };
+
+        const handleMouseMove = (event: MouseEvent) => {
+            if (!rightClickSelected || !rightSelect) return;
+            const selectedZone = Object.keys(zoneWidgetData).find((zoneId: string) =>
+                zoneWidgetData[zoneId].some((widget: WidgetData) => widget.id === rightClickSelected)
+            );
+            if (!selectedZone) return;
+
+            const selectedWidget = zoneWidgetData[selectedZone].find((widget: WidgetData) => widget.id === rightClickSelected);
+            if (!selectedWidget) return;
+
+            const rect = gl.domElement.getBoundingClientRect();
+            mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;
+            mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;
+
+            raycaster.setFromCamera(mouse, camera);
+
+            if (rightSelect === "Horizontal Move" && raycaster.ray.intersectPlane(plane.current, planeIntersect.current)) {
+                const newPosition: [number, number, number] = [
+                    planeIntersect.current.x,
+                    selectedWidget.position[1],
+                    planeIntersect.current.z
+                ];
+                updateWidgetPosition(selectedZone, rightClickSelected, newPosition);
+
+            }
+
+            if (rightSelect === "Vertical Move") {
+                if (raycaster.ray.intersectPlane(verticalPlane.current, planeIntersect.current)) {
+                    updateWidgetPosition(selectedZone, rightClickSelected, [
+                        selectedWidget.position[0],
+                        planeIntersect.current.y,
+                        selectedWidget.position[2]
+                    ]);
+                }
+            }
+
+            if (rightSelect === "RotateX") {
+                const deltaX = event.clientX - mouseStartRef.current.x;
+                const rotationSpeed = 0.03;
+                const newRotation: [number, number, number] = [
+                    rotationStartRef.current[0] + deltaX * rotationSpeed,
+                    rotationStartRef.current[1],
+                    rotationStartRef.current[2]
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+
+            if (rightSelect === "RotateY") {
+                const deltaY = event.clientY - mouseStartRef.current.y;
+                const rotationSpeed = 0.03;
+                const newRotation: [number, number, number] = [
+                    rotationStartRef.current[0],
+                    rotationStartRef.current[1] + deltaY * rotationSpeed,
+                    rotationStartRef.current[2]
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+            if (rightSelect === "RotateZ") {
+                const deltaX = event.movementX;
+                const rotationSpeed = 0.03;
+                const currentRotation = selectedWidget.rotation || [0, 0, 0];
+                const newRotation: [number, number, number] = [
+                    currentRotation[0],
+                    currentRotation[1],
+                    currentRotation[2] + deltaX * rotationSpeed
+                ];
+                updateWidgetRotation(selectedZone, rightClickSelected, newRotation);
+            }
+
+        };
+
+        const handleMouseUp = () => {
+            if (!rightClickSelected || !rightSelect) return;
+
+            const selectedZone = Object.keys(zoneWidgetData).find(zoneId =>
+                zoneWidgetData[zoneId].some(widget => widget.id === rightClickSelected)
+            );
+
+            if (!selectedZone) return;
+
+            const selectedWidget = zoneWidgetData[selectedZone].find(widget => widget.id === rightClickSelected);
+            if (!selectedWidget) return;
+
+            // Format values to 2 decimal places
+            const formatValues = (vals: number[]) => vals.map(val => parseFloat(val.toFixed(2)));
+
+            if (rightSelect === "Horizontal Move" || rightSelect === "Vertical Move") {
+                console.log(`${rightSelect} Completed - Full Position:`, formatValues(selectedWidget.position));
+                let lastPosition = formatValues(selectedWidget.position) as [number, number, number];
+
+                (async () => {
+                    let response = await update3dWidget(selectedZone, organization, rightClickSelected, lastPosition);
+                    console.log('response: ', response);
+                    if (response) {
+                        console.log("Widget position updated in API:", response);
+                    }
+                })();
+            }
+            else if (rightSelect.includes("Rotate")) {
+                const rotation = selectedWidget.rotation || [0, 0, 0];
+                console.log(`${rightSelect} Completed - Full Rotation:`, formatValues(rotation));
+                let lastPosition = formatValues(rotation) as [number, number, number];
+                console.log('lastPosition: ', lastPosition);
+
+                (async () => {
+                    let response = await update3dWidgetRotation(selectedZone, organization, rightClickSelected, lastPosition);
+                    console.log('response: ', response);
+                    if (response) {
+                        console.log("Widget position updated in API:", response);
+                    }
+                })();
+            }
+
+            // Reset selection
+            setTimeout(() => {
+                setRightClickSelected(null);
+                setRightSelect(null);
+            }, 50);
+        };
+        window.addEventListener("mousedown", handleMouseDown);
+        window.addEventListener("mousemove", handleMouseMove);
+        window.addEventListener("mouseup", handleMouseUp);
+
+        return () => {
+            window.removeEventListener("mousedown", handleMouseDown);
+            window.removeEventListener("mousemove", handleMouseMove);
+            window.removeEventListener("mouseup", handleMouseUp);
+        };
+    }, [rightClickSelected, rightSelect, zoneWidgetData, gl]);
+
+    return (
+        <>
+            {activeZoneWidgets.map(({ id, type, position, rotation = [0, 0, 0] }: WidgetData) => {
+                const handleRightClick = (event: React.MouseEvent, id: string) => {
+                    event.preventDefault();
+                    const canvasElement = document.getElementById("real-time-vis-canvas");
+                    if (!canvasElement) throw new Error("Canvas element not found");
+                    const canvasRect = canvasElement.getBoundingClientRect();
+                    const relativeX = event.clientX - canvasRect.left;
+                    const relativeY = event.clientY - canvasRect.top;
+                    setEditWidgetOptions(true);
+                    setRightClickSelected(id);
+                    setTop(relativeY);
+                    setLeft(relativeX);
+                };
+
+                switch (type) {
+                    case "ui-Widget 1":
+                        return (
+                            <ProductionCapacity
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
+                    case "ui-Widget 2":
+                        return (
+                            <ReturnOfInvestment
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
+                    case "ui-Widget 3":
+                        return (
+                            <StateWorking
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
+                    case "ui-Widget 4":
+                        return (
+                            <Throughput
+                                key={id}
+                                id={id}
+                                type={type}
+                                position={position}
+                                rotation={rotation}
+                                onContextMenu={(e) => handleRightClick(e, id)}
+                            />
+                        );
+                    default:
+                        return null;
+                }
+            })}
+        </>
+    );
+}
\ No newline at end of file
diff --git a/app/src/components/ui/componets/DroppedFloatingWidgets.tsx b/app/src/components/ui/componets/DroppedFloatingWidgets.tsx
index 8cf1f86..465e8e4 100644
--- a/app/src/components/ui/componets/DroppedFloatingWidgets.tsx
+++ b/app/src/components/ui/componets/DroppedFloatingWidgets.tsx
@@ -112,7 +112,7 @@ const DroppedObjects: React.FC = () => {
   const zoneEntries = Object.entries(zones);
   if (zoneEntries.length === 0) return null;
   const [zoneName, zone] = zoneEntries[0];
-  
+
 
   function handleDuplicate(zoneName: string, index: number) {
     setOpenKebabId(null);
@@ -123,14 +123,14 @@ const DroppedObjects: React.FC = () => {
     try {
       const email = localStorage.getItem("email") || "";
       const organization = email?.split("@")[1]?.split(".")[0];
-      
-      
+
+
       let deleteFloatingWidget = {
         floatWidgetID: id,
         organization: organization,
         zoneId: zone.zoneId
       }
-      
+
       if (visualizationSocket) {
         visualizationSocket.emit("v2:viz-float:delete", deleteFloatingWidget)
       }
@@ -143,7 +143,7 @@ const DroppedObjects: React.FC = () => {
       //   deleteObject(zoneName, id, index); // Call the deleteObject method from the store
       // }
     } catch (error) {
-      
+
     }
   }
 
@@ -448,7 +448,7 @@ const DroppedObjects: React.FC = () => {
       //   ...zone.objects[draggingIndex.index],
       //   position: boundedPosition,
       // });
-      
+
 
       let updateFloatingWidget = {
         organization: organization,
@@ -456,7 +456,7 @@ const DroppedObjects: React.FC = () => {
           ...zone.objects[draggingIndex.index],
           position: boundedPosition,
         },
-        index:draggingIndex.index,
+        index: draggingIndex.index,
         zoneId: zone.zoneId
       }
       if (visualizationSocket) {
@@ -464,7 +464,7 @@ const DroppedObjects: React.FC = () => {
       }
 
       // if (response.message === "Widget updated successfully") {
-        
+
       console.log('boundedPosition: ', boundedPosition);
       updateObjectPosition(zoneName, draggingIndex.index, boundedPosition);
       // }
@@ -479,7 +479,7 @@ const DroppedObjects: React.FC = () => {
       //   animationRef.current = null;
       // }
     } catch (error) {
-      
+
     } finally {
       // Clean up regardless of success or failure
       setDraggingIndex(null);
@@ -509,43 +509,37 @@ const DroppedObjects: React.FC = () => {
       {zone.objects.map((obj, index) => (
         <div
           key={`${zoneName}-${index}`}
-          className={`${obj.className} ${
-            selectedChartId?.id === obj.id && "activeChart"
-          }`}
+          className={`${obj.className} ${selectedChartId?.id === obj.id && "activeChart"}`}
           ref={chartWidget}
           style={{
             position: "absolute",
             top:
               typeof obj.position.top === "number"
-                ? `calc(${obj.position.top}px + ${
-                    isPlaying && selectedZone.activeSides.includes("top")
-                      ? 90
-                      : 0
-                  }px)`
+                ? `calc(${obj.position.top}px + ${isPlaying && selectedZone.activeSides.includes("top")
+                  ? 90
+                  : 0
+                }px)`
                 : "auto",
             left:
               typeof obj.position.left === "number"
-                ? `calc(${obj.position.left}px + ${
-                    isPlaying && selectedZone.activeSides.includes("left")
-                      ? 90
-                      : 0
-                  }px)`
+                ? `calc(${obj.position.left}px + ${isPlaying && selectedZone.activeSides.includes("left")
+                  ? 90
+                  : 0
+                }px)`
                 : "auto",
             right:
               typeof obj.position.right === "number"
-                ? `calc(${obj.position.right}px + ${
-                    isPlaying && selectedZone.activeSides.includes("right")
-                      ? 90
-                      : 0
-                  }px)`
+                ? `calc(${obj.position.right}px + ${isPlaying && selectedZone.activeSides.includes("right")
+                  ? 90
+                  : 0
+                }px)`
                 : "auto",
             bottom:
               typeof obj.position.bottom === "number"
-                ? `calc(${obj.position.bottom}px + ${
-                    isPlaying && selectedZone.activeSides.includes("bottom")
-                      ? 90
-                      : 0
-                  }px)`
+                ? `calc(${obj.position.bottom}px + ${isPlaying && selectedZone.activeSides.includes("bottom")
+                  ? 90
+                  : 0
+                }px)`
                 : "auto",
           }}
           onPointerDown={(event) => {
@@ -559,7 +553,7 @@ const DroppedObjects: React.FC = () => {
             </>
           ) : obj.className === "warehouseThroughput floating" ? (
             <>
-              <WarehouseThroughputComponent object={obj}/>
+              <WarehouseThroughputComponent object={obj} />
             </>
           ) : obj.className === "fleetEfficiency floating" ? (
             <>
diff --git a/app/src/components/ui/componets/RealTimeVisulization.tsx b/app/src/components/ui/componets/RealTimeVisulization.tsx
index 4b8d7c8..5a47964 100644
--- a/app/src/components/ui/componets/RealTimeVisulization.tsx
+++ b/app/src/components/ui/componets/RealTimeVisulization.tsx
@@ -23,11 +23,8 @@ import RenderOverlay from "../../templates/Overlay";
 import ConfirmationPopup from "../../layout/confirmationPopup/ConfirmationPopup";
 import DroppedObjects from "./DroppedFloatingWidgets";
 import EditWidgetOption from "../menu/EditWidgetOption";
-import {
-  useRightClickSelected,
-  useRightSelected,
-  useEditWidgetOptionsStore,
-} from "../../../store/useZone3DWidgetStore";
+import { useEditWidgetOptionsStore, useRightClickSelected, useRightSelected } from "../../../store/useZone3DWidgetStore";
+
 
 type Side = "top" | "bottom" | "left" | "right";
 
@@ -60,9 +57,11 @@ const RealTimeVisulization: React.FC = () => {
   const [droppedObjects, setDroppedObjects] = useState<any[]>([]);
   const [zonesData, setZonesData] = useState<FormattedZoneData>({});
   const { selectedZone, setSelectedZone } = useSelectedZoneStore();
-  
-  const { editWidgetOptions, setEditWidgetOptions } = useEditWidgetOptionsStore();
-  const { rightClickSelected, setRightClickSelected } = useRightClickSelected();
+
+
+  const { rightSelect, setRightSelect } = useRightSelected()
+  const { editWidgetOptions, setEditWidgetOptions } = useEditWidgetOptionsStore()
+  const { rightClickSelected, setRightClickSelected } = useRightClickSelected()
   const [openConfirmationPopup, setOpenConfirmationPopup] = useState(false);
 
   const [floatingWidgets, setFloatingWidgets] = useState<
@@ -71,7 +70,7 @@ const RealTimeVisulization: React.FC = () => {
   const { widgetSelect, setWidgetSelect } = useAsset3dWidget();
   const { widgetSubOption, setWidgetSubOption } = useWidgetSubOption();
   const { visualizationSocket } = useSocketStore();
-  const { setRightSelect } = useRightSelected();
+
 
   useEffect(() => {
     async function GetZoneData() {
@@ -100,7 +99,7 @@ const RealTimeVisulization: React.FC = () => {
           {}
         );
         setZonesData(formattedData);
-      } catch (error) {}
+      } catch (error) { }
     }
 
     GetZoneData();
@@ -198,8 +197,27 @@ const RealTimeVisulization: React.FC = () => {
           ],
         },
       }));
-    } catch (error) {}
+    } catch (error) { }
   };
+  useEffect(() => {
+    const handleClickOutside = (event: MouseEvent) => {
+      const editWidgetOptions = document.querySelector(
+        ".editWidgetOptions-wrapper"
+      );
+      if (
+        editWidgetOptions &&
+        !editWidgetOptions.contains(event.target as Node)
+      ) {
+        setRightClickSelected(null);
+        setRightSelect(null);
+      }
+    };
+
+    document.addEventListener("mousedown", handleClickOutside);
+    return () => {
+      document.removeEventListener("mousedown", handleClickOutside);
+    };
+  }, [setRightClickSelected]);
 
   // Add this useEffect hook to your component
   useEffect(() => {
@@ -264,14 +282,12 @@ const RealTimeVisulization: React.FC = () => {
         editWidgetOptions &&
         rightClickSelected && (
           <EditWidgetOption
-            setWidgetSelect={setWidgetSelect}
             options={[
               "Duplicate",
               "Vertical Move",
               "Horizontal Move",
               "RotateX",
               "RotateY",
-              "RotateZ",
               "Delete",
             ]}
           />
diff --git a/app/src/components/ui/menu/EditWidgetOption.tsx b/app/src/components/ui/menu/EditWidgetOption.tsx
index f1d6263..1c1fa2e 100644
--- a/app/src/components/ui/menu/EditWidgetOption.tsx
+++ b/app/src/components/ui/menu/EditWidgetOption.tsx
@@ -8,22 +8,19 @@ import {
 } from "../../../store/useZone3DWidgetStore";
 
 interface EditWidgetOptionProps {
-  setWidgetSelect: any;
   options: string[];
 }
 
 const EditWidgetOption: React.FC<EditWidgetOptionProps> = ({
-  setWidgetSelect,
   options,
 }) => {
-  const { top, setTop } = useTopData();
-  const { left, setLeft } = useLeftData();
-  const { rightSelect, setRightSelect } = useRightSelected();
+  const { top } = useTopData();
+  const { left } = useLeftData();
+  const { setRightSelect } = useRightSelected();
   const { setEditWidgetOptions } = useEditWidgetOptionsStore();
 
   useEffect(() => {
-    console.log("left: ", left);
-    console.log("top: ", top);
+
   }, [top, left]);
 
   return (
diff --git a/app/src/components/ui/realTimeVis/charts/BarGraphComponent.tsx b/app/src/components/ui/realTimeVis/charts/BarGraphComponent.tsx
index 4876fe4..f6589a2 100644
--- a/app/src/components/ui/realTimeVis/charts/BarGraphComponent.tsx
+++ b/app/src/components/ui/realTimeVis/charts/BarGraphComponent.tsx
@@ -238,7 +238,7 @@ const BarGraphComponent = ({
   };
 
   useEffect(() => {
-    console.log("titleeeeeeeeeeeeeeeeeee",title);
+    
   },[])
 
   // Memoize Theme Colors
diff --git a/app/src/components/ui/realTimeVis/charts/DoughnutGraphComponent.tsx b/app/src/components/ui/realTimeVis/charts/DoughnutGraphComponent.tsx
index 6eec49e..93c2960 100644
--- a/app/src/components/ui/realTimeVis/charts/DoughnutGraphComponent.tsx
+++ b/app/src/components/ui/realTimeVis/charts/DoughnutGraphComponent.tsx
@@ -51,7 +51,7 @@ const DoughnutGraphComponent = ({
   };
 
   useEffect(() => {
-    console.log("titleeeeeeeeeeeeeeeeeee",title);
+   
   },[])
 
   // Memoize Theme Colors
diff --git a/app/src/components/ui/realTimeVis/charts/LineGraphComponent.tsx b/app/src/components/ui/realTimeVis/charts/LineGraphComponent.tsx
index bf76add..c7f7252 100644
--- a/app/src/components/ui/realTimeVis/charts/LineGraphComponent.tsx
+++ b/app/src/components/ui/realTimeVis/charts/LineGraphComponent.tsx
@@ -51,7 +51,7 @@ const LineGraphComponent = ({
   };
 
   useEffect(() => {
-    console.log("titleeeeeeeeeeeeeeeeeee",title);
+  
   },[])
 
   // Memoize Theme Colors
diff --git a/app/src/components/ui/realTimeVis/charts/PieGraphComponent.tsx b/app/src/components/ui/realTimeVis/charts/PieGraphComponent.tsx
index 094b9e7..d7cc0da 100644
--- a/app/src/components/ui/realTimeVis/charts/PieGraphComponent.tsx
+++ b/app/src/components/ui/realTimeVis/charts/PieGraphComponent.tsx
@@ -237,7 +237,7 @@ const PieChartComponent = ({
   };
 
   useEffect(() => {
-    console.log("titleeeeeeeeeeeeeeeeeee",title);
+  
   },[])
 
   // Memoize Theme Colors
diff --git a/app/src/components/ui/realTimeVis/charts/PolarAreaGraphComponent.tsx b/app/src/components/ui/realTimeVis/charts/PolarAreaGraphComponent.tsx
index 92581c0..fb87080 100644
--- a/app/src/components/ui/realTimeVis/charts/PolarAreaGraphComponent.tsx
+++ b/app/src/components/ui/realTimeVis/charts/PolarAreaGraphComponent.tsx
@@ -51,7 +51,7 @@ const PolarAreaGraphComponent = ({
   };
 
   useEffect(() => {
-    console.log("titleeeeeeeeeeeeeeeeeee",title);
+
   },[])
 
   // Memoize Theme Colors
diff --git a/app/src/services/realTimeVisulization/zoneData/add3dWidget.ts b/app/src/services/realTimeVisulization/zoneData/add3dWidget.ts
index 82562b7..401a5bf 100644
--- a/app/src/services/realTimeVisulization/zoneData/add3dWidget.ts
+++ b/app/src/services/realTimeVisulization/zoneData/add3dWidget.ts
@@ -5,9 +5,6 @@ export const adding3dWidgets = async (
   organization: string,
   widget: {}
 ) => {
-    console.log('widget: ', widget);
-    console.log('organization: ', organization);
-    console.log('zoneId: ', zoneId);
   try {
     const response = await fetch(
       `${url_Backend_dwinzo}/api/v2/3dwidget/save`,
diff --git a/app/src/services/realTimeVisulization/zoneData/delete3dWidget.ts b/app/src/services/realTimeVisulization/zoneData/delete3dWidget.ts
new file mode 100644
index 0000000..fe868f1
--- /dev/null
+++ b/app/src/services/realTimeVisulization/zoneData/delete3dWidget.ts
@@ -0,0 +1,38 @@
+let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`;
+// let url_Backend_dwinzo = `http://192.168.0.102:5000`;
+
+export const delete3dWidgetApi = async (
+  zoneId: string,
+  organization: string,
+  id: string
+) => {
+  console.log("zoneId: ", zoneId);
+  console.log("organization: ", organization);
+  console.log("id: ", id);
+
+  try {
+    const response = await fetch(
+      `${url_Backend_dwinzo}/api/v2/widget3D/delete`,
+      {
+        method: "PATCH",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        body: JSON.stringify({ organization, zoneId, id }),
+      }
+    );
+
+    if (!response.ok) {
+      throw new Error("Failed to delete floating widget in the zone");
+    }
+
+    const result = await response.json();
+    return result;
+  } catch (error) {
+    if (error instanceof Error) {
+      throw new Error(error.message);
+    } else {
+      throw new Error("An unknown error occurred");
+    }
+  }
+};
diff --git a/app/src/services/realTimeVisulization/zoneData/update3dWidget.ts b/app/src/services/realTimeVisulization/zoneData/update3dWidget.ts
new file mode 100644
index 0000000..553fc68
--- /dev/null
+++ b/app/src/services/realTimeVisulization/zoneData/update3dWidget.ts
@@ -0,0 +1,81 @@
+let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`;
+// let url_Backend_dwinzo = `http://192.168.0.102:5000`;
+export const update3dWidget = async (
+    zoneId: string,
+    organization: string,
+    id: string,
+    position?: [number, number, number]
+) => {
+    console.log("organization: ", organization);
+    console.log("zoneId: ", zoneId);
+    try {
+        const response = await fetch(
+            `${url_Backend_dwinzo}/api/v2/modifyPR/widget3D`,
+            {
+                method: "PATCH",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                body: JSON.stringify({
+                    organization,
+                    zoneId,
+                    id,
+                    position,
+                }),
+            }
+        );
+
+        if (!response.ok) {
+            throw new Error("Failed to add 3dwidget in the zone");
+        }
+
+        const result = await response.json();
+        return result;
+    } catch (error) {
+        if (error instanceof Error) {
+            throw new Error(error.message);
+        } else {
+            throw new Error("An unknown error occurred");
+        }
+    }
+};
+
+export const update3dWidgetRotation = async (
+    zoneId: string,
+    organization: string,
+    id: string,
+    rotation?: [number, number, number]
+) => {
+    console.log("organization: ", organization);
+    console.log("zoneId: ", zoneId);
+    try {
+        const response = await fetch(
+            `${url_Backend_dwinzo}/api/v2/modifyPR/widget3D`,
+            {
+                method: "PATCH",
+                headers: {
+                    "Content-Type": "application/json",
+                },
+                body: JSON.stringify({
+                    organization,
+                    zoneId,
+                    id,
+                    rotation,
+                }),
+            }
+        );
+
+        if (!response.ok) {
+            throw new Error("Failed to add 3dwidget in the zone");
+        }
+
+        const result = await response.json();
+        return result;
+    } catch (error) {
+        if (error instanceof Error) {
+            throw new Error(error.message);
+        } else {
+            throw new Error("An unknown error occurred");
+        }
+    }
+};
diff --git a/app/src/store/useZone3DWidgetStore.ts b/app/src/store/useZone3DWidgetStore.ts
index 425674f..7dcaaeb 100644
--- a/app/src/store/useZone3DWidgetStore.ts
+++ b/app/src/store/useZone3DWidgetStore.ts
@@ -97,7 +97,6 @@ export const useRightSelected = create<RightSelectStore>((set) => ({
   setRightSelect: (x) => set({ rightSelect: x }),
 }));
 
-
 interface EditWidgetOptionsStore {
   editWidgetOptions: boolean;
   setEditWidgetOptions: (value: boolean) => void;

From e92345d820b2f6a5469a15b591f4a5df419b73a2 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 10:12:28 +0530
Subject: [PATCH 09/17] Refactor simulation paths to simulation states

- Updated all instances of `simulationPaths` to `simulationStates` across multiple components including copyPasteControls, duplicationControls, moveControls, rotateControls, selectionControls, and others.
- Adjusted related state management hooks in the store to reflect the change from `simulationPaths` to `simulationStates`.
- Ensured that all references to simulation paths in the simulation logic and UI components are consistent with the new naming convention.
---
 .../mechanics/ConveyorMechanics.tsx           |  60 ++---
 .../mechanics/VehicleMechanics.tsx            |  20 +-
 app/src/components/ui/list/List.tsx           |   1 -
 app/src/modules/builder/agv/agv.tsx           | 228 ++++++------------
 .../geomentries/assets/addAssetModel.ts       |  14 +-
 .../geomentries/assets/deleteFloorItems.ts    |   4 +-
 .../builder/groups/floorItemsGroup.tsx        |  12 +-
 .../scene/IntialLoad/loadInitialFloorItems.ts |  20 +-
 .../controls/selection/copyPasteControls.tsx  |  10 +-
 .../selection/duplicationControls.tsx         |  10 +-
 .../scene/controls/selection/moveControls.tsx |  10 +-
 .../controls/selection/rotateControls.tsx     |  10 +-
 .../controls/selection/selectionControls.tsx  |   6 +-
 .../simulation/behaviour/behaviour.tsx        |   6 +-
 .../modules/simulation/path/pathConnector.tsx |  34 +--
 .../modules/simulation/path/pathCreation.tsx  |  16 +-
 .../simulation/process/processCreator.tsx     |  20 +-
 app/src/modules/simulation/simulation.tsx     |   8 +-
 app/src/modules/simulation/simulationUI.tsx   |  56 ++---
 .../simulationtemp/path/pathCreator.tsx       |  28 +--
 .../simulation/simulationtemp/simulation.tsx  |   6 +-
 app/src/store/store.ts                        |  14 +-
 22 files changed, 260 insertions(+), 333 deletions(-)

diff --git a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
index 8ad0886..fd64db9 100644
--- a/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/ConveyorMechanics.tsx
@@ -13,7 +13,7 @@ import {
   useFloorItems,
   useSelectedActionSphere,
   useSelectedPath,
-  useSimulationPaths,
+  useSimulationStates,
   useSocketStore,
 } from "../../../../store/store";
 import * as THREE from "three";
@@ -25,7 +25,7 @@ import { setEventApi } from "../../../../services/factoryBuilder/assest/floorAss
 const ConveyorMechanics: React.FC = () => {
   const { selectedActionSphere } = useSelectedActionSphere();
   const { selectedPath, setSelectedPath } = useSelectedPath();
-  const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+  const { simulationStates, setSimulationStates } = useSimulationStates();
   const { floorItems, setFloorItems } = useFloorItems();
   const { socket } = useSocketStore();
 
@@ -34,13 +34,13 @@ const ConveyorMechanics: React.FC = () => {
 
   const selectedPoint = useMemo(() => {
     if (!selectedActionSphere) return null;
-    return simulationPaths
+    return simulationStates
       .filter(
         (path): path is Types.ConveyorEventsSchema => path.type === "Conveyor"
       )
       .flatMap((path) => path.points)
       .find((point) => point.uuid === selectedActionSphere.points.uuid);
-  }, [selectedActionSphere, simulationPaths]);
+  }, [selectedActionSphere, simulationStates]);
 
   const updateBackend = async (updatedPath: Types.ConveyorEventsSchema | undefined) => {
     if (!updatedPath) return;
@@ -66,7 +66,7 @@ const ConveyorMechanics: React.FC = () => {
   const handleAddAction = () => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) => {
+    const updatedPaths = simulationStates.map((path) => {
       if (path.type === "Conveyor") {
         return {
           ...path,
@@ -101,13 +101,13 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleDeleteAction = (uuid: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -134,13 +134,13 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleActionSelect = (uuid: string, actionType: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -182,7 +182,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Update the selected item to reflect changes
     if (selectedItem?.type === "action" && selectedItem.item.uuid === uuid) {
@@ -207,7 +207,7 @@ const ConveyorMechanics: React.FC = () => {
   const handleMaterialSelect = (uuid: string, material: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -237,7 +237,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Update selected item if it's the current action
     if (selectedItem?.type === "action" && selectedItem.item.uuid === uuid) {
@@ -254,7 +254,7 @@ const ConveyorMechanics: React.FC = () => {
   const handleDelayChange = (uuid: string, delay: number | string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -281,7 +281,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleSpawnIntervalChange = (
@@ -290,7 +290,7 @@ const ConveyorMechanics: React.FC = () => {
   ) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -319,13 +319,13 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleSpeedChange = (speed: number | string) => {
     if (!selectedPath) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.modeluuid === selectedPath.path.modeluuid ? { ...path, speed } : path
     );
 
@@ -338,14 +338,14 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
     setSelectedPath({ ...selectedPath, path: { ...selectedPath.path, speed } });
   };
 
   const handleAddTrigger = () => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -377,13 +377,13 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleDeleteTrigger = (uuid: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -410,13 +410,13 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   const handleTriggerSelect = (uuid: string, triggerType: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -445,7 +445,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Ensure the selectedItem is updated immediately
     const updatedTrigger = updatedPaths
@@ -461,7 +461,7 @@ const ConveyorMechanics: React.FC = () => {
   // Update the toggle handlers to immediately update the selected item
   const handleActionToggle = (uuid: string) => {
     if (!selectedActionSphere) return;
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -489,7 +489,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Immediately update the selected item if it's the one being toggled
     if (selectedItem?.type === "action" && selectedItem.item.uuid === uuid) {
@@ -507,7 +507,7 @@ const ConveyorMechanics: React.FC = () => {
   const handleTriggerToggle = (uuid: string) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -535,7 +535,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Immediately update the selected item if it's the one being toggled
     if (selectedItem?.type === "trigger" && selectedItem.item.uuid === uuid) {
@@ -552,7 +552,7 @@ const ConveyorMechanics: React.FC = () => {
   const handleTriggerBufferTimeChange = (uuid: string, bufferTime: number) => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) =>
+    const updatedPaths = simulationStates.map((path) =>
       path.type === "Conveyor"
         ? {
           ...path,
@@ -581,7 +581,7 @@ const ConveyorMechanics: React.FC = () => {
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
 
     // Immediately update selectedItem if it's the currently selected trigger
     if (selectedItem?.type === "trigger" && selectedItem.item.uuid === uuid) {
diff --git a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
index e9bd6a2..4db77fe 100644
--- a/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
+++ b/app/src/components/layout/sidebarRight/mechanics/VehicleMechanics.tsx
@@ -1,14 +1,14 @@
 import React, { useRef, useMemo } from "react";
 import { InfoIcon } from "../../../icons/ExportCommonIcons";
 import InputWithDropDown from "../../../ui/inputs/InputWithDropDown";
-import { useEditingPoint, useEyeDropMode, usePreviewPosition, useSelectedActionSphere, useSimulationPaths, useSocketStore } from "../../../../store/store";
+import { useEditingPoint, useEyeDropMode, usePreviewPosition, useSelectedActionSphere, useSimulationStates, useSocketStore } from "../../../../store/store";
 import * as Types from '../../../../types/world/worldTypes';
 import PositionInput from "../customInput/PositionInputs";
 import { setEventApi } from "../../../../services/factoryBuilder/assest/floorAsset/setEventsApt";
 
 const VehicleMechanics: React.FC = () => {
     const { selectedActionSphere } = useSelectedActionSphere();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const { eyeDropMode, setEyeDropMode } = useEyeDropMode();
     const { editingPoint, setEditingPoint } = useEditingPoint();
     const { previewPosition, setPreviewPosition } = usePreviewPosition();
@@ -19,7 +19,7 @@ const VehicleMechanics: React.FC = () => {
     const { selectedPoint, connectedPointUuids } = useMemo(() => {
         if (!selectedActionSphere?.points?.uuid) return { selectedPoint: null, connectedPointUuids: [] };
 
-        const vehiclePaths = simulationPaths.filter(
+        const vehiclePaths = simulationStates.filter(
             (path): path is Types.VehicleEventsSchema => path.type === "Vehicle"
         );
 
@@ -40,7 +40,7 @@ const VehicleMechanics: React.FC = () => {
             selectedPoint: points,
             connectedPointUuids: connectedUuids
         };
-    }, [selectedActionSphere, simulationPaths]);
+    }, [selectedActionSphere, simulationStates]);
 
     const updateBackend = async (updatedPath: Types.VehicleEventsSchema | undefined) => {
         if (!updatedPath) return;
@@ -66,7 +66,7 @@ const VehicleMechanics: React.FC = () => {
     const handleActionUpdate = React.useCallback((updatedAction: Partial<Types.VehicleEventsSchema['points']['actions']>) => {
         if (!selectedActionSphere?.points?.uuid) return;
 
-        const updatedPaths = simulationPaths.map((path) => {
+        const updatedPaths = simulationStates.map((path) => {
             if (path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid) {
                 return {
                     ...path,
@@ -89,8 +89,8 @@ const VehicleMechanics: React.FC = () => {
         );
         updateBackend(updatedPath);
 
-        setSimulationPaths(updatedPaths);
-    }, [selectedActionSphere?.points?.uuid, simulationPaths, setSimulationPaths]);
+        setSimulationStates(updatedPaths);
+    }, [selectedActionSphere?.points?.uuid, simulationStates, setSimulationStates]);
 
     const handleHitCountChange = React.useCallback((hitCount: number) => {
         handleActionUpdate({ hitCount });
@@ -103,7 +103,7 @@ const VehicleMechanics: React.FC = () => {
     const handleSpeedChange = React.useCallback((speed: number) => {
         if (!selectedActionSphere?.points?.uuid) return;
 
-        const updatedPaths = simulationPaths.map((path) => {
+        const updatedPaths = simulationStates.map((path) => {
             if (path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid) {
                 return {
                     ...path,
@@ -123,8 +123,8 @@ const VehicleMechanics: React.FC = () => {
         );
         updateBackend(updatedPath);
 
-        setSimulationPaths(updatedPaths);
-    }, [selectedActionSphere?.points?.uuid, simulationPaths, setSimulationPaths]);
+        setSimulationStates(updatedPaths);
+    }, [selectedActionSphere?.points?.uuid, simulationStates, setSimulationStates]);
 
     const handleStartEyeDropClick = () => {
         setEditingPoint('start');
diff --git a/app/src/components/ui/list/List.tsx b/app/src/components/ui/list/List.tsx
index 7629730..000bc20 100644
--- a/app/src/components/ui/list/List.tsx
+++ b/app/src/components/ui/list/List.tsx
@@ -31,7 +31,6 @@ interface ListProps {
 }
 
 const List: React.FC<ListProps> = ({ items = [], remove }) => {
-  console.log("items: ", items);
   const { activeModule, setActiveModule } = useModuleStore();
   const { selectedZone, setSelectedZone } = useSelectedZoneStore();
   const { setSubModule } = useSubModuleStore();
diff --git a/app/src/modules/builder/agv/agv.tsx b/app/src/modules/builder/agv/agv.tsx
index 24003ea..ad8fcd5 100644
--- a/app/src/modules/builder/agv/agv.tsx
+++ b/app/src/modules/builder/agv/agv.tsx
@@ -1,163 +1,91 @@
+import { useEffect, useRef, useState } from "react";
+import { useSimulationStates } from "../../../store/store";
 import PolygonGenerator from "./polygonGenerator";
-import { useThree } from "@react-three/fiber";
-import { useEffect, useMemo, useRef, useState } from "react";
-import * as THREE from "three";
-import * as Types from "../../../types/world/worldTypes";
 import PathNavigator from "./pathNavigator";
 import NavMeshDetails from "./navMeshDetails";
-import {
-  useSelectedActionSphere,
-  useSimulationPaths,
-} from "../../../store/store";
 import * as CONSTANTS from "../../../types/world/worldConstants";
+import * as Types from "../../../types/world/worldTypes";
 
-const Agv = ({
-  lines,
-}: {
-  lines: Types.RefLines;
-}) => {
-  const [pathPoints, setPathPoints] = useState<
-    {
-      modelUuid: string;
-      modelSpeed: number;
-      bufferTime: number;
-      points: { x: number; y: number; z: number }[];
-      hitCount: number;
-    }[]
-  >([]);
-  const { simulationPaths } = useSimulationPaths();
-  const { selectedActionSphere } = useSelectedActionSphere();
-  useEffect(() => {
-    if (!Array.isArray(simulationPaths)) {
-    } else {
-      let agvModels = simulationPaths.filter(
-        (val: any) => val.modelName === "agv"
-      );
+type AgvProps = {
+	lines: Types.RefLines
+};
 
-      
-      let findMesh = agvModels.filter(
-        (val: any) =>
-          val.modeluuid === selectedActionSphere?.path?.modeluuid &&
-          val.type === "Vehicle"
-      );
+type PathPoints = {
+	modelUuid: string;
+	modelSpeed: number;
+	bufferTime: number;
+	points: { x: number; y: number; z: number }[];
+	hitCount: number;
+};
 
-      const result =
-        findMesh.length > 0 &&
-          findMesh[0].type === "Vehicle" &&
-          typeof findMesh[0].points?.actions.start === "object" &&
-          typeof findMesh[0].points?.actions.end === "object" &&
-          "x" in findMesh[0].points.actions.start &&
-          "y" in findMesh[0].points.actions.start &&
-          "x" in findMesh[0].points.actions.end &&
-          "y" in findMesh[0].points.actions.end
-          ? [
-              {
-                modelUuid: findMesh[0].modeluuid, // Ensure it's a number
-                modelSpeed: findMesh[0].points.speed,
-                bufferTime: findMesh[0].points.actions.buffer,
-                hitCount: findMesh[0].points.actions.hitCount,
-                points: [
-                  {
-                    x: findMesh[0].position[0],
-                    y: findMesh[0].position[1],
-                    z: findMesh[0].position[2],
-                  },
-                  {
-                    x: findMesh[0].points.actions.start.x,
-                    y: 0,
-                    z: findMesh[0].points.actions.start.y,
-                  },
-                  {
-                    x: findMesh[0].points.actions.end.x,
-                    y: 0,
-                    z: findMesh[0].points.actions.end.y,
-                  },
-                ],
-              },
-            ]
-          : [];
-      if (result.length > 0) {
-        // setPathPoints((prev) => [...prev, ...result]);
-        setPathPoints((prev) => {
-          const existingIndex = prev.findIndex(
-            (item) => item.modelUuid === result[0].modelUuid
-          );
+const Agv = ({ lines }: AgvProps) => {
 
-          if (existingIndex !== -1) {
-            const updatedPathPoints = [...prev];
-            updatedPathPoints[existingIndex] = result[0];
-            return updatedPathPoints;
-          } else {
-            return [...prev, ...result];
-          }
-        });
-      }
-    }
-    // setPathPoints((prev) => {
-    //   const existingUUIDs = new Set(prev.map((item) => item.uuid));
-    //   const newItems = result.filter(
-    //     (item) => !existingUUIDs.has(item.uuid)
-    //   );
-    //   return [...prev, ...newItems];
-    // });
-  }, [simulationPaths, selectedActionSphere]);
+	let groupRef = useRef() as Types.RefGroup;
+	const [pathPoints, setPathPoints] = useState<PathPoints[]>([]);
+	const { simulationStates } = useSimulationStates();
+	const [navMesh, setNavMesh] = useState();
 
-  let groupRef = useRef() as Types.RefGroup;
-  const [navMesh, setNavMesh] = useState();
+	useEffect(() => {
+		if (simulationStates.length > 0) {
 
-  return (
-    <>
-      <PolygonGenerator groupRef={groupRef} lines={lines} />
-      <NavMeshDetails
-        lines={lines}
-        setNavMesh={setNavMesh}
-        groupRef={groupRef}
-      />
-      {pathPoints.map((pair, i) => (
-        <>
-          <PathNavigator
-            navMesh={navMesh}
-            selectedPoints={pair.points}
-            id={pair.modelUuid}
-            key={i}
-            speed={pair.modelSpeed}
-            bufferTime={pair.bufferTime}
-            hitCount={pair.hitCount}
-          />
-          {/* {pair.points.length > 2 && (
-            <>
-              <mesh
-                position={[
-                  pair.points[1].x,
-                  pair.points[1].y,
-                  pair.points[1].z,
-                ]}
-              >
-                <sphereGeometry args={[0.3, 15, 15]} />
-                <meshStandardMaterial color="red" />
-              </mesh>
-              <mesh
-                position={[
-                  pair.points[2].x,
-                  pair.points[2].y,
-                  pair.points[2].z,
-                ]}
-              >
-                <sphereGeometry args={[0.3, 15, 15]} />
-                <meshStandardMaterial color="red" />
-              </mesh>
-            </>
-          )} */}
-        </>
-      ))}
-      <group ref={groupRef} visible={false} name="Meshes">
-        <mesh rotation-x={CONSTANTS.planeConfig.rotation} position={CONSTANTS.planeConfig.position3D} name="Plane" receiveShadow>
-          <planeGeometry args={[300, 300]} />
-          <meshBasicMaterial color={CONSTANTS.planeConfig.color} />
-        </mesh>
-      </group>
-    </>
-  );
+			const agvModels = simulationStates.filter((val) => val.modelName === "agv" && val.type === "Vehicle");
+
+			const newPathPoints = agvModels.filter((model: any) => model.points && model.points.actions && typeof model.points.actions.start === "object" && typeof model.points.actions.end === "object" && "x" in model.points.actions.start && "y" in model.points.actions.start && "x" in model.points.actions.end && "y" in model.points.actions.end)
+				.map((model: any) => ({
+					modelUuid: model.modeluuid,
+					modelSpeed: model.points.speed,
+					bufferTime: model.points.actions.buffer,
+					hitCount: model.points.actions.hitCount,
+					points: [
+						{ x: model.position[0], y: model.position[1], z: model.position[2], },
+						{ x: model.points.actions.start.x, y: 0, z: model.points.actions.start.y, },
+						{ x: model.points.actions.end.x, y: 0, z: model.points.actions.end.y, },
+					],
+				}));
+
+			setPathPoints(newPathPoints);
+		}
+	}, [simulationStates]);
+
+	return (
+		<>
+
+			<PolygonGenerator groupRef={groupRef} lines={lines} />
+			<NavMeshDetails lines={lines} setNavMesh={setNavMesh} groupRef={groupRef} />
+
+			{pathPoints.map((pair, i) => (
+				<PathNavigator
+					navMesh={navMesh}
+					selectedPoints={pair.points}
+					id={pair.modelUuid}
+					key={i}
+					speed={pair.modelSpeed}
+					bufferTime={pair.bufferTime}
+					hitCount={pair.hitCount}
+				/>
+			))}
+
+			{pathPoints.map((pair, i) => (
+				<group key={i}>
+					<mesh position={[pair.points[1].x, pair.points[1].y, pair.points[1].z,]} >
+						<sphereGeometry args={[0.3, 15, 15]} />
+						<meshStandardMaterial color="red" />
+					</mesh>
+					<mesh position={[pair.points[2].x, pair.points[2].y, pair.points[2].z,]} >
+						<sphereGeometry args={[0.3, 15, 15]} />
+						<meshStandardMaterial color="red" />
+					</mesh>
+				</group>
+			))}
+
+			<group ref={groupRef} visible={false} name="Meshes">
+				<mesh rotation-x={CONSTANTS.planeConfig.rotation} position={CONSTANTS.planeConfig.position3D} name="Plane" receiveShadow>
+					<planeGeometry args={[300, 300]} />
+					<meshBasicMaterial color={CONSTANTS.planeConfig.color} />
+				</mesh>
+			</group>
+		</>
+	);
 };
 
 export default Agv;
diff --git a/app/src/modules/builder/geomentries/assets/addAssetModel.ts b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
index 91c1f12..98aa8fd 100644
--- a/app/src/modules/builder/geomentries/assets/addAssetModel.ts
+++ b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
@@ -24,7 +24,7 @@ async function addAssetModel(
     socket: Socket<any>,
     selectedItem: any,
     setSelectedItem: any,
-    setSimulationPaths: any,
+    setSimulationStates: any,
     plane: Types.RefMesh,
 ): Promise<void> {
 
@@ -65,7 +65,7 @@ async function addAssetModel(
             const cachedModel = THREE.Cache.get(selectedItem.id);
             if (cachedModel) {
                 // console.log(`[Cache] Fetching ${selectedItem.name}`);
-                handleModelLoad(cachedModel, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationPaths, socket);
+                handleModelLoad(cachedModel, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationStates, socket);
                 return;
             } else {
                 const cachedModelBlob = await retrieveGLTF(selectedItem.id);
@@ -78,7 +78,7 @@ async function addAssetModel(
                         URL.revokeObjectURL(blobUrl);
                         THREE.Cache.remove(blobUrl);
                         THREE.Cache.add(selectedItem.id, gltf);
-                        handleModelLoad(gltf, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationPaths, socket);
+                        handleModelLoad(gltf, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationStates, socket);
                     },
                         () => {
                             TempLoader(intersectPoint!, isTempLoader, tempLoader, itemsGroup);
@@ -90,7 +90,7 @@ async function addAssetModel(
                         const modelBlob = await fetch(`${url_Backend_dwinzo}/api/v1/AssetFile/${selectedItem.id}`).then((res) => res.blob());
                         await storeGLTF(selectedItem.id, modelBlob);
                         THREE.Cache.add(selectedItem.id, gltf);
-                        await handleModelLoad(gltf, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationPaths, socket);
+                        await handleModelLoad(gltf, intersectPoint!, selectedItem, itemsGroup, tempLoader, isTempLoader, setFloorItems, setSimulationStates, socket);
                     },
                         () => {
                             TempLoader(intersectPoint!, isTempLoader, tempLoader, itemsGroup);
@@ -113,7 +113,7 @@ async function handleModelLoad(
     tempLoader: Types.RefMesh,
     isTempLoader: Types.RefBoolean,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationPaths: any,
+    setSimulationStates: any,
     socket: Socket<any>
 ) {
     const model = gltf.scene.clone();
@@ -219,7 +219,7 @@ async function handleModelLoad(
             eventData.position = newFloorItem.position;
             eventData.rotation = [model.rotation.x, model.rotation.y, model.rotation.z];
 
-            setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                 ...(prevEvents || []),
                 eventData as Types.ConveyorEventsSchema
             ]);
@@ -281,7 +281,7 @@ async function handleModelLoad(
                 return updatedItems;
             });
 
-            setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                 ...(prevEvents || []),
                 eventData as Types.VehicleEventsSchema
             ]);
diff --git a/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts b/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
index a71aaea..86500c5 100644
--- a/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
+++ b/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
@@ -10,7 +10,7 @@ async function DeleteFloorItems(
     itemsGroup: Types.RefGroup,
     hoveredDeletableFloorItem: Types.RefMesh,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationPaths: any,
+    setSimulationStates: any,
     socket: Socket<any>
 ): Promise<void> {
 
@@ -76,7 +76,7 @@ async function DeleteFloorItems(
             }
             setFloorItems(updatedItems);
 
-            setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                 const updatedEvents = (prevEvents || []).filter(event => event.modeluuid !== removedItem.modeluuid);
                 return updatedEvents;
             });
diff --git a/app/src/modules/builder/groups/floorItemsGroup.tsx b/app/src/modules/builder/groups/floorItemsGroup.tsx
index cef7d74..96f4fad 100644
--- a/app/src/modules/builder/groups/floorItemsGroup.tsx
+++ b/app/src/modules/builder/groups/floorItemsGroup.tsx
@@ -10,7 +10,7 @@ import {
   useRenderDistance,
   useselectedFloorItem,
   useSelectedItem,
-  useSimulationPaths,
+  useSimulationStates,
   useSocketStore,
   useToggleView,
   useTransformMode,
@@ -65,7 +65,7 @@ const FloorItemsGroup = ({
   const { setselectedFloorItem } = useselectedFloorItem();
   const { activeTool } = useActiveTool();
   const { selectedItem, setSelectedItem } = useSelectedItem();
-  const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+  const { simulationStates, setSimulationStates } = useSimulationStates();
   const { setLoadingProgress } = useLoadingProgress();
   const { activeModule } = useModuleStore();
   const { socket } = useSocketStore();
@@ -111,7 +111,7 @@ const FloorItemsGroup = ({
         gltfLoaderWorker.postMessage({ floorItems: data });
       } else {
         gltfLoaderWorker.postMessage({ floorItems: [] });
-        loadInitialFloorItems(itemsGroup, setFloorItems, setSimulationPaths);
+        loadInitialFloorItems(itemsGroup, setFloorItems, setSimulationStates);
         updateLoadingProgress(100);
       }
     });
@@ -130,7 +130,7 @@ const FloorItemsGroup = ({
           updateLoadingProgress(progress);
 
           if (loadedAssets === totalAssets) {
-            loadInitialFloorItems(itemsGroup, setFloorItems, setSimulationPaths);
+            loadInitialFloorItems(itemsGroup, setFloorItems, setSimulationStates);
             updateLoadingProgress(100);
           }
         });
@@ -248,7 +248,7 @@ const FloorItemsGroup = ({
             itemsGroup,
             hoveredDeletableFloorItem,
             setFloorItems,
-            setSimulationPaths,
+            setSimulationStates,
             socket
           );
         }
@@ -374,7 +374,7 @@ const FloorItemsGroup = ({
           socket,
           selectedItem,
           setSelectedItem,
-          setSimulationPaths,
+          setSimulationStates,
           plane
         );
       }
diff --git a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
index 5dd41de..3f68568 100644
--- a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
+++ b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
@@ -12,7 +12,7 @@ import { getFloorAssets } from '../../../services/factoryBuilder/assest/floorAss
 async function loadInitialFloorItems(
     itemsGroup: Types.RefGroup,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationPaths: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
+    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
 ): Promise<void> {
     if (!itemsGroup.current) return;
     let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`;
@@ -71,7 +71,7 @@ async function loadInitialFloorItems(
                     const cachedModel = THREE.Cache.get(item.modelfileID!);
                     if (cachedModel) {
                         // console.log(`[Cache] Fetching ${item.modelname}`);
-                        processLoadedModel(cachedModel.scene.clone(), item, itemsGroup, setFloorItems, setSimulationPaths);
+                        processLoadedModel(cachedModel.scene.clone(), item, itemsGroup, setFloorItems, setSimulationStates);
                         modelsLoaded++;
                         checkLoadingCompletion(modelsLoaded, modelsToLoad, dracoLoader, resolve);
                         return;
@@ -88,7 +88,7 @@ async function loadInitialFloorItems(
                                 URL.revokeObjectURL(blobUrl);
                                 THREE.Cache.remove(blobUrl);
                                 THREE.Cache.add(item.modelfileID!, gltf);
-                                processLoadedModel(gltf.scene.clone(), item, itemsGroup, setFloorItems, setSimulationPaths);
+                                processLoadedModel(gltf.scene.clone(), item, itemsGroup, setFloorItems, setSimulationStates);
                                 modelsLoaded++;
                                 checkLoadingCompletion(modelsLoaded, modelsToLoad, dracoLoader, resolve);
                             },
@@ -111,7 +111,7 @@ async function loadInitialFloorItems(
                             const modelBlob = await fetch(modelUrl).then((res) => res.blob());
                             await storeGLTF(item.modelfileID!, modelBlob);
                             THREE.Cache.add(item.modelfileID!, gltf);
-                            processLoadedModel(gltf.scene.clone(), item, itemsGroup, setFloorItems, setSimulationPaths);
+                            processLoadedModel(gltf.scene.clone(), item, itemsGroup, setFloorItems, setSimulationStates);
                             modelsLoaded++;
                             checkLoadingCompletion(modelsLoaded, modelsToLoad, dracoLoader, resolve);
                         },
@@ -138,7 +138,7 @@ async function loadInitialFloorItems(
                 ]);
 
                 if (item.eventData) {
-                    processEventData(item, setSimulationPaths);
+                    processEventData(item, setSimulationStates);
                 }
 
                 modelsLoaded++;
@@ -157,7 +157,7 @@ function processLoadedModel(
     item: Types.EventData,
     itemsGroup: Types.RefGroup,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationPaths: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
+    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
 ) {
     const model = gltf;
     model.uuid = item.modeluuid;
@@ -193,14 +193,14 @@ function processLoadedModel(
     ]);
 
     if (item.eventData) {
-        processEventData(item, setSimulationPaths);
+        processEventData(item, setSimulationStates);
     }
 
     gsap.to(model.position, { y: item.position[1], duration: 1.5, ease: 'power2.out' });
     gsap.to(model.scale, { x: 1, y: 1, z: 1, duration: 1.5, ease: 'power2.out' });
 }
 
-function processEventData(item: Types.EventData, setSimulationPaths: any) {
+function processEventData(item: Types.EventData, setSimulationStates: any) {
 
     if (item.eventData?.type === 'Conveyor') {
 
@@ -210,7 +210,7 @@ function processEventData(item: Types.EventData, setSimulationPaths: any) {
         data.position = item.position;
         data.rotation = [item.rotation.x, item.rotation.y, item.rotation.z];
 
-        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
             ...(prevEvents || []),
             data as Types.ConveyorEventsSchema
         ]);
@@ -222,7 +222,7 @@ function processEventData(item: Types.EventData, setSimulationPaths: any) {
         data.modelName = item.modelname;
         data.position = item.position;
 
-        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
             ...(prevEvents || []),
             data as Types.VehicleEventsSchema
         ]);
diff --git a/app/src/modules/scene/controls/selection/copyPasteControls.tsx b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
index abcc1b0..25434f6 100644
--- a/app/src/modules/scene/controls/selection/copyPasteControls.tsx
+++ b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
@@ -1,7 +1,7 @@
 import * as THREE from "three";
 import { useEffect, useMemo } from "react";
 import { useFrame, useThree } from "@react-three/fiber";
-import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, useToggleView } from "../../../../store/store";
+import { useFloorItems, useSelectedAssets, useSimulationStates, useSocketStore, useToggleView } from "../../../../store/store";
 import { toast } from "react-toastify";
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import * as Types from "../../../../types/world/worldTypes";
@@ -10,7 +10,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
     const { camera, controls, gl, scene, pointer, raycaster } = useThree();
     const { toggleView } = useToggleView();
     const { selectedAssets, setSelectedAssets } = useSelectedAssets();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
     const { floorItems, setFloorItems } = useFloorItems();
     const { socket } = useSocketStore()
@@ -151,7 +151,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationPaths.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -234,7 +234,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.ConveyorEventsSchema
                         ]);
@@ -314,7 +314,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.VehicleEventsSchema
                         ]);
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index c28c401..4f65f03 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -1,7 +1,7 @@
 import * as THREE from "three";
 import { useEffect, useMemo } from "react";
 import { useFrame, useThree } from "@react-three/fiber";
-import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, useToggleView } from "../../../../store/store";
+import { useFloorItems, useSelectedAssets, useSimulationStates, useSocketStore, useToggleView } from "../../../../store/store";
 import { toast } from "react-toastify";
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import * as Types from "../../../../types/world/worldTypes";
@@ -11,7 +11,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
     const { camera, controls, gl, scene, pointer, raycaster } = useThree();
     const { toggleView } = useToggleView();
     const { selectedAssets, setSelectedAssets } = useSelectedAssets();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
     const { floorItems, setFloorItems } = useFloorItems();
     const { socket } = useSocketStore();
@@ -132,7 +132,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationPaths.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -216,7 +216,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.ConveyorEventsSchema
                         ]);
@@ -295,7 +295,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.VehicleEventsSchema
                         ]);
diff --git a/app/src/modules/scene/controls/selection/moveControls.tsx b/app/src/modules/scene/controls/selection/moveControls.tsx
index a4340b5..d9300b4 100644
--- a/app/src/modules/scene/controls/selection/moveControls.tsx
+++ b/app/src/modules/scene/controls/selection/moveControls.tsx
@@ -1,7 +1,7 @@
 import * as THREE from "three";
 import { useEffect, useMemo, useRef, useState } from "react";
 import { useFrame, useThree } from "@react-three/fiber";
-import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, useToggleView } from "../../../../store/store";
+import { useFloorItems, useSelectedAssets, useSimulationStates, useSocketStore, useToggleView } from "../../../../store/store";
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import { toast } from "react-toastify";
 import * as Types from "../../../../types/world/worldTypes";
@@ -12,7 +12,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
 
     const { toggleView } = useToggleView();
     const { selectedAssets, setSelectedAssets } = useSelectedAssets();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const { floorItems, setFloorItems } = useFloorItems();
     const { socket } = useSocketStore();
     const itemsData = useRef<Types.FloorItems>([]);
@@ -180,7 +180,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationPaths.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -229,7 +229,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
@@ -280,7 +280,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
diff --git a/app/src/modules/scene/controls/selection/rotateControls.tsx b/app/src/modules/scene/controls/selection/rotateControls.tsx
index 708a00a..a47d154 100644
--- a/app/src/modules/scene/controls/selection/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selection/rotateControls.tsx
@@ -1,7 +1,7 @@
 import * as THREE from "three";
 import { useEffect, useMemo, useRef, useState } from "react";
 import { useFrame, useThree } from "@react-three/fiber";
-import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, useToggleView } from "../../../../store/store";
+import { useFloorItems, useSelectedAssets, useSimulationStates, useSocketStore, useToggleView } from "../../../../store/store";
 // import { setFloorItemApi } from '../../../../services/factoryBuilder/assest/floorAsset/setFloorItemApi';
 import { toast } from "react-toastify";
 import * as Types from "../../../../types/world/worldTypes";
@@ -13,7 +13,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
 
     const { toggleView } = useToggleView();
     const { selectedAssets, setSelectedAssets } = useSelectedAssets();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const { floorItems, setFloorItems } = useFloorItems();
     const { socket } = useSocketStore();
     const itemsData = useRef<Types.FloorItems>([]);
@@ -184,7 +184,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationPaths.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -233,7 +233,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
@@ -285,7 +285,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
diff --git a/app/src/modules/scene/controls/selection/selectionControls.tsx b/app/src/modules/scene/controls/selection/selectionControls.tsx
index fd7e19e..5a6426c 100644
--- a/app/src/modules/scene/controls/selection/selectionControls.tsx
+++ b/app/src/modules/scene/controls/selection/selectionControls.tsx
@@ -3,7 +3,7 @@ import { useEffect, useMemo, useRef, useState } from "react";
 import { SelectionBox } from "three/examples/jsm/interactive/SelectionBox";
 import { SelectionHelper } from "./selectionHelper";
 import { useFrame, useThree } from "@react-three/fiber";
-import { useFloorItems, useSelectedAssets, useSimulationPaths, useSocketStore, useToggleView } from "../../../../store/store";
+import { useFloorItems, useSelectedAssets, useSimulationStates, useSocketStore, useToggleView } from "../../../../store/store";
 import BoundingBox from "./boundingBoxHelper";
 import { toast } from "react-toastify";
 // import { deleteFloorItem } from '../../../../services/factoryBuilder/assest/floorAsset/deleteFloorItemApi';
@@ -20,7 +20,7 @@ const SelectionControls: React.FC = () => {
     const itemsGroupRef = useRef<THREE.Group | undefined>(undefined);
     const selectionGroup = useRef() as Types.RefGroup;
     const { toggleView } = useToggleView();
-    const { setSimulationPaths } = useSimulationPaths();
+    const { setSimulationStates } = useSimulationStates();
     const { selectedAssets, setSelectedAssets } = useSelectedAssets();
     const [movedObjects, setMovedObjects] = useState<THREE.Object3D[]>([]);
     const [rotatedObjects, setRotatedObjects] = useState<THREE.Object3D[]>([]);
@@ -240,7 +240,7 @@ const SelectionControls: React.FC = () => {
                     }
                 });
 
-                setSimulationPaths((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
                     const updatedEvents = (prevEvents || []).filter(event => event.modeluuid !== selectedMesh.uuid);
                     return updatedEvents;
                 });
diff --git a/app/src/modules/simulation/behaviour/behaviour.tsx b/app/src/modules/simulation/behaviour/behaviour.tsx
index 27c791f..4c7e1ed 100644
--- a/app/src/modules/simulation/behaviour/behaviour.tsx
+++ b/app/src/modules/simulation/behaviour/behaviour.tsx
@@ -1,10 +1,10 @@
-import { useFloorItems, useSimulationPaths } from '../../../store/store';
+import { useFloorItems, useSimulationStates } from '../../../store/store';
 import * as THREE from 'three';
 import * as Types from '../../../types/world/worldTypes';
 import { useEffect } from 'react';
 
 function Behaviour() {
-    const { setSimulationPaths } = useSimulationPaths();
+    const { setSimulationStates } = useSimulationStates();
     const { floorItems } = useFloorItems();
 
     useEffect(() => {
@@ -78,7 +78,7 @@ function Behaviour() {
         //     }
         // });
 
-        // setSimulationPaths(newPaths);
+        // setSimulationStates(newPaths);
         // console.log('floorItems: ', floorItems);
     }, [floorItems]);
 
diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index 3866a10..2769a98 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -3,7 +3,7 @@ import React, { useEffect, useState } from 'react';
 import * as THREE from 'three';
 import * as Types from '../../../types/world/worldTypes';
 import { QuadraticBezierLine } from '@react-three/drei';
-import { useIsConnecting, useSimulationPaths } from '../../../store/store';
+import { useIsConnecting, useSimulationStates } from '../../../store/store';
 import useModuleStore from '../../../store/useModuleStore';
 import { usePlayButtonStore } from '../../../store/usePlayButtonStore';
 
@@ -11,7 +11,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
     const { activeModule } = useModuleStore();
     const { gl, raycaster, scene, pointer, camera } = useThree();
     const { setIsConnecting } = useIsConnecting();
-    const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+    const { simulationStates, setSimulationStates } = useSimulationStates();
     const { isPlaying } = usePlayButtonStore();
 
     const [firstSelected, setFirstSelected] = useState<{
@@ -29,7 +29,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
         toPathUUID: string,
         toPointUUID: string
     ) => {
-        const updatedPaths = simulationPaths.map(path => {
+        const updatedPaths = simulationStates.map(path => {
             if (path.type === 'Conveyor') {
                 if (path.modeluuid === fromPathUUID) {
                     return {
@@ -99,7 +99,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     const existingTargets = path.points.connections.targets || [];
 
                     // Check if target is a Conveyor
-                    const toPath = simulationPaths.find(p => p.modeluuid === toPathUUID);
+                    const toPath = simulationStates.find(p => p.modeluuid === toPathUUID);
                     if (toPath?.type !== 'Conveyor') {
                         console.log("Vehicle can only connect to Conveyors");
                         return path;
@@ -136,7 +136,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     const existingTargets = path.points.connections.targets || [];
 
                     // Check if source is a Conveyor
-                    const fromPath = simulationPaths.find(p => p.modeluuid === fromPathUUID);
+                    const fromPath = simulationStates.find(p => p.modeluuid === fromPathUUID);
                     if (fromPath?.type !== 'Conveyor') {
                         console.log("Vehicle can only connect to Conveyors");
                         return path;
@@ -169,7 +169,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
             return path;
         });
 
-        setSimulationPaths(updatedPaths);
+        setSimulationStates(updatedPaths);
     };
 
     const handleAddConnection = (fromPathUUID: string, fromUUID: string, toPathUUID: string, toUUID: string) => {
@@ -227,8 +227,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     }
 
                     if (pathUUID) {
-                        const firstPath = simulationPaths.find(p => p.modeluuid === firstSelected?.pathUUID);
-                        const secondPath = simulationPaths.find(p => p.modeluuid === pathUUID);
+                        const firstPath = simulationStates.find(p => p.modeluuid === firstSelected?.pathUUID);
+                        const secondPath = simulationStates.find(p => p.modeluuid === pathUUID);
 
                         // Prevent vehicle-to-vehicle connections
                         if (firstPath && secondPath && firstPath.type === 'Vehicle' && secondPath.type === 'Vehicle') {
@@ -247,7 +247,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                         // Check if this specific connection already exists
                         const isDuplicateConnection = firstSelected
-                            ? simulationPaths.some(path => {
+                            ? simulationStates.some(path => {
                                 if (path.modeluuid === firstSelected.pathUUID) {
                                     if (path.type === 'Conveyor') {
                                         const point = path.points.find(p => p.uuid === firstSelected.sphereUUID);
@@ -281,7 +281,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                         // For non-Vehicle paths, check if already connected
                         if (intersected.userData.path.type !== 'Vehicle') {
-                            const isAlreadyConnected = simulationPaths.some(path => {
+                            const isAlreadyConnected = simulationStates.some(path => {
                                 if (path.type === 'Conveyor') {
                                     return path.points.some(point =>
                                         point.uuid === sphereUUID &&
@@ -361,7 +361,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
             canvasElement.removeEventListener("mousemove", onMouseMove);
             canvasElement.removeEventListener("contextmenu", onContextMenu);
         };
-    }, [camera, scene, raycaster, firstSelected, simulationPaths]);
+    }, [camera, scene, raycaster, firstSelected, simulationStates]);
 
     useFrame(() => {
         if (firstSelected) {
@@ -397,8 +397,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                 const pathData = sphere.userData.path;
                 const pathUUID = pathData.modeluuid;
 
-                const firstPath = simulationPaths.find(p => p.modeluuid === firstSelected.pathUUID);
-                const secondPath = simulationPaths.find(p => p.modeluuid === pathUUID);
+                const firstPath = simulationStates.find(p => p.modeluuid === firstSelected.pathUUID);
+                const secondPath = simulationStates.find(p => p.modeluuid === pathUUID);
                 const isVehicleToVehicle = firstPath?.type === 'Vehicle' && secondPath?.type === 'Vehicle';
 
                 // Inside the useFrame hook, where we check for snapped spheres:
@@ -413,7 +413,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         !firstSelected.isCorner);
 
                 // Check for duplicate connection (regardless of path type)
-                const isDuplicateConnection = simulationPaths.some(path => {
+                const isDuplicateConnection = simulationStates.some(path => {
                     if (path.modeluuid === firstSelected.pathUUID) {
                         if (path.type === 'Conveyor') {
                             const point = path.points.find(p => p.uuid === firstSelected.sphereUUID);
@@ -431,7 +431,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                 // For non-Vehicle paths, check if already connected
                 const isNonVehicleAlreadyConnected = pathData.type !== 'Vehicle' &&
-                    simulationPaths.some(path => {
+                    simulationStates.some(path => {
                         if (path.type === 'Conveyor') {
                             return path.points.some(point =>
                                 point.uuid === sphereUUID &&
@@ -505,11 +505,11 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
     return (
         <group name='simulationConnectionGroup' visible={!isPlaying} >
-            {simulationPaths.flatMap(path => {
+            {simulationStates.flatMap(path => {
                 if (path.type === 'Conveyor') {
                     return path.points.flatMap(point =>
                         point.connections.targets.map((target, index) => {
-                            const targetPath = simulationPaths.find(p => p.modeluuid === target.pathUUID);
+                            const targetPath = simulationStates.find(p => p.modeluuid === target.pathUUID);
                             if (targetPath?.type === 'Vehicle') return null;
 
                             const fromSphere = pathsGroupRef.current?.getObjectByProperty('uuid', point.uuid);
diff --git a/app/src/modules/simulation/path/pathCreation.tsx b/app/src/modules/simulation/path/pathCreation.tsx
index 619a011..bcb167b 100644
--- a/app/src/modules/simulation/path/pathCreation.tsx
+++ b/app/src/modules/simulation/path/pathCreation.tsx
@@ -10,7 +10,7 @@ import {
   useRenderDistance,
   useSelectedActionSphere,
   useSelectedPath,
-  useSimulationPaths,
+  useSimulationStates,
 } from "../../../store/store";
 import { useFrame, useThree } from "@react-three/fiber";
 import { useSubModuleStore } from "../../../store/useModuleStore";
@@ -32,7 +32,7 @@ function PathCreation({
   const { raycaster, camera, pointer, gl } = useThree();
   const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
   const { setSelectedPath } = useSelectedPath();
-  const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+  const { simulationStates, setSimulationStates } = useSimulationStates();
   const { isConnecting } = useIsConnecting();
 
   const groupRefs = useRef<{ [key: string]: THREE.Group }>({});
@@ -71,7 +71,7 @@ function PathCreation({
   const updateSimulationPaths = () => {
     if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationPaths.map((path) => {
+    const updatedPaths = simulationStates.map((path) => {
       if (path.type === "Conveyor") {
         return {
           ...path,
@@ -97,7 +97,7 @@ function PathCreation({
       return path;
     }) as Types.ConveyorEventsSchema[];
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   useFrame(() => {
@@ -173,7 +173,7 @@ function PathCreation({
     z: number
   ) => {
     if (!selectedActionSphere?.points?.uuid) return;
-    const updatedPaths = simulationPaths.map((path) => {
+    const updatedPaths = simulationStates.map((path) => {
 
       if (
         path.type === "Vehicle" &&
@@ -204,12 +204,12 @@ function PathCreation({
     );
     updateBackend(updatedPath);
 
-    setSimulationPaths(updatedPaths);
+    setSimulationStates(updatedPaths);
   };
 
   return (
-    <group visible={!isPlaying} name="simulation-simulationPaths-group" ref={pathsGroupRef}>
-      {simulationPaths.map((path) => {
+    <group visible={!isPlaying} name="simulation-simulationStates-group" ref={pathsGroupRef}>
+      {simulationStates.map((path) => {
         if (path.type === "Conveyor") {
           const points = path.points.map(
             (point) => new THREE.Vector3(...point.position)
diff --git a/app/src/modules/simulation/process/processCreator.tsx b/app/src/modules/simulation/process/processCreator.tsx
index f089285..83089c9 100644
--- a/app/src/modules/simulation/process/processCreator.tsx
+++ b/app/src/modules/simulation/process/processCreator.tsx
@@ -5,7 +5,7 @@
 //   useCallback,
 //   useRef,
 // } from "react";
-// import { useSimulationPaths } from "../../../store/store";
+// import { useSimulationStates } from "../../../store/store";
 // import * as THREE from "three";
 // import { useThree } from "@react-three/fiber";
 // import {
@@ -312,19 +312,19 @@
 
 // const ProcessCreator: React.FC<ProcessCreatorProps> = React.memo(
 //   ({ onProcessesCreated }) => {
-//     const { simulationPaths } = useSimulationPaths();
+//     const { simulationStates } = useSimulationStates();
 //     const { createProcessesFromPaths } = useProcessCreation();
 //     const prevPathsRef = useRef<SimulationPath[]>([]);
 //     const prevProcessesRef = useRef<Process[]>([]);
 
 //     const convertedPaths = useMemo((): SimulationPath[] => {
-//       if (!simulationPaths) return [];
-//       return simulationPaths.map((path) =>
+//       if (!simulationStates) return [];
+//       return simulationStates.map((path) =>
 //         convertToSimulationPath(
 //           path as ConveyorEventsSchema | VehicleEventsSchema
 //         )
 //       );
-//     }, [simulationPaths]);
+//     }, [simulationStates]);
 
 //     const pathsDependency = useMemo(() => {
 //       if (!convertedPaths) return null;
@@ -404,7 +404,7 @@ import React, {
   useCallback,
   useRef,
 } from "react";
-import { useSimulationPaths } from "../../../store/store";
+import { useSimulationStates } from "../../../store/store";
 import * as THREE from "three";
 import { useThree } from "@react-three/fiber";
 import {
@@ -737,19 +737,19 @@ export function useProcessCreation() {
 
 const ProcessCreator: React.FC<ProcessCreatorProps> = React.memo(
   ({ onProcessesCreated }) => {
-    const { simulationPaths } = useSimulationPaths();
+    const { simulationStates } = useSimulationStates();
     const { createProcessesFromPaths } = useProcessCreation();
     const prevPathsRef = useRef<SimulationPath[]>([]);
     const prevProcessesRef = useRef<Process[]>([]);
 
     const convertedPaths = useMemo((): SimulationPath[] => {
-      if (!simulationPaths) return [];
-      return simulationPaths.map((path) =>
+      if (!simulationStates) return [];
+      return simulationStates.map((path) =>
         convertToSimulationPath(
           path as ConveyorEventsSchema | VehicleEventsSchema
         )
       );
-    }, [simulationPaths]);
+    }, [simulationStates]);
 
     // Enhanced dependency tracking that includes action types
     const pathsDependency = useMemo(() => {
diff --git a/app/src/modules/simulation/simulation.tsx b/app/src/modules/simulation/simulation.tsx
index fd8b520..55dda4b 100644
--- a/app/src/modules/simulation/simulation.tsx
+++ b/app/src/modules/simulation/simulation.tsx
@@ -2,7 +2,7 @@ import { useState, useEffect, useRef, useMemo } from "react";
 import {
   useSelectedActionSphere,
   useSelectedPath,
-  useSimulationPaths,
+  useSimulationStates,
 } from "../../store/store";
 import * as THREE from "three";
 import Behaviour from "./behaviour/behaviour";
@@ -15,12 +15,12 @@ import Agv from "../builder/agv/agv";
 function Simulation() {
   const { activeModule } = useModuleStore();
   const pathsGroupRef = useRef() as React.MutableRefObject<THREE.Group>;
-  const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+  const { simulationStates, setSimulationStates } = useSimulationStates();
   const [processes, setProcesses] = useState([]);
 
   useEffect(() => {
-    // console.log('simulationPaths: ', simulationPaths);
-  }, [simulationPaths]);
+    // console.log('simulationStates: ', simulationStates);
+  }, [simulationStates]);
 
   // useEffect(() => {
   //     if (selectedActionSphere) {
diff --git a/app/src/modules/simulation/simulationUI.tsx b/app/src/modules/simulation/simulationUI.tsx
index bff2b20..055fb36 100644
--- a/app/src/modules/simulation/simulationUI.tsx
+++ b/app/src/modules/simulation/simulationUI.tsx
@@ -1,5 +1,5 @@
 // import { useMemo, useState } from 'react';
-// import { useSelectedActionSphere, useToggleView, useSimulationPaths, useSelectedPath, useStartSimulation, useDrawMaterialPath } from '../../store/store';
+// import { useSelectedActionSphere, useToggleView, useSimulationStates, useSelectedPath, useStartSimulation, useDrawMaterialPath } from '../../store/store';
 // import * as THREE from 'three';
 // import useModuleStore from '../../store/useModuleStore';
 
@@ -9,14 +9,14 @@
 //     const { startSimulation, setStartSimulation } = useStartSimulation();
 //     const { selectedActionSphere } = useSelectedActionSphere();
 //     const { selectedPath, setSelectedPath } = useSelectedPath();
-//     const { simulationPaths, setSimulationPaths } = useSimulationPaths();
+//     const { simulationStates, setSimulationStates } = useSimulationStates();
 //     const { drawMaterialPath, setDrawMaterialPath } = useDrawMaterialPath();
 //     const [activeButton, setActiveButton] = useState<string | null>(null);
 
 //     const handleAddAction = () => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) => {
 //                 if (point.uuid === selectedActionSphere.points.uuid) {
@@ -37,13 +37,13 @@
 //             }),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleDeleteAction = (uuid: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -52,13 +52,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleActionSelect = (uuid: string, actionType: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -72,13 +72,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleMaterialSelect = (uuid: string, material: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -92,13 +92,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleDelayChange = (uuid: string, delay: number | string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -112,13 +112,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleSpawnIntervalChange = (uuid: string, spawnInterval: number | string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -132,24 +132,24 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleSpeedChange = (speed: number) => {
 //         if (!selectedPath) return;
 
-//         const updatedPaths = simulationPaths.map((path) =>
+//         const updatedPaths = simulationStates.map((path) =>
 //             path.modeluuid === selectedPath.path.modeluuid ? { ...path, speed } : path
 //         );
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //         setSelectedPath({ ...selectedPath, path: { ...selectedPath.path, speed } });
 //     };
 
 //     const handleAddTrigger = () => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) => {
 //                 if (point.uuid === selectedActionSphere.points.uuid) {
@@ -167,13 +167,13 @@
 //             }),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleDeleteTrigger = (uuid: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -182,13 +182,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleTriggerSelect = (uuid: string, triggerType: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -202,7 +202,7 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleResetPath = () => {
@@ -214,7 +214,7 @@
 //     const handleActionToggle = (uuid: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -229,13 +229,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const handleTriggerToggle = (uuid: string) => {
 //         if (!selectedActionSphere) return;
 
-//         const updatedPaths = simulationPaths.map((path) => ({
+//         const updatedPaths = simulationStates.map((path) => ({
 //             ...path,
 //             points: path.points.map((point) =>
 //                 point.uuid === selectedActionSphere.points.uuid
@@ -250,13 +250,13 @@
 //             ),
 //         }));
 
-//         setSimulationPaths(updatedPaths);
+//         setSimulationStates(updatedPaths);
 //     };
 
 //     const selectedPoint = useMemo(() => {
 //         if (!selectedActionSphere) return null;
-//         return simulationPaths.flatMap((path) => path.points).find((point) => point.uuid === selectedActionSphere.points.uuid);
-//     }, [selectedActionSphere, simulationPaths]);
+//         return simulationStates.flatMap((path) => path.points).find((point) => point.uuid === selectedActionSphere.points.uuid);
+//     }, [selectedActionSphere, simulationStates]);
 
 //     const createPath = () => {
 //         setActiveButton(activeButton !== 'addMaterialPath' ? 'addMaterialPath' : null);
diff --git a/app/src/modules/simulation/simulationtemp/path/pathCreator.tsx b/app/src/modules/simulation/simulationtemp/path/pathCreator.tsx
index c09b21c..c9dd36b 100644
--- a/app/src/modules/simulation/simulationtemp/path/pathCreator.tsx
+++ b/app/src/modules/simulation/simulationtemp/path/pathCreator.tsx
@@ -11,13 +11,13 @@ type PathPoint = {
 };
 
 type PathCreatorProps = {
-    simulationPaths: PathPoint[][];
-    setSimulationPaths: React.Dispatch<React.SetStateAction<PathPoint[][]>>;
+    simulationStates: PathPoint[][];
+    setSimulationStates: React.Dispatch<React.SetStateAction<PathPoint[][]>>;
     connections: { start: PathPoint; end: PathPoint }[];
     setConnections: React.Dispatch<React.SetStateAction<{ start: PathPoint; end: PathPoint }[]>>
 };
 
-const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConnections }: PathCreatorProps) => {
+const PathCreator = ({ simulationStates, setSimulationStates, connections, setConnections }: PathCreatorProps) => {
     const { camera, scene, raycaster, pointer, gl } = useThree();
     const { drawMaterialPath } = useDrawMaterialPath();
 
@@ -71,7 +71,7 @@ const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConn
             e.preventDefault();
             if (drag || e.button === 0) return;
             if (currentPath.length > 1) {
-                setSimulationPaths((prevPaths) => [...prevPaths, currentPath]);
+                setSimulationStates((prevPaths) => [...prevPaths, currentPath]);
             }
             setCurrentPath([]);
             setTemporaryPoint(null);
@@ -125,7 +125,7 @@ const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConn
             canvasElement.addEventListener("contextmenu", onContextMenu);
         } else {
             if (currentPath.length > 1) {
-                setSimulationPaths((prevPaths) => [...prevPaths, currentPath]);
+                setSimulationStates((prevPaths) => [...prevPaths, currentPath]);
             }
             setCurrentPath([]);
             setTemporaryPoint(null);
@@ -179,25 +179,25 @@ const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConn
         if (selectedPoint) {
             const updatedPosition = e.target.object.position.clone();
             const updatedRotation = e.target.object.quaternion.clone();
-            const updatedPaths = simulationPaths.map((path) =>
+            const updatedPaths = simulationStates.map((path) =>
                 path.map((p) =>
                     p.uuid === selectedPoint.uuid ? { ...p, position: updatedPosition, rotation: updatedRotation } : p
                 )
             );
-            setSimulationPaths(updatedPaths);
+            setSimulationStates(updatedPaths);
         }
     };
 
 
     const meshContext = (uuid: string) => {
-        const pathIndex = simulationPaths.findIndex(path => path.some(point => point.uuid === uuid));
+        const pathIndex = simulationStates.findIndex(path => path.some(point => point.uuid === uuid));
         if (pathIndex === -1) return;
 
-        const clickedPoint = simulationPaths[pathIndex].find(point => point.uuid === uuid);
+        const clickedPoint = simulationStates[pathIndex].find(point => point.uuid === uuid);
         if (!clickedPoint) return;
 
-        const isStart = simulationPaths[pathIndex][0].uuid === uuid;
-        const isEnd = simulationPaths[pathIndex][simulationPaths[pathIndex].length - 1].uuid === uuid;
+        const isStart = simulationStates[pathIndex][0].uuid === uuid;
+        const isEnd = simulationStates[pathIndex][simulationStates[pathIndex].length - 1].uuid === uuid;
 
         if (pathIndex === 0 && isStart) {
             console.log("The first-ever point is not connectable.");
@@ -285,8 +285,8 @@ const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConn
     return (
         <>
             <group name='pathObjects'>
-                {/* Render finalized simulationPaths */}
-                {simulationPaths.map((path, pathIndex) => (
+                {/* Render finalized simulationStates */}
+                {simulationStates.map((path, pathIndex) => (
                     <group key={`path-line-${pathIndex}`}>
                         <Line
                             name={`path-line-${pathIndex}`}
@@ -299,7 +299,7 @@ const PathCreator = ({ simulationPaths, setSimulationPaths, connections, setConn
                 ))}
 
                 {/* Render finalized points */}
-                {simulationPaths.map((path) =>
+                {simulationStates.map((path) =>
                     path.map((point) => (
                         <mesh
                             key={`path-point-${point.uuid}`}
diff --git a/app/src/modules/simulation/simulationtemp/simulation.tsx b/app/src/modules/simulation/simulationtemp/simulation.tsx
index 6224177..1c7847b 100644
--- a/app/src/modules/simulation/simulationtemp/simulation.tsx
+++ b/app/src/modules/simulation/simulationtemp/simulation.tsx
@@ -10,13 +10,13 @@ type PathPoint = {
 };
 
 function Simulation() {
-    const [simulationPaths, setSimulationPaths] = useState<{ position: THREE.Vector3; rotation: THREE.Quaternion; uuid: string }[][]>([]);
+    const [simulationStates, setSimulationStates] = useState<{ position: THREE.Vector3; rotation: THREE.Quaternion; uuid: string }[][]>([]);
     const [connections, setConnections] = useState<{ start: PathPoint; end: PathPoint }[]>([]);
 
     return (
         <>
-            <PathCreator simulationPaths={simulationPaths} setSimulationPaths={setSimulationPaths} connections={connections} setConnections={setConnections} />
-            {simulationPaths.map((path, index) => (
+            <PathCreator simulationStates={simulationStates} setSimulationStates={setSimulationStates} connections={connections} setConnections={setConnections} />
+            {simulationStates.map((path, index) => (
                 <PathFlow key={index} path={path} connections={connections} />
             ))}
         </>
diff --git a/app/src/store/store.ts b/app/src/store/store.ts
index 365eb97..eb89771 100644
--- a/app/src/store/store.ts
+++ b/app/src/store/store.ts
@@ -341,8 +341,8 @@ export const useSelectedPath = create<any>((set: any) => ({
 }));
 
 interface SimulationPathsStore {
-  simulationPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[];
-  setSimulationPaths: (
+  simulationStates: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[];
+  setSimulationStates: (
     paths:
       | (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]
       | ((prev: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]
@@ -350,12 +350,12 @@ interface SimulationPathsStore {
   ) => void;
 }
 
-export const useSimulationPaths = create<SimulationPathsStore>((set) => ({
-  simulationPaths: [],
-  setSimulationPaths: (paths) =>
+export const useSimulationStates = create<SimulationPathsStore>((set) => ({
+  simulationStates: [],
+  setSimulationStates: (paths) =>
     set((state) => ({
-      simulationPaths:
-        typeof paths === "function" ? paths(state.simulationPaths) : paths,
+      simulationStates:
+        typeof paths === "function" ? paths(state.simulationStates) : paths,
     })),
 }))
 

From 34aea0ecf1c18ba7f4502a82e5e460601b4d3e6d Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 12:25:29 +0530
Subject: [PATCH 10/17] Refactor AGV and PathNavigator components; add
 NavMeshCreator for improved navigation handling and added backend event
 storage for connections

---
 app/src/modules/builder/agv/agv.tsx           |  73 ++--
 .../modules/builder/agv/navMeshCreator.tsx    |  31 ++
 app/src/modules/builder/agv/pathNavigator.tsx | 324 ++++++++++--------
 .../scene/IntialLoad/loadInitialFloorItems.ts |   2 +-
 app/src/modules/scene/world/world.tsx         |   4 +-
 .../modules/simulation/path/pathConnector.tsx |  53 ++-
 .../modules/simulation/path/pathCreation.tsx  |  13 +-
 app/src/modules/simulation/simulation.tsx     |   2 +-
 app/src/store/store.ts                        |   5 +
 9 files changed, 305 insertions(+), 202 deletions(-)
 create mode 100644 app/src/modules/builder/agv/navMeshCreator.tsx

diff --git a/app/src/modules/builder/agv/agv.tsx b/app/src/modules/builder/agv/agv.tsx
index ad8fcd5..48f4306 100644
--- a/app/src/modules/builder/agv/agv.tsx
+++ b/app/src/modules/builder/agv/agv.tsx
@@ -1,14 +1,8 @@
-import { useEffect, useRef, useState } from "react";
-import { useSimulationStates } from "../../../store/store";
-import PolygonGenerator from "./polygonGenerator";
+import { useEffect, useState } from "react";
+import { Line } from "@react-three/drei";
+import { useNavMesh, useSimulationStates } from "../../../store/store";
 import PathNavigator from "./pathNavigator";
-import NavMeshDetails from "./navMeshDetails";
-import * as CONSTANTS from "../../../types/world/worldConstants";
-import * as Types from "../../../types/world/worldTypes";
-
-type AgvProps = {
-	lines: Types.RefLines
-};
+import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
 
 type PathPoints = {
 	modelUuid: string;
@@ -18,12 +12,11 @@ type PathPoints = {
 	hitCount: number;
 };
 
-const Agv = ({ lines }: AgvProps) => {
-
-	let groupRef = useRef() as Types.RefGroup;
+const Agv = () => {
 	const [pathPoints, setPathPoints] = useState<PathPoints[]>([]);
 	const { simulationStates } = useSimulationStates();
-	const [navMesh, setNavMesh] = useState();
+	const { navMesh } = useNavMesh();
+	const { isPlaying } = usePlayButtonStore();
 
 	useEffect(() => {
 		if (simulationStates.length > 0) {
@@ -37,9 +30,9 @@ const Agv = ({ lines }: AgvProps) => {
 					bufferTime: model.points.actions.buffer,
 					hitCount: model.points.actions.hitCount,
 					points: [
-						{ x: model.position[0], y: model.position[1], z: model.position[2], },
-						{ x: model.points.actions.start.x, y: 0, z: model.points.actions.start.y, },
-						{ x: model.points.actions.end.x, y: 0, z: model.points.actions.end.y, },
+						{ x: model.position[0], y: model.position[1], z: model.position[2] },
+						{ x: model.points.actions.start.x, y: 0, z: model.points.actions.start.y },
+						{ x: model.points.actions.end.x, y: 0, z: model.points.actions.end.y },
 					],
 				}));
 
@@ -49,41 +42,25 @@ const Agv = ({ lines }: AgvProps) => {
 
 	return (
 		<>
-
-			<PolygonGenerator groupRef={groupRef} lines={lines} />
-			<NavMeshDetails lines={lines} setNavMesh={setNavMesh} groupRef={groupRef} />
-
 			{pathPoints.map((pair, i) => (
-				<PathNavigator
-					navMesh={navMesh}
-					selectedPoints={pair.points}
-					id={pair.modelUuid}
-					key={i}
-					speed={pair.modelSpeed}
-					bufferTime={pair.bufferTime}
-					hitCount={pair.hitCount}
-				/>
-			))}
+				<group key={i} visible={!isPlaying}>
+					<PathNavigator
+						navMesh={navMesh}
+						pathPoints={pair.points}
+						id={pair.modelUuid}
+						speed={pair.modelSpeed}
+						bufferTime={pair.bufferTime}
+						hitCount={pair.hitCount}
+					/>
 
-			{pathPoints.map((pair, i) => (
-				<group key={i}>
-					<mesh position={[pair.points[1].x, pair.points[1].y, pair.points[1].z,]} >
-						<sphereGeometry args={[0.3, 15, 15]} />
-						<meshStandardMaterial color="red" />
-					</mesh>
-					<mesh position={[pair.points[2].x, pair.points[2].y, pair.points[2].z,]} >
-						<sphereGeometry args={[0.3, 15, 15]} />
-						<meshStandardMaterial color="red" />
-					</mesh>
+					{pair.points.slice(1).map((point, idx) => (
+						<mesh position={[point.x, point.y, point.z]} key={idx}>
+							<sphereGeometry args={[0.3, 15, 15]} />
+							<meshStandardMaterial color="red" />
+						</mesh>
+					))}
 				</group>
 			))}
-
-			<group ref={groupRef} visible={false} name="Meshes">
-				<mesh rotation-x={CONSTANTS.planeConfig.rotation} position={CONSTANTS.planeConfig.position3D} name="Plane" receiveShadow>
-					<planeGeometry args={[300, 300]} />
-					<meshBasicMaterial color={CONSTANTS.planeConfig.color} />
-				</mesh>
-			</group>
 		</>
 	);
 };
diff --git a/app/src/modules/builder/agv/navMeshCreator.tsx b/app/src/modules/builder/agv/navMeshCreator.tsx
new file mode 100644
index 0000000..cdbca45
--- /dev/null
+++ b/app/src/modules/builder/agv/navMeshCreator.tsx
@@ -0,0 +1,31 @@
+import { useRef } from "react";
+import { useNavMesh } from "../../../store/store";
+import PolygonGenerator from "./polygonGenerator";
+import NavMeshDetails from "./navMeshDetails";
+import * as CONSTANTS from "../../../types/world/worldConstants";
+import * as Types from "../../../types/world/worldTypes";
+
+type NavMeshCreatorProps = {
+    lines: Types.RefLines
+};
+
+function NavMeshCreator({ lines }: NavMeshCreatorProps) {
+    let groupRef = useRef() as Types.RefGroup;
+    const { setNavMesh } = useNavMesh();
+
+    return (
+        <>
+            <PolygonGenerator groupRef={groupRef} lines={lines} />
+            <NavMeshDetails lines={lines} setNavMesh={setNavMesh} groupRef={groupRef} />
+
+            <group ref={groupRef} visible={false} name="Meshes">
+                <mesh rotation-x={CONSTANTS.planeConfig.rotation} position={CONSTANTS.planeConfig.position3D} name="Plane" receiveShadow>
+                    <planeGeometry args={[300, 300]} />
+                    <meshBasicMaterial color={CONSTANTS.planeConfig.color} />
+                </mesh>
+            </group>
+        </>
+    )
+}
+
+export default NavMeshCreator
\ No newline at end of file
diff --git a/app/src/modules/builder/agv/pathNavigator.tsx b/app/src/modules/builder/agv/pathNavigator.tsx
index 65a299b..7d7984c 100644
--- a/app/src/modules/builder/agv/pathNavigator.tsx
+++ b/app/src/modules/builder/agv/pathNavigator.tsx
@@ -3,179 +3,207 @@ import * as THREE from "three";
 import { useFrame, useThree } from "@react-three/fiber";
 import { NavMeshQuery } from "@recast-navigation/core";
 import { Line } from "@react-three/drei";
-import { useActiveTool } from "../../../store/store";
 import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
 
 interface PathNavigatorProps {
-  navMesh: any;
-  selectedPoints: any;
-  id: string;
-  speed: number;
-  bufferTime: number;
-  hitCount: number;
+	navMesh: any;
+	pathPoints: any;
+	id: string;
+	speed: number;
+	bufferTime: number;
+	hitCount: number;
 }
 
 export default function PathNavigator({
-  navMesh,
-  selectedPoints,
-  id,
-  speed,
-  bufferTime,
-  hitCount,
+	navMesh,
+	pathPoints,
+	id,
+	speed,
+	bufferTime,
+	hitCount
 }: PathNavigatorProps) {
-  const [path, setPath] = useState<[number, number, number][]>([]);
-  const progressRef = useRef(0);
-  const distancesRef = useRef<number[]>([]);
-  const totalDistanceRef = useRef(0);
-  const currentSegmentIndex = useRef(0);
-  const [stop, setStop] = useState<boolean>(true);
-  const { scene } = useThree();
-  const { isPlaying, setIsPlaying } = usePlayButtonStore();
-  const [startPoint, setStartPoint] = useState(new THREE.Vector3());
-  const isWaiting = useRef<boolean>(false); // Flag to track waiting state
-  const delayTime = bufferTime;
+	const [path, setPath] = useState<[number, number, number][]>([]);
+	const [currentPhase, setCurrentPhase] = useState<'initial' | 'loop'>('initial');
+	const [toPickupPath, setToPickupPath] = useState<[number, number, number][]>([]);
+	const [pickupDropPath, setPickupDropPath] = useState<[number, number, number][]>([]);
+	const [dropPickupPath, setDropPickupPath] = useState<[number, number, number][]>([]);
+	const [initialPosition, setInitialPosition] = useState<THREE.Vector3 | null>(null);
+	const [initialRotation, setInitialRotation] = useState<THREE.Euler | null>(null);
 
-  const movingForward = useRef<boolean>(true); // Tracks whether the object is moving forward
-  // Compute distances and total distance when the path changes
-  useEffect(() => {
-    if (!scene || !id || path.length < 2) return;
+	const distancesRef = useRef<number[]>([]);
+	const totalDistanceRef = useRef(0);
+	const progressRef = useRef(0);
+	const isWaiting = useRef(false);
+	const timeoutRef = useRef<NodeJS.Timeout | null>(null);
 
-    let totalDistance = 0;
-    const distances: number[] = [];
-    for (let i = 0; i < path.length - 1; i++) {
-      const start = new THREE.Vector3(...path[i]);
-      const end = new THREE.Vector3(...path[i + 1]);
-      const segmentDistance = start.distanceTo(end);
-      distances.push(segmentDistance);
-      totalDistance += segmentDistance;
-    }
-    distancesRef.current = distances;
-    totalDistanceRef.current = totalDistance;
-    progressRef.current = 0;
-  }, [path]);
+	const { scene } = useThree();
+	const { isPlaying } = usePlayButtonStore();
 
-  // Compute the path using NavMeshQuery
-  useEffect(() => {
-    if (!navMesh || selectedPoints.length === 0) return;
+	useEffect(() => {
+		const object = scene.getObjectByProperty("uuid", id);
+		if (object) {
+			setInitialPosition(object.position.clone());
+			setInitialRotation(object.rotation.clone());
+		}
+	}, [scene, id]);
 
-    const allPoints = selectedPoints.flat();
-    const computedPath: [number, number, number][] = [];
+	const computePath = (start: any, end: any) => {
+		try {
+			const navMeshQuery = new NavMeshQuery(navMesh);
+			const { path: segmentPath } = navMeshQuery.computePath(start, end);
+			return segmentPath?.map(({ x, y, z }) => [x, y + 0.1, z] as [number, number, number]) || [];
+		} catch {
+			return [];
+		}
+	};
 
-    for (let i = 0; i < allPoints.length - 1; i++) {
-      const start = allPoints[i];
-      setStartPoint(
-        new THREE.Vector3(allPoints[0].x, allPoints[0].y, allPoints[0].z)
-      );
+	const resetState = () => {
+		if (timeoutRef.current) {
+			clearTimeout(timeoutRef.current);
+			timeoutRef.current = null;
+		}
 
-      const end = allPoints[i + 1];
+		setPath([]);
+		setCurrentPhase('initial');
+		setPickupDropPath([]);
+		setDropPickupPath([]);
+		distancesRef.current = [];
+		totalDistanceRef.current = 0;
+		progressRef.current = 0;
+		isWaiting.current = false;
 
-      try {
-        const navMeshQuery = new NavMeshQuery(navMesh);
-        const { path: segmentPath } = navMeshQuery.computePath(start, end);
+		if (initialPosition && initialRotation) {
+			const object = scene.getObjectByProperty("uuid", id);
+			if (object) {
+				object.position.copy(initialPosition);
+				object.rotation.copy(initialRotation);
+			}
+		}
+	};
 
-        if (!segmentPath || segmentPath.length === 0) {
-          continue;
-        }
+	useEffect(() => {
+		if (!isPlaying) {
+			resetState();
+		}
 
-        computedPath.push(
-          ...segmentPath.map(({ x, y, z }): [number, number, number] => [
-            x,
-            y + 0.1,
-            z,
-          ])
-        );
-      } catch (error) {}
-    }
+		if (!navMesh || pathPoints.length < 2) return;
 
-    if (computedPath.length > 0) {
-      setPath(computedPath);
-      currentSegmentIndex.current = 0;
-    }
-  }, [selectedPoints, navMesh]);
-  useFrame((_, delta) => {
-    if (!scene || !id || path.length < 2) return;
+		const [pickup, drop] = pathPoints.slice(-2);
+		const object = scene.getObjectByProperty("uuid", id);
+		if (!object) return;
 
-    // Find the object in the scene by its UUID
-    const findObject = scene.getObjectByProperty("uuid", id);
-    if (!findObject) return;
+		const currentPosition = { x: object.position.x, y: object.position.y, z: object.position.z };
 
-    if (isPlaying) {
-      const fast = speed;
-      progressRef.current += delta * fast;
+		const toPickupPath = computePath(currentPosition, pickup);
+		const pickupToDropPath = computePath(pickup, drop);
+		const dropToPickupPath = computePath(drop, pickup);
 
-      let coveredDistance = progressRef.current;
-      let accumulatedDistance = 0;
-      let index = 0;
+		if (toPickupPath.length && pickupToDropPath.length && dropToPickupPath.length) {
+			setPickupDropPath(pickupToDropPath);
+			setDropPickupPath(dropToPickupPath);
+			setToPickupPath(toPickupPath);
+			setPath(toPickupPath);
+			setCurrentPhase('initial');
+		}
+	}, [navMesh, pathPoints, hitCount, isPlaying]);
 
-      // Determine the current segment of the path
-      while (
-        index < distancesRef.current.length &&
-        coveredDistance > accumulatedDistance + distancesRef.current[index]
-      ) {
-        accumulatedDistance += distancesRef.current[index];
-        index++;
-      }
+	useEffect(() => {
+		if (path.length < 2) return;
 
-      if (index >= distancesRef.current.length) {
-        progressRef.current = totalDistanceRef.current;
+		let total = 0;
+		const segmentDistances = path.slice(0, -1).map((point, i) => {
+			const dist = new THREE.Vector3(...point).distanceTo(new THREE.Vector3(...path[i + 1]));
+			total += dist;
+			return dist;
+		});
 
-        if (!isWaiting.current) {
-          isWaiting.current = true; // Set waiting flag
+		distancesRef.current = segmentDistances;
+		totalDistanceRef.current = total;
+		progressRef.current = 0;
+		isWaiting.current = false;
+	}, [path]);
 
-          if (movingForward.current) {
-            // Moving forward: reached the end, wait for `delay`
-            // console.log(
-            //   "Reached end position. Waiting for delay:",
-            //   delayTime,
-            //   "seconds"
-            // );
-            setTimeout(() => {
-              // After delay, reverse direction
-              movingForward.current = false;
-              progressRef.current = 0; // Reset progress
-              path.reverse(); // Reverse the path
-              distancesRef.current.reverse();
-              isWaiting.current = false; // Reset waiting flag
-            }, delayTime * 1000); // Wait for `delay` seconds
-          }
-        }
-        return;
-      }
+	useFrame((_, delta) => {
+		if (!isPlaying || path.length < 2 || !scene || !id) return;
 
-      // Interpolate position within the current segment
-      const start = new THREE.Vector3(...path[index]);
-      const end = new THREE.Vector3(...path[index + 1]);
-      const segmentDistance = distancesRef.current[index];
+		const object = scene.getObjectByProperty("uuid", id);
+		if (!object) return;
 
-      const t = Math.min(
-        (coveredDistance - accumulatedDistance) / segmentDistance,
-        1
-      ); // Clamp t to avoid overshooting
-      const position = start.clone().lerp(end, t);
-      findObject.position.copy(position);
+		const speedFactor = speed;
+		progressRef.current += delta * speedFactor;
 
-      // Rotate the object to face the direction of movement
-      const direction = new THREE.Vector3().subVectors(end, start).normalize();
-      const targetYRotation = Math.atan2(direction.x, direction.z);
-      findObject.rotation.y += (targetYRotation - findObject.rotation.y) * 0.1;
-    } else {
-      findObject.position.copy(startPoint);
-    }
-  });
+		let covered = progressRef.current;
+		let accumulated = 0;
+		let index = 0;
 
-  return (
-    <>
-      {path.length > 0 && (
-        <>
-          <Line points={path} color="blue" lineWidth={3} />
-          {selectedPoints.map((val: any, i: any) => (
-            <mesh position={[val[0], val[1] + 1, val[2]]} key={i}>
-              <sphereGeometry args={[50, 5, 5]} />
-              <meshBasicMaterial color={"red"} />
-            </mesh>
-          ))}
-        </>
-      )}
-    </>
-  );
-}
+		while (
+			index < distancesRef.current.length &&
+			covered > accumulated + distancesRef.current[index]
+		) {
+			accumulated += distancesRef.current[index];
+			index++;
+		}
+
+		if (index >= distancesRef.current.length) {
+			progressRef.current = totalDistanceRef.current;
+
+			if (!isWaiting.current) {
+				isWaiting.current = true;
+
+				timeoutRef.current = setTimeout(() => {
+					if (currentPhase === 'initial') {
+						setPath(pickupDropPath);
+						setCurrentPhase('loop');
+					} else {
+						setPath(prevPath =>
+							prevPath === pickupDropPath ? dropPickupPath : pickupDropPath
+						);
+					}
+
+					progressRef.current = 0;
+					isWaiting.current = false;
+				}, bufferTime * 1000);
+			}
+			return;
+		}
+
+		const start = new THREE.Vector3(...path[index]);
+		const end = new THREE.Vector3(...path[index + 1]);
+		const dist = distancesRef.current[index];
+		const t = THREE.MathUtils.clamp((covered - accumulated) / dist, 0, 1);
+		const position = start.clone().lerp(end, t);
+
+		object.position.copy(position);
+
+		const direction = new THREE.Vector3().subVectors(end, start).normalize();
+		const targetRotationY = Math.atan2(direction.x, direction.z);
+
+		let angleDifference = targetRotationY - object.rotation.y;
+		angleDifference = ((angleDifference + Math.PI) % (Math.PI * 2)) - Math.PI;
+		object.rotation.y += angleDifference * 0.1;
+	});
+
+	useEffect(() => {
+		return () => {
+			if (timeoutRef.current) {
+				clearTimeout(timeoutRef.current);
+			}
+		};
+	}, []);
+
+	return (
+		<group name="path-navigator-lines" visible={!isPlaying} >
+			{toPickupPath.length > 0 && (
+				<Line points={toPickupPath} color="blue" lineWidth={3} dashed dashSize={0.75} dashScale={2} />
+			)}
+
+			{pickupDropPath.length > 0 && (
+				<Line points={pickupDropPath} color="red" lineWidth={3} />
+			)}
+
+			{dropPickupPath.length > 0 && (
+				<Line points={dropPickupPath} color="red" lineWidth={3} />
+			)}
+		</group>
+	);
+}
\ No newline at end of file
diff --git a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
index 3f68568..b89cf40 100644
--- a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
+++ b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
@@ -215,7 +215,7 @@ function processEventData(item: Types.EventData, setSimulationStates: any) {
             data as Types.ConveyorEventsSchema
         ]);
 
-    } else {
+    } else if (item.eventData?.type === 'Vehicle') {
 
         const data: any = item.eventData;
         data.modeluuid = item.modeluuid;
diff --git a/app/src/modules/scene/world/world.tsx b/app/src/modules/scene/world/world.tsx
index 1b4f71f..678d1a4 100644
--- a/app/src/modules/scene/world/world.tsx
+++ b/app/src/modules/scene/world/world.tsx
@@ -53,8 +53,8 @@ import { findEnvironment } from "../../../services/factoryBuilder/environment/fi
 import Layer2DVisibility from "../../builder/geomentries/layers/layer2DVisibility";
 import DrieHtmlTemp from "../mqttTemp/drieHtmlTemp";
 import ZoneGroup from "../../builder/groups/zoneGroup";
-import Agv from "../../builder/agv/agv";
 import useModuleStore from "../../../store/useModuleStore";
+import NavMeshCreator from "../../builder/agv/navMeshCreator";
 
 export default function World() {
   const state = useThree<Types.ThreeState>(); // Importing the state from the useThree hook, which contains the scene, camera, and other Three.js elements.
@@ -368,7 +368,7 @@ export default function World() {
 
       {/* <DrieHtmlTemp itemsGroup={itemsGroup} /> */}
 
-      {activeModule === "simulation" && <Agv lines={lines} />}
+      <NavMeshCreator lines={lines} />
 
     </>
   );
diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index 2769a98..589f7d0 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -3,9 +3,10 @@ import React, { useEffect, useState } from 'react';
 import * as THREE from 'three';
 import * as Types from '../../../types/world/worldTypes';
 import { QuadraticBezierLine } from '@react-three/drei';
-import { useIsConnecting, useSimulationStates } from '../../../store/store';
+import { useIsConnecting, useSimulationStates, useSocketStore } from '../../../store/store';
 import useModuleStore from '../../../store/useModuleStore';
 import { usePlayButtonStore } from '../../../store/usePlayButtonStore';
+import { setEventApi } from '../../../services/factoryBuilder/assest/floorAsset/setEventsApt';
 
 function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObject<THREE.Group> }) {
     const { activeModule } = useModuleStore();
@@ -13,6 +14,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
     const { setIsConnecting } = useIsConnecting();
     const { simulationStates, setSimulationStates } = useSimulationStates();
     const { isPlaying } = usePlayButtonStore();
+    const { socket } = useSocketStore();
 
     const [firstSelected, setFirstSelected] = useState<{
         pathUUID: string;
@@ -170,8 +172,57 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
         });
 
         setSimulationStates(updatedPaths);
+
+        const updatedPathDetails = updatedPaths.filter(path =>
+            path.modeluuid === fromPathUUID || path.modeluuid === toPathUUID
+        );
+
+        updateBackend(updatedPathDetails);
     };
 
+    const updateBackend = async (updatedPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+        if (updatedPaths.length === 0) return;
+        const email = localStorage.getItem("email");
+        const organization = email ? email.split("@")[1].split(".")[0] : "";
+
+        updatedPaths.forEach(async (updatedPath) => {
+            if (updatedPath.type === 'Conveyor') {
+
+                // await setEventApi(
+                //   organization,
+                //   updatedPath.modeluuid,
+                //   { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
+                // );
+
+                const data = {
+                    organization: organization,
+                    modeluuid: updatedPath.modeluuid,
+                    eventData: { type: "Conveyor", points: updatedPath.points, speed: updatedPath.speed }
+                }
+
+                socket.emit('v2:model-asset:updateEventData', data);
+
+            } else if (updatedPath.type === 'Vehicle') {
+
+                // await setEventApi(
+                //     organization,
+                //     updatedPath.modeluuid,
+                //     { type: "Vehicle", points: updatedPath.points }
+                // );
+
+                const data = {
+                    organization: organization,
+                    modeluuid: updatedPath.modeluuid,
+                    eventData: { type: "Vehicle", points: updatedPath.points }
+                }
+
+                socket.emit('v2:model-asset:updateEventData', data);
+
+            }
+        })
+
+    }
+
     const handleAddConnection = (fromPathUUID: string, fromUUID: string, toPathUUID: string, toUUID: string) => {
         updatePathConnections(fromPathUUID, fromUUID, toPathUUID, toUUID);
         setFirstSelected(null);
diff --git a/app/src/modules/simulation/path/pathCreation.tsx b/app/src/modules/simulation/path/pathCreation.tsx
index bcb167b..9c5c2e6 100644
--- a/app/src/modules/simulation/path/pathCreation.tsx
+++ b/app/src/modules/simulation/path/pathCreation.tsx
@@ -93,10 +93,21 @@ function PathCreation({
               : point
           ),
         };
+      } else {
+        return path;
       }
-      return path;
     }) as Types.ConveyorEventsSchema[];
 
+    const updatedPath = updatedPaths.find(
+      (path) =>
+        path.type === "Conveyor" &&
+        path.points.some(
+          (point) => point.uuid === selectedActionSphere.points.uuid
+        )
+    );
+
+    // console.log("Updated Path:", updatedPath);
+
     setSimulationStates(updatedPaths);
   };
 
diff --git a/app/src/modules/simulation/simulation.tsx b/app/src/modules/simulation/simulation.tsx
index 55dda4b..98fd3dd 100644
--- a/app/src/modules/simulation/simulation.tsx
+++ b/app/src/modules/simulation/simulation.tsx
@@ -42,7 +42,7 @@ function Simulation() {
           <PathCreation pathsGroupRef={pathsGroupRef} />
           <PathConnector pathsGroupRef={pathsGroupRef} />
           <ProcessContainer />
-          {/* <Agv /> */}
+          <Agv />
         </>
       )}
     </>
diff --git a/app/src/store/store.ts b/app/src/store/store.ts
index eb89771..74f396b 100644
--- a/app/src/store/store.ts
+++ b/app/src/store/store.ts
@@ -359,6 +359,11 @@ export const useSimulationStates = create<SimulationPathsStore>((set) => ({
     })),
 }))
 
+export const useNavMesh = create<any>((set: any) => ({
+  navMesh: null,
+  setNavMesh: (x: any) => set({ navMesh: x }),
+}));
+
 export const useIsConnecting = create<any>((set: any) => ({
   isConnecting: false,
   setIsConnecting: (x: any) => set({ isConnecting: x }),

From c89129e4ce5b7dced063410bc1a54cac6f64e1bd Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 12:42:45 +0530
Subject: [PATCH 11/17] Fix connection validation for Conveyor paths; ensure
 connections are only allowed between start/end points

---
 app/src/modules/simulation/path/pathConnector.tsx | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index 589f7d0..c1a0ca5 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -291,8 +291,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         if (firstPath && secondPath &&
                             firstPath.type === 'Conveyor' &&
                             secondPath.type === 'Conveyor' &&
-                            !firstSelected?.isCorner) {
-                            console.log("Conveyor middle points can only connect to non-conveyor paths");
+                            (!firstSelected?.isCorner || !isStartOrEnd)) {
+                            console.log("Conveyor connections must be between start/end points");
                             return;
                         }
 
@@ -507,7 +507,10 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     !isVehicleConnectingToNonConveyor &&
                     firstSelected.sphereUUID !== sphereUUID &&
                     firstSelected.pathUUID !== pathUUID &&
-                    (firstSelected.isCorner || isConnectable)
+                    (firstSelected.isCorner || isConnectable) &&
+                    !(firstPath?.type === 'Conveyor' &&
+                        pathData.type === 'Conveyor' &&
+                        !(firstSelected.isCorner && isConnectable))
                 ) {
                     snappedSphere = {
                         sphereUUID,

From 1cc877aee1e537afe59ed324c3783853a3bd9c51 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 14:33:25 +0530
Subject: [PATCH 12/17] feat: Enhance simulation state management to include
 StaticMachineEventsSchema

- Updated various modules to accommodate StaticMachineEventsSchema in simulation states.
- Modified event handling in addAssetModel, deleteFloorItems, and loadInitialFloorItems to support new event types.
- Adjusted type definitions in worldTypes.d.ts to define StaticMachineEventsSchema.
- Refactored path management in processCreator and simulation to handle new event types.
- Ensured compatibility in selection and manipulation controls for StaticMachine events.
- Removed bug that made the other assets not droppable
---
 .../geomentries/assets/addAssetModel.ts       |  43 +-
 .../geomentries/assets/deleteFloorItems.ts    |   2 +-
 .../scene/IntialLoad/loadInitialFloorItems.ts |  38 +-
 .../controls/selection/copyPasteControls.tsx  |   6 +-
 .../selection/duplicationControls.tsx         |   6 +-
 .../scene/controls/selection/moveControls.tsx |   6 +-
 .../controls/selection/rotateControls.tsx     |   6 +-
 .../controls/selection/selectionControls.tsx  |   2 +-
 .../simulation/behaviour/behaviour.tsx        |   2 +-
 .../modules/simulation/path/pathConnector.tsx |   2 +-
 .../modules/simulation/path/pathCreation.tsx  | 648 ++++++++----------
 .../simulation/process/processCreator.tsx     |   4 +
 app/src/modules/simulation/simulation.tsx     |   2 +-
 app/src/store/store.ts                        |   8 +-
 app/src/types/world/worldTypes.d.ts           |  14 +
 15 files changed, 412 insertions(+), 377 deletions(-)

diff --git a/app/src/modules/builder/geomentries/assets/addAssetModel.ts b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
index 98aa8fd..e6c56ae 100644
--- a/app/src/modules/builder/geomentries/assets/addAssetModel.ts
+++ b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
@@ -219,7 +219,7 @@ async function handleModelLoad(
             eventData.position = newFloorItem.position;
             eventData.rotation = [model.rotation.x, model.rotation.y, model.rotation.z];
 
-            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                 ...(prevEvents || []),
                 eventData as Types.ConveyorEventsSchema
             ]);
@@ -235,7 +235,7 @@ async function handleModelLoad(
                 points: {
                     uuid: pointUUID,
                     position: res.points.position as [number, number, number],
-                    actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Start', start: {}, hitCount: 1, end: {}, buffer: 0 },
+                    actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: '', start: {}, hitCount: 1, end: {}, buffer: 0 },
                     connections: { source: { modelUUID: model.uuid, pointUUID: pointUUID }, targets: [] },
                     speed: 2,
                 }
@@ -281,13 +281,50 @@ async function handleModelLoad(
                 return updatedItems;
             });
 
-            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                 ...(prevEvents || []),
                 eventData as Types.VehicleEventsSchema
             ]);
 
             socket.emit("v2:model-asset:add", data);
 
+        } else {
+
+            // API
+
+            // await setFloorItemApi(
+            //     organization,
+            //     newFloorItem.modeluuid,
+            //     newFloorItem.modelname,
+            //     newFloorItem.modelfileID,
+            //     newFloorItem.position,
+            //     { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z },
+            //     false,
+            //     true,
+            // );
+
+            // SOCKET
+
+            const data = {
+                organization,
+                modeluuid: newFloorItem.modeluuid,
+                modelname: newFloorItem.modelname,
+                modelfileID: newFloorItem.modelfileID,
+                position: newFloorItem.position,
+                rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z },
+                isLocked: false,
+                isVisible: true,
+                socketId: socket.id
+            };
+
+
+            setFloorItems((prevItems) => {
+                const updatedItems = [...(prevItems || []), newFloorItem];
+                localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
+                return updatedItems;
+            });
+
+            socket.emit("v2:model-asset:add", data);
         }
 
         gsap.to(model.position, { y: newFloorItem.position[1], duration: 1.5, ease: "power2.out" });
diff --git a/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts b/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
index 86500c5..028863c 100644
--- a/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
+++ b/app/src/modules/builder/geomentries/assets/deleteFloorItems.ts
@@ -76,7 +76,7 @@ async function DeleteFloorItems(
             }
             setFloorItems(updatedItems);
 
-            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+            setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                 const updatedEvents = (prevEvents || []).filter(event => event.modeluuid !== removedItem.modeluuid);
                 return updatedEvents;
             });
diff --git a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
index b89cf40..b1d8370 100644
--- a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
+++ b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
@@ -12,7 +12,7 @@ import { getFloorAssets } from '../../../services/factoryBuilder/assest/floorAss
 async function loadInitialFloorItems(
     itemsGroup: Types.RefGroup,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
+    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => void
 ): Promise<void> {
     if (!itemsGroup.current) return;
     let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`;
@@ -137,7 +137,7 @@ async function loadInitialFloorItems(
                     },
                 ]);
 
-                if (item.eventData) {
+                if (item.eventData || item.modelfileID === '67e3db95c2e8f37134526fb2') {
                     processEventData(item, setSimulationStates);
                 }
 
@@ -157,7 +157,7 @@ function processLoadedModel(
     item: Types.EventData,
     itemsGroup: Types.RefGroup,
     setFloorItems: Types.setFloorItemSetState,
-    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => void
+    setSimulationStates: (paths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => void
 ) {
     const model = gltf;
     model.uuid = item.modeluuid;
@@ -192,7 +192,7 @@ function processLoadedModel(
         },
     ]);
 
-    if (item.eventData) {
+    if (item.eventData || item.modelfileID === '67e3db95c2e8f37134526fb2') {
         processEventData(item, setSimulationStates);
     }
 
@@ -210,7 +210,7 @@ function processEventData(item: Types.EventData, setSimulationStates: any) {
         data.position = item.position;
         data.rotation = [item.rotation.x, item.rotation.y, item.rotation.z];
 
-        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
             ...(prevEvents || []),
             data as Types.ConveyorEventsSchema
         ]);
@@ -222,11 +222,37 @@ function processEventData(item: Types.EventData, setSimulationStates: any) {
         data.modelName = item.modelname;
         data.position = item.position;
 
-        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
             ...(prevEvents || []),
             data as Types.VehicleEventsSchema
         ]);
 
+    } else if (item.modelfileID === '67e3db95c2e8f37134526fb2') {
+
+        const pointUUID = THREE.MathUtils.generateUUID();
+        const pointPosition = new THREE.Vector3(0, 1.75, 0);
+
+        const staticMachine: Types.StaticMachineEventsSchema = {
+            modeluuid: item.modeluuid,
+            modelName: item.modelname,
+            type: "StaticMachine",
+            points: {
+                uuid: pointUUID,
+                position: [pointPosition.x, pointPosition.y, pointPosition.z],
+                actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', buffer: 'Inherit', material: 'Inherit', isUsed: false },
+                triggers: { uuid: THREE.MathUtils.generateUUID(), name: 'Trigger 1', type: 'OnComplete' },
+                connections: { source: { modelUUID: item.modeluuid, pointUUID: pointUUID }, targets: [] },
+            },
+            position: item.position
+        };
+
+        console.log(staticMachine);
+
+        
+        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
+            ...(prevEvents || []),
+            staticMachine as Types.StaticMachineEventsSchema
+        ]);
     }
 }
 
diff --git a/app/src/modules/scene/controls/selection/copyPasteControls.tsx b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
index 25434f6..5aecf77 100644
--- a/app/src/modules/scene/controls/selection/copyPasteControls.tsx
+++ b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
@@ -151,7 +151,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -234,7 +234,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.ConveyorEventsSchema
                         ]);
@@ -314,7 +314,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.VehicleEventsSchema
                         ]);
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index 4f65f03..a058a09 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -132,7 +132,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -216,7 +216,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.ConveyorEventsSchema
                         ]);
@@ -295,7 +295,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => [
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
                             ...(prevEvents || []),
                             newEventData as Types.VehicleEventsSchema
                         ]);
diff --git a/app/src/modules/scene/controls/selection/moveControls.tsx b/app/src/modules/scene/controls/selection/moveControls.tsx
index d9300b4..6055ed0 100644
--- a/app/src/modules/scene/controls/selection/moveControls.tsx
+++ b/app/src/modules/scene/controls/selection/moveControls.tsx
@@ -180,7 +180,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -229,7 +229,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
@@ -280,7 +280,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
diff --git a/app/src/modules/scene/controls/selection/rotateControls.tsx b/app/src/modules/scene/controls/selection/rotateControls.tsx
index a47d154..92af77c 100644
--- a/app/src/modules/scene/controls/selection/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selection/rotateControls.tsx
@@ -184,7 +184,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                     return updatedItems;
                 });
 
-                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
+                let eventData: Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema | undefined = simulationStates.find((events) => events.modeluuid === obj.userData.modeluuid);
 
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
@@ -233,7 +233,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         newEventData.position = newFloorItem.position;
                         newEventData.rotation = [obj.rotation.x, obj.rotation.y, obj.rotation.z];
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
@@ -285,7 +285,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
 
-                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                        setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                             const updatedEvents = (prevEvents || []).map(event =>
                                 event.modeluuid === newFloorItem.modeluuid
                                     ? { ...event, ...newEventData }
diff --git a/app/src/modules/scene/controls/selection/selectionControls.tsx b/app/src/modules/scene/controls/selection/selectionControls.tsx
index 5a6426c..8a464d5 100644
--- a/app/src/modules/scene/controls/selection/selectionControls.tsx
+++ b/app/src/modules/scene/controls/selection/selectionControls.tsx
@@ -240,7 +240,7 @@ const SelectionControls: React.FC = () => {
                     }
                 });
 
-                setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+                setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
                     const updatedEvents = (prevEvents || []).filter(event => event.modeluuid !== selectedMesh.uuid);
                     return updatedEvents;
                 });
diff --git a/app/src/modules/simulation/behaviour/behaviour.tsx b/app/src/modules/simulation/behaviour/behaviour.tsx
index 4c7e1ed..57ac7cd 100644
--- a/app/src/modules/simulation/behaviour/behaviour.tsx
+++ b/app/src/modules/simulation/behaviour/behaviour.tsx
@@ -8,7 +8,7 @@ function Behaviour() {
     const { floorItems } = useFloorItems();
 
     useEffect(() => {
-        const newPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[] = [];
+        const newPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[] = [];
 
         // floorItems.forEach((item: Types.FloorItemType) => {
         //     if (item.modelfileID === "672a090f80d91ac979f4d0bd") {
diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index c1a0ca5..28d641f 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -180,7 +180,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
         updateBackend(updatedPathDetails);
     };
 
-    const updateBackend = async (updatedPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]) => {
+    const updateBackend = async (updatedPaths: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => {
         if (updatedPaths.length === 0) return;
         const email = localStorage.getItem("email");
         const organization = email ? email.split("@")[1].split(".")[0] : "";
diff --git a/app/src/modules/simulation/path/pathCreation.tsx b/app/src/modules/simulation/path/pathCreation.tsx
index 9c5c2e6..62bb79e 100644
--- a/app/src/modules/simulation/path/pathCreation.tsx
+++ b/app/src/modules/simulation/path/pathCreation.tsx
@@ -3,386 +3,340 @@ import * as Types from "../../../types/world/worldTypes";
 import { useRef, useState, useEffect, useMemo } from "react";
 import { Sphere, TransformControls } from "@react-three/drei";
 import {
-  useEditingPoint,
-  useEyeDropMode,
-  useIsConnecting,
-  usePreviewPosition,
-  useRenderDistance,
-  useSelectedActionSphere,
-  useSelectedPath,
-  useSimulationStates,
+	useEditingPoint,
+	useEyeDropMode,
+	useIsConnecting,
+	usePreviewPosition,
+	useRenderDistance,
+	useSelectedActionSphere,
+	useSelectedPath,
+	useSimulationStates,
 } from "../../../store/store";
 import { useFrame, useThree } from "@react-three/fiber";
 import { useSubModuleStore } from "../../../store/useModuleStore";
 import { usePlayButtonStore } from "../../../store/usePlayButtonStore";
 import { setEventApi } from "../../../services/factoryBuilder/assest/floorAsset/setEventsApt";
 
-function PathCreation({
-  pathsGroupRef,
-}: {
-  pathsGroupRef: React.MutableRefObject<THREE.Group>;
-}) {
-  const { isPlaying } = usePlayButtonStore();
-  const { renderDistance } = useRenderDistance();
-  const { setSubModule } = useSubModuleStore();
-  const { setSelectedActionSphere, selectedActionSphere } = useSelectedActionSphere();
-  const { eyeDropMode, setEyeDropMode } = useEyeDropMode();
-  const { editingPoint, setEditingPoint } = useEditingPoint();
-  const { previewPosition, setPreviewPosition } = usePreviewPosition();
-  const { raycaster, camera, pointer, gl } = useThree();
-  const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
-  const { setSelectedPath } = useSelectedPath();
-  const { simulationStates, setSimulationStates } = useSimulationStates();
-  const { isConnecting } = useIsConnecting();
+function PathCreation({ pathsGroupRef, }: { pathsGroupRef: React.MutableRefObject<THREE.Group>; }) {
+	const { isPlaying } = usePlayButtonStore();
+	const { renderDistance } = useRenderDistance();
+	const { setSubModule } = useSubModuleStore();
+	const { setSelectedActionSphere, selectedActionSphere } = useSelectedActionSphere();
+	const { eyeDropMode, setEyeDropMode } = useEyeDropMode();
+	const { editingPoint, setEditingPoint } = useEditingPoint();
+	const { previewPosition, setPreviewPosition } = usePreviewPosition();
+	const { raycaster, camera, pointer, gl } = useThree();
+	const { setSelectedPath } = useSelectedPath();
+	const { simulationStates, setSimulationStates } = useSimulationStates();
+	const { isConnecting } = useIsConnecting();
+	const plane = useMemo(() => new THREE.Plane(new THREE.Vector3(0, 1, 0), 0), []);
 
-  const groupRefs = useRef<{ [key: string]: THREE.Group }>({});
-  const sphereRefs = useRef<{ [key: string]: THREE.Mesh }>({});
-  const isMovingRef = useRef(false);
-  const transformRef = useRef<any>(null);
-  const [transformMode, setTransformMode] = useState<"translate" | "rotate" | null>(null);
+	const groupRefs = useRef<{ [key: string]: THREE.Group }>({});
+	const sphereRefs = useRef<{ [key: string]: THREE.Mesh }>({});
+	const isMovingRef = useRef(false);
+	const transformRef = useRef<any>(null);
+	const [transformMode, setTransformMode] = useState<"translate" | "rotate" | null>(null);
 
-  useEffect(() => {
-    setTransformMode(null);
-    const handleKeyDown = (e: KeyboardEvent) => {
-      if (!selectedActionSphere) return;
-      if (e.key === "g") {
-        setTransformMode((prev) => (prev === "translate" ? null : "translate"));
-      }
-      if (e.key === "r") {
-        setTransformMode((prev) => (prev === "rotate" ? null : "rotate"));
-      }
-    };
+	useEffect(() => {
+		setTransformMode(null);
+		const handleKeyDown = (e: KeyboardEvent) => {
+			if (!selectedActionSphere) return;
+			if (e.key === "g") {
+				setTransformMode((prev) => (prev === "translate" ? null : "translate"));
+			}
+			if (e.key === "r") {
+				setTransformMode((prev) => (prev === "rotate" ? null : "rotate"));
+			}
+		};
 
-    window.addEventListener("keydown", handleKeyDown);
-    return () => window.removeEventListener("keydown", handleKeyDown);
-  }, [selectedActionSphere]);
+		window.addEventListener("keydown", handleKeyDown);
+		return () => window.removeEventListener("keydown", handleKeyDown);
+	}, [selectedActionSphere]);
 
-  useFrame(() => {
-    Object.values(groupRefs.current).forEach((group) => {
-      if (group) {
-        const distance = new THREE.Vector3(
-          ...group.position.toArray()
-        ).distanceTo(camera.position);
-        group.visible = ((distance <= renderDistance) && !isPlaying);
-      }
-    });
-  });
+	useFrame(() => {
+		Object.values(groupRefs.current).forEach((group) => {
+			if (group) {
+				const distance = new THREE.Vector3(
+					...group.position.toArray()
+				).distanceTo(camera.position);
+				group.visible = ((distance <= renderDistance) && !isPlaying);
+			}
+		});
+	});
 
-  const updateSimulationPaths = () => {
-    if (!selectedActionSphere) return;
+	const updateSimulationPaths = () => {
+		if (!selectedActionSphere) return;
 
-    const updatedPaths = simulationStates.map((path) => {
-      if (path.type === "Conveyor") {
-        return {
-          ...path,
-          points: path.points.map((point) =>
-            point.uuid === selectedActionSphere.points.uuid
-              ? {
-                ...point,
-                position: [
-                  selectedActionSphere.points.position.x,
-                  selectedActionSphere.points.position.y,
-                  selectedActionSphere.points.position.z,
-                ],
-                rotation: [
-                  selectedActionSphere.points.rotation.x,
-                  selectedActionSphere.points.rotation.y,
-                  selectedActionSphere.points.rotation.z,
-                ],
-              }
-              : point
-          ),
-        };
-      } else {
-        return path;
-      }
-    }) as Types.ConveyorEventsSchema[];
+		const updatedPaths = simulationStates.map((path) => {
+			if (path.type === "Conveyor") {
+				return {
+					...path,
+					points: path.points.map((point) =>
+						point.uuid === selectedActionSphere.points.uuid
+							? {
+								...point,
+								position: [
+									selectedActionSphere.points.position.x,
+									selectedActionSphere.points.position.y,
+									selectedActionSphere.points.position.z,
+								],
+								rotation: [
+									selectedActionSphere.points.rotation.x,
+									selectedActionSphere.points.rotation.y,
+									selectedActionSphere.points.rotation.z,
+								],
+							}
+							: point
+					),
+				};
+			} else {
+				return path;
+			}
+		}) as Types.ConveyorEventsSchema[];
 
-    const updatedPath = updatedPaths.find(
-      (path) =>
-        path.type === "Conveyor" &&
-        path.points.some(
-          (point) => point.uuid === selectedActionSphere.points.uuid
-        )
-    );
+		const updatedPath = updatedPaths.find(
+			(path) => path.type === "Conveyor" && path.points.some((point) => point.uuid === selectedActionSphere.points.uuid)
+		);
 
-    // console.log("Updated Path:", updatedPath);
+		// console.log("Updated Path:", updatedPath);
 
-    setSimulationStates(updatedPaths);
-  };
+		setSimulationStates(updatedPaths);
+	};
 
-  useFrame(() => {
-    if (eyeDropMode) {
-      raycaster.setFromCamera(pointer, camera);
-      const intersectionPoint = new THREE.Vector3();
-      const point = raycaster.ray.intersectPlane(plane, intersectionPoint);
+	useFrame(() => {
+		if (eyeDropMode) {
+			raycaster.setFromCamera(pointer, camera);
+			const intersectionPoint = new THREE.Vector3();
+			const point = raycaster.ray.intersectPlane(plane, intersectionPoint);
 
-      if (point) {
-        setPreviewPosition({ x: point.x, y: point.z });
-      }
-    } else {
-      setPreviewPosition(null);
-    }
-  });
+			if (point) {
+				setPreviewPosition({ x: point.x, y: point.z });
+			}
+		} else {
+			setPreviewPosition(null);
+		}
+	});
 
-  useEffect(() => {
-    if (!camera) return;
-    const canvasElement = gl.domElement;
-    canvasElement.tabIndex = 0;
+	useEffect(() => {
+		if (!camera) return;
+		const canvasElement = gl.domElement;
+		canvasElement.tabIndex = 0;
 
-    const onPointerDown = () => {
-      isMovingRef.current = false;
-    };
+		const onPointerDown = () => {
+			isMovingRef.current = false;
+		};
 
-    const onPointerMove = () => {
-      isMovingRef.current = true;
-    };
+		const onPointerMove = () => {
+			isMovingRef.current = true;
+		};
 
-    const onPointerUp = (event: PointerEvent) => {
-      if (
-        !isMovingRef.current &&
-        eyeDropMode &&
-        event.button === 0 &&
-        previewPosition
-      ) {
-        event.preventDefault();
-        if (editingPoint) {
-          handlePointUpdate(editingPoint, previewPosition.x, previewPosition.y);
-          setEditingPoint(null);
-          setEyeDropMode(false);
-        }
-      }
-    };
+		const onPointerUp = (event: PointerEvent) => {
+			if (
+				!isMovingRef.current &&
+				eyeDropMode &&
+				event.button === 0 &&
+				previewPosition
+			) {
+				event.preventDefault();
+				if (editingPoint) {
+					handlePointUpdate(editingPoint, previewPosition.x, previewPosition.y);
+					setEditingPoint(null);
+					setEyeDropMode(false);
+				}
+			}
+		};
 
-    if (eyeDropMode) {
-      canvasElement.addEventListener("pointerdown", onPointerDown);
-      canvasElement.addEventListener("pointermove", onPointerMove);
-      canvasElement.addEventListener("pointerup", onPointerUp);
-    }
+		if (eyeDropMode) {
+			canvasElement.addEventListener("pointerdown", onPointerDown);
+			canvasElement.addEventListener("pointermove", onPointerMove);
+			canvasElement.addEventListener("pointerup", onPointerUp);
+		}
 
-    return () => {
-      canvasElement.removeEventListener("pointerdown", onPointerDown);
-      canvasElement.removeEventListener("pointermove", onPointerMove);
-      canvasElement.removeEventListener("pointerup", onPointerUp);
-    };
-  }, [eyeDropMode, editingPoint, previewPosition]);
+		return () => {
+			canvasElement.removeEventListener("pointerdown", onPointerDown);
+			canvasElement.removeEventListener("pointermove", onPointerMove);
+			canvasElement.removeEventListener("pointerup", onPointerUp);
+		};
+	}, [eyeDropMode, editingPoint, previewPosition]);
 
-  const updateBackend = async (updatedPath: Types.VehicleEventsSchema | undefined) => {
-    if (!updatedPath) return;
-    const email = localStorage.getItem("email");
-    const organization = email ? email.split("@")[1].split(".")[0] : "";
-    await setEventApi(
-      organization,
-      updatedPath.modeluuid,
-      { type: "Vehicle", points: updatedPath.points }
-    );
-  }
+	const updateBackend = async (updatedPath: Types.VehicleEventsSchema | undefined) => {
+		if (!updatedPath) return;
+		const email = localStorage.getItem("email");
+		const organization = email ? email.split("@")[1].split(".")[0] : "";
+		await setEventApi(
+			organization,
+			updatedPath.modeluuid,
+			{ type: "Vehicle", points: updatedPath.points }
+		);
+	}
 
-  const handlePointUpdate = (
-    pointType: "start" | "end",
-    x: number,
-    z: number
-  ) => {
-    if (!selectedActionSphere?.points?.uuid) return;
-    const updatedPaths = simulationStates.map((path) => {
+	const handlePointUpdate = (pointType: "start" | "end", x: number, z: number) => {
+		if (!selectedActionSphere?.points?.uuid) return;
+		const updatedPaths = simulationStates.map((path) => {
 
-      if (
-        path.type === "Vehicle" &&
-        path.points.uuid === selectedActionSphere.points.uuid
-      ) {
-        return {
-          ...path,
-          points: {
-            ...path.points,
-            actions: {
-              ...path.points.actions,
-              [pointType]: {
-                ...path.points.actions[pointType],
-                x: x,
-                y: z,
-              },
-            },
-          },
-        };
-      }
-      return path;
-    });
+			if (path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid) {
+				return {
+					...path,
+					points: {
+						...path.points,
+						actions: {
+							...path.points.actions,
+							[pointType]: { ...path.points.actions[pointType], x: x, y: z, },
+						},
+					},
+				};
+			}
+			return path;
+		});
 
-    const updatedPath = updatedPaths.find(
-      (path): path is Types.VehicleEventsSchema =>
-        path.type === "Vehicle" &&
-        path.points.uuid === selectedActionSphere.points.uuid
-    );
-    updateBackend(updatedPath);
+		const updatedPath = updatedPaths.find((path): path is Types.VehicleEventsSchema => path.type === "Vehicle" && path.points.uuid === selectedActionSphere.points.uuid);
+		updateBackend(updatedPath);
 
-    setSimulationStates(updatedPaths);
-  };
+		setSimulationStates(updatedPaths);
+	};
 
-  return (
-    <group visible={!isPlaying} name="simulation-simulationStates-group" ref={pathsGroupRef}>
-      {simulationStates.map((path) => {
-        if (path.type === "Conveyor") {
-          const points = path.points.map(
-            (point) => new THREE.Vector3(...point.position)
-          );
+	return (
+		<group visible={!isPlaying} name="simulation-simulationStates-group" ref={pathsGroupRef}>
+			{simulationStates.map((path) => {
+				if (path.type === "Conveyor") {
+					const points = path.points.map(
+						(point) => new THREE.Vector3(...point.position)
+					);
 
-          return (
-            <group
-              name={`${path.modeluuid}-event-path`}
-              key={path.modeluuid}
-              ref={(el) => (groupRefs.current[path.modeluuid] = el!)}
-              position={path.position}
-              rotation={path.rotation}
-              onClick={(e) => {
-                if (isConnecting || eyeDropMode) return;
-                e.stopPropagation();
-                setSelectedPath({
-                  path,
-                  group: groupRefs.current[path.modeluuid],
-                });
-                setSelectedActionSphere(null);
-                setTransformMode(null);
-                setSubModule("mechanics");
-              }}
-              onPointerMissed={() => {
-                if (eyeDropMode) return;
-                setSelectedPath(null);
-                setSubModule("properties");
-              }}
-            >
-              {path.points.map((point, index) => (
-                <Sphere
-                  key={point.uuid}
-                  uuid={point.uuid}
-                  position={point.position}
-                  args={[0.15, 32, 32]}
-                  name="events-sphere"
-                  ref={(el) => (sphereRefs.current[point.uuid] = el!)}
-                  onClick={(e) => {
-                    if (isConnecting || eyeDropMode) return;
-                    e.stopPropagation();
-                    setSelectedActionSphere({
-                      path,
-                      points: sphereRefs.current[point.uuid],
-                    });
-                    setSubModule("mechanics");
-                    setSelectedPath(null);
-                  }}
-                  userData={{ points, path }}
-                  onPointerMissed={() => {
-                    if (eyeDropMode) return;
-                    setSubModule("properties");
-                    setSelectedActionSphere(null);
-                  }}
-                >
-                  <meshStandardMaterial
-                    color={
-                      index === 0
-                        ? "orange"
-                        : index === path.points.length - 1
-                          ? "blue"
-                          : "green"
-                    }
-                  />
-                </Sphere>
-              ))}
+					return (
+						<group
+							name={`${path.modeluuid}-${path.type}-path`}
+							key={path.modeluuid}
+							ref={(el) => (groupRefs.current[path.modeluuid] = el!)}
+							position={path.position}
+							rotation={path.rotation}
+							onClick={(e) => {
+								if (isConnecting || eyeDropMode) return;
+								e.stopPropagation();
+								setSelectedPath({
+									path,
+									group: groupRefs.current[path.modeluuid],
+								});
+								setSelectedActionSphere(null);
+								setTransformMode(null);
+								setSubModule("mechanics");
+							}}
+							onPointerMissed={() => {
+								if (eyeDropMode) return;
+								setSelectedPath(null);
+								setSubModule("properties");
+							}}
+						>
+							{path.points.map((point, index) => (
+								<Sphere
+									key={point.uuid}
+									uuid={point.uuid}
+									position={point.position}
+									args={[0.15, 32, 32]}
+									name="events-sphere"
+									ref={(el) => (sphereRefs.current[point.uuid] = el!)}
+									onClick={(e) => {
+										if (isConnecting || eyeDropMode) return;
+										e.stopPropagation();
+										setSelectedActionSphere({
+											path,
+											points: sphereRefs.current[point.uuid],
+										});
+										setSubModule("mechanics");
+										setSelectedPath(null);
+									}}
+									userData={{ points, path }}
+									onPointerMissed={() => {
+										if (eyeDropMode) return;
+										setSubModule("properties");
+										setSelectedActionSphere(null);
+									}}
+								>
+									<meshStandardMaterial
+										color={index === 0 ? "orange" : index === path.points.length - 1 ? "blue" : "green"}
+									/>
+								</Sphere>
+							))}
 
-              {points.slice(0, -1).map((point, index) => {
-                const nextPoint = points[index + 1];
-                const segmentCurve = new THREE.CatmullRomCurve3([
-                  point,
-                  nextPoint,
-                ]);
-                const tubeGeometry = new THREE.TubeGeometry(
-                  segmentCurve,
-                  20,
-                  0.1,
-                  16,
-                  false
-                );
+							{points.slice(0, -1).map((point, index) => {
+								const nextPoint = points[index + 1];
+								const segmentCurve = new THREE.CatmullRomCurve3([point, nextPoint,]);
+								const tubeGeometry = new THREE.TubeGeometry(segmentCurve, 20, 0.1, 16, false);
 
-                return (
-                  <mesh
-                    name="event-connection-tube"
-                    key={`tube-${index}`}
-                    geometry={tubeGeometry}
-                  >
-                    <meshStandardMaterial
-                      transparent
-                      opacity={0.9}
-                      color="red"
-                    />
-                  </mesh>
-                );
-              })}
-            </group>
-          );
-        } else if (path.type === "Vehicle") {
-          return (
-            <group
-              name={`${path.modeluuid}-vehicle-path`}
-              key={path.modeluuid}
-              ref={(el) => (groupRefs.current[path.modeluuid] = el!)}
-              position={path.position}
-              onClick={(e) => {
-                if (isConnecting || eyeDropMode) return;
-                e.stopPropagation();
-                setSelectedPath({
-                  path,
-                  group: groupRefs.current[path.modeluuid],
-                });
-                setSelectedActionSphere(null);
-                setTransformMode(null);
-                setSubModule("mechanics");
-              }}
-              onPointerMissed={() => {
-                if (eyeDropMode) return;
-                setSelectedPath(null);
-                setSubModule("properties");
-              }}
-            >
-              <Sphere
-                key={path.points.uuid}
-                uuid={path.points.uuid}
-                position={path.points.position}
-                args={[0.15, 32, 32]}
-                name="events-sphere"
-                ref={(el) => (sphereRefs.current[path.points.uuid] = el!)}
-                onClick={(e) => {
-                  if (isConnecting || eyeDropMode) return;
-                  e.stopPropagation();
-                  setSelectedActionSphere({
-                    path,
-                    points: sphereRefs.current[path.points.uuid],
-                  });
-                  setSubModule("mechanics");
-                  setSelectedPath(null);
-                }}
-                userData={{ points: path.points, path }}
-                onPointerMissed={() => {
-                  if (eyeDropMode) return;
-                  setSubModule("properties");
-                  setSelectedActionSphere(null);
-                }}
-              >
-                <meshStandardMaterial color="purple" />
-              </Sphere>
-            </group>
-          );
-        }
-        return null;
-      })}
+								return (
+									<mesh name="event-connection-tube" key={`tube-${index}`} geometry={tubeGeometry}>
+										<meshStandardMaterial transparent opacity={0.9} color="red" />
+									</mesh>
+								);
+							})}
+						</group>
+					);
+				} else if (path.type === "Vehicle" || path.type === "StaticMachine") {
+					return (
+						<group
+							name={`${path.modeluuid}-${path.type}-path`}
+							key={path.modeluuid}
+							ref={(el) => (groupRefs.current[path.modeluuid] = el!)}
+							position={path.position}
+							onClick={(e) => {
+								if (isConnecting || eyeDropMode) return;
+								e.stopPropagation();
+								setSelectedPath({
+									path,
+									group: groupRefs.current[path.modeluuid],
+								});
+								setSelectedActionSphere(null);
+								setTransformMode(null);
+								setSubModule("mechanics");
+							}}
+							onPointerMissed={() => {
+								if (eyeDropMode) return;
+								setSelectedPath(null);
+								setSubModule("properties");
+							}}
+						>
+							<Sphere
+								key={path.points.uuid}
+								uuid={path.points.uuid}
+								position={path.points.position}
+								args={[0.15, 32, 32]}
+								name="events-sphere"
+								ref={(el) => (sphereRefs.current[path.points.uuid] = el!)}
+								onClick={(e) => {
+									if (isConnecting || eyeDropMode) return;
+									e.stopPropagation();
+									setSelectedActionSphere({
+										path,
+										points: sphereRefs.current[path.points.uuid],
+									});
+									setSubModule("mechanics");
+									setSelectedPath(null);
+								}}
+								userData={{ points: path.points, path }}
+								onPointerMissed={() => {
+									if (eyeDropMode) return;
+									setSubModule("properties");
+									setSelectedActionSphere(null);
+								}}
+							>
+								<meshStandardMaterial color="purple" />
+							</Sphere>
+						</group>
+					);
+				}
+				return null;
+			})}
 
-      {selectedActionSphere && transformMode && (
-        <TransformControls
-          ref={transformRef}
-          object={selectedActionSphere.points}
-          mode={transformMode}
-          onMouseUp={updateSimulationPaths}
-        />
-      )}
-    </group>
-  );
+			{selectedActionSphere && transformMode && (
+				<TransformControls
+					ref={transformRef}
+					object={selectedActionSphere.points}
+					mode={transformMode}
+					onMouseUp={updateSimulationPaths}
+				/>
+			)}
+		</group>
+	);
 }
 
 export default PathCreation;
diff --git a/app/src/modules/simulation/process/processCreator.tsx b/app/src/modules/simulation/process/processCreator.tsx
index 83089c9..a579719 100644
--- a/app/src/modules/simulation/process/processCreator.tsx
+++ b/app/src/modules/simulation/process/processCreator.tsx
@@ -433,6 +433,7 @@ export interface PathPoint {
 }
 
 export interface SimulationPath {
+  type: string;
   modeluuid: string;
   points: PathPoint[];
   pathPosition: [number, number, number];
@@ -464,6 +465,7 @@ function convertToSimulationPath(
 
   if (path.type === "Conveyor") {
     return {
+      type: path.type,
       modeluuid,
       points: path.points.map((point) => ({
         uuid: point.uuid,
@@ -483,6 +485,7 @@ function convertToSimulationPath(
     };
   } else {
     return {
+      type: path.type,
       modeluuid,
       points: [
         {
@@ -614,6 +617,7 @@ export function useProcessCreation() {
   const [processes, setProcesses] = useState<Process[]>([]);
 
   const hasSpawnAction = useCallback((path: SimulationPath): boolean => {
+    if (path.type !== "Conveyor") return false;
     return path.points.some((point) =>
       point.actions.some((action) => action.type.toLowerCase() === "spawn")
     );
diff --git a/app/src/modules/simulation/simulation.tsx b/app/src/modules/simulation/simulation.tsx
index 98fd3dd..fad837a 100644
--- a/app/src/modules/simulation/simulation.tsx
+++ b/app/src/modules/simulation/simulation.tsx
@@ -19,7 +19,7 @@ function Simulation() {
   const [processes, setProcesses] = useState([]);
 
   useEffect(() => {
-    // console.log('simulationStates: ', simulationStates);
+    console.log('simulationStates: ', simulationStates);
   }, [simulationStates]);
 
   // useEffect(() => {
diff --git a/app/src/store/store.ts b/app/src/store/store.ts
index 74f396b..fc30aba 100644
--- a/app/src/store/store.ts
+++ b/app/src/store/store.ts
@@ -341,12 +341,12 @@ export const useSelectedPath = create<any>((set: any) => ({
 }));
 
 interface SimulationPathsStore {
-  simulationStates: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[];
+  simulationStates: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[];
   setSimulationStates: (
     paths:
-      | (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]
-      | ((prev: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[]
-      ) => (Types.ConveyorEventsSchema | Types.VehicleEventsSchema)[])
+      | (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]
+      | ((prev: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]
+      ) => (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[])
   ) => void;
 }
 
diff --git a/app/src/types/world/worldTypes.d.ts b/app/src/types/world/worldTypes.d.ts
index 3ec0682..85bcb9d 100644
--- a/app/src/types/world/worldTypes.d.ts
+++ b/app/src/types/world/worldTypes.d.ts
@@ -317,6 +317,20 @@ interface VehicleEventsSchema {
     position: [number, number, number];
 }
 
+interface StaticMachineEventsSchema {
+    modeluuid: string;
+    modelName: string;
+    type: 'StaticMachine';
+    points: {
+        uuid: string;
+        position: [number, number, number];
+        actions: { uuid: string; name: string; buffer: number | string; material: string; isUsed: boolean };
+        triggers: { uuid: string; name: string; type: string };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+    };
+    position: [number, number, number];
+}
+
 export type EventData = {
     modeluuid: string;
     modelname: string;

From b89589d8eaaec7a24bbe262ddfe588abb9dabe78 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 15:15:01 +0530
Subject: [PATCH 13/17] refactor: Update connection identifiers from pathUUID
 to modelUUID across simulation components

---
 .../geomentries/assets/addAssetModel.ts       |   2 +-
 .../controls/selection/copyPasteControls.tsx  |   2 +-
 .../selection/duplicationControls.tsx         |   5 +-
 .../scene/controls/selection/moveControls.tsx |   2 +-
 .../controls/selection/rotateControls.tsx     |   4 +-
 .../simulation/behaviour/behaviour.tsx        |   8 +-
 .../modules/simulation/path/pathConnector.tsx | 159 +++++++++++++-----
 .../simulation/process/processAnimator.tsx    |   4 +-
 .../simulation/process/processCreator.tsx     |  48 +++---
 app/src/types/world/worldTypes.d.ts           |  14 +-
 10 files changed, 162 insertions(+), 86 deletions(-)

diff --git a/app/src/modules/builder/geomentries/assets/addAssetModel.ts b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
index e6c56ae..9fc6199 100644
--- a/app/src/modules/builder/geomentries/assets/addAssetModel.ts
+++ b/app/src/modules/builder/geomentries/assets/addAssetModel.ts
@@ -171,7 +171,7 @@ async function handleModelLoad(
                     }],
                     triggers: [],
                     connections: {
-                        source: { pathUUID: model.uuid, pointUUID: pointUUIDs[index] },
+                        source: { modelUUID: model.uuid, pointUUID: pointUUIDs[index] },
                         targets: []
                     }
                 })),
diff --git a/app/src/modules/scene/controls/selection/copyPasteControls.tsx b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
index 5aecf77..8a8c84c 100644
--- a/app/src/modules/scene/controls/selection/copyPasteControls.tsx
+++ b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
@@ -183,7 +183,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                                     : [defaultAction],
                                 triggers: (eventData as Types.ConveyorEventsSchema)?.points[index].triggers,
                                 connections: {
-                                    source: { pathUUID: obj.uuid, pointUUID },
+                                    source: { modelUUID: obj.uuid, pointUUID },
                                     targets: []
                                 }
                             };
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index a058a09..96bd9e2 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -165,7 +165,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                                     : [defaultAction],
                                 triggers: (eventData as Types.ConveyorEventsSchema)?.points[index].triggers,
                                 connections: {
-                                    source: { pathUUID: obj.uuid, pointUUID },
+                                    source: { modelUUID: newFloorItem.modeluuid, pointUUID },
                                     targets: []
                                 }
                             };
@@ -221,7 +221,8 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                             newEventData as Types.ConveyorEventsSchema
                         ]);
 
-                        socket.emit("v2:model-asset:add", data);
+                        console.log('data: ', data);
+                        // socket.emit("v2:model-asset:add", data);
 
                     } else if (eventData.type === 'Vehicle' && eventData) {
                         const createVehiclePoint = () => {
diff --git a/app/src/modules/scene/controls/selection/moveControls.tsx b/app/src/modules/scene/controls/selection/moveControls.tsx
index 6055ed0..9871811 100644
--- a/app/src/modules/scene/controls/selection/moveControls.tsx
+++ b/app/src/modules/scene/controls/selection/moveControls.tsx
@@ -185,7 +185,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
 
-                if (eventData) {
+                if (eventData && eventData.type !== 'StaticMachine') {
                     if (eventData.type === 'Conveyor' && eventData) {
 
                         const backendEventData = {
diff --git a/app/src/modules/scene/controls/selection/rotateControls.tsx b/app/src/modules/scene/controls/selection/rotateControls.tsx
index 92af77c..04a9cd8 100644
--- a/app/src/modules/scene/controls/selection/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selection/rotateControls.tsx
@@ -189,7 +189,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                 const email = localStorage.getItem("email");
                 const organization = email ? email.split("@")[1].split(".")[0] : "default";
 
-                if (eventData) {
+                if (eventData && eventData.type !== 'StaticMachine') {
                     if (eventData.type === 'Conveyor' && eventData) {
 
                         const backendEventData = {
@@ -298,7 +298,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
 
                     }
                 } else {
-
+console.log('hii');
 
                     //REST
 
diff --git a/app/src/modules/simulation/behaviour/behaviour.tsx b/app/src/modules/simulation/behaviour/behaviour.tsx
index 57ac7cd..0ddc3aa 100644
--- a/app/src/modules/simulation/behaviour/behaviour.tsx
+++ b/app/src/modules/simulation/behaviour/behaviour.tsx
@@ -31,7 +31,7 @@ function Behaviour() {
         //                     rotation: [0, 0, 0],
         //                     actions: [{ uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Inherit', material: 'Inherit', delay: 'Inherit', spawnInterval: 'Inherit', isUsed: true }],
         //                     triggers: [],
-        //                     connections: { source: { pathUUID: item.modeluuid, pointUUID: point1UUID }, targets: [] },
+        //                     connections: { source: { modelUUID: item.modeluuid, pointUUID: point1UUID }, targets: [] },
         //                 },
         //                 {
         //                     uuid: middlePointUUID,
@@ -39,7 +39,7 @@ function Behaviour() {
         //                     rotation: [0, 0, 0],
         //                     actions: [{ uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Inherit', material: 'Inherit', delay: 'Inherit', spawnInterval: 'Inherit', isUsed: true }],
         //                     triggers: [],
-        //                     connections: { source: { pathUUID: item.modeluuid, pointUUID: middlePointUUID }, targets: [] },
+        //                     connections: { source: { modelUUID: item.modeluuid, pointUUID: middlePointUUID }, targets: [] },
         //                 },
         //                 {
         //                     uuid: point2UUID,
@@ -47,7 +47,7 @@ function Behaviour() {
         //                     rotation: [0, 0, 0],
         //                     actions: [{ uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Inherit', material: 'Inherit', delay: 'Inherit', spawnInterval: 'Inherit', isUsed: true }],
         //                     triggers: [],
-        //                     connections: { source: { pathUUID: item.modeluuid, pointUUID: point2UUID }, targets: [] },
+        //                     connections: { source: { modelUUID: item.modeluuid, pointUUID: point2UUID }, targets: [] },
         //                 },
         //             ],
         //             position: [...item.position],
@@ -68,7 +68,7 @@ function Behaviour() {
         //                 uuid: pointUUID,
         //                 position: [pointPosition.x, pointPosition.y, pointPosition.z],
         //                 actions: { uuid: THREE.MathUtils.generateUUID(), name: 'Action 1', type: 'Start', start: {}, hitCount: 1, end: {}, buffer: 0 },
-        //                 connections: { source: { pathUUID: item.modeluuid, pointUUID: pointUUID }, targets: [] },
+        //                 connections: { source: { modelUUID: item.modeluuid, pointUUID: pointUUID }, targets: [] },
         //                 speed: 2,
         //             },
         //             position: [...item.position],
diff --git a/app/src/modules/simulation/path/pathConnector.tsx b/app/src/modules/simulation/path/pathConnector.tsx
index 28d641f..8a295be 100644
--- a/app/src/modules/simulation/path/pathConnector.tsx
+++ b/app/src/modules/simulation/path/pathConnector.tsx
@@ -17,7 +17,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
     const { socket } = useSocketStore();
 
     const [firstSelected, setFirstSelected] = useState<{
-        pathUUID: string;
+        modelUUID: string;
         sphereUUID: string;
         position: THREE.Vector3;
         isCorner: boolean;
@@ -26,26 +26,26 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
     const [helperlineColor, setHelperLineColor] = useState<string>('red');
 
     const updatePathConnections = (
-        fromPathUUID: string,
+        fromModelUUID: string,
         fromPointUUID: string,
-        toPathUUID: string,
+        toModelUUID: string,
         toPointUUID: string
     ) => {
         const updatedPaths = simulationStates.map(path => {
             if (path.type === 'Conveyor') {
-                if (path.modeluuid === fromPathUUID) {
+                if (path.modeluuid === fromModelUUID) {
                     return {
                         ...path,
                         points: path.points.map(point => {
                             if (point.uuid === fromPointUUID) {
                                 const newTarget = {
-                                    pathUUID: toPathUUID,
+                                    modelUUID: toModelUUID,
                                     pointUUID: toPointUUID
                                 };
                                 const existingTargets = point.connections.targets || [];
 
                                 if (!existingTargets.some(target =>
-                                    target.pathUUID === newTarget.pathUUID &&
+                                    target.modelUUID === newTarget.modelUUID &&
                                     target.pointUUID === newTarget.pointUUID
                                 )) {
                                     return {
@@ -61,19 +61,19 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         })
                     };
                 }
-                else if (path.modeluuid === toPathUUID) {
+                else if (path.modeluuid === toModelUUID) {
                     return {
                         ...path,
                         points: path.points.map(point => {
                             if (point.uuid === toPointUUID) {
                                 const reverseTarget = {
-                                    pathUUID: fromPathUUID,
+                                    modelUUID: fromModelUUID,
                                     pointUUID: fromPointUUID
                                 };
                                 const existingTargets = point.connections.targets || [];
 
                                 if (!existingTargets.some(target =>
-                                    target.pathUUID === reverseTarget.pathUUID &&
+                                    target.modelUUID === reverseTarget.modelUUID &&
                                     target.pointUUID === reverseTarget.pointUUID
                                 )) {
                                     return {
@@ -90,18 +90,17 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     };
                 }
             }
-            // In the updatePathConnections function, modify the Vehicle handling section:
             else if (path.type === 'Vehicle') {
                 // Handle outgoing connections from Vehicle
-                if (path.modeluuid === fromPathUUID && path.points.uuid === fromPointUUID) {
+                if (path.modeluuid === fromModelUUID && path.points.uuid === fromPointUUID) {
                     const newTarget = {
-                        pathUUID: toPathUUID,
+                        modelUUID: toModelUUID,
                         pointUUID: toPointUUID
                     };
                     const existingTargets = path.points.connections.targets || [];
 
                     // Check if target is a Conveyor
-                    const toPath = simulationStates.find(p => p.modeluuid === toPathUUID);
+                    const toPath = simulationStates.find(p => p.modeluuid === toModelUUID);
                     if (toPath?.type !== 'Conveyor') {
                         console.log("Vehicle can only connect to Conveyors");
                         return path;
@@ -114,7 +113,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     }
 
                     if (!existingTargets.some(target =>
-                        target.pathUUID === newTarget.pathUUID &&
+                        target.modelUUID === newTarget.modelUUID &&
                         target.pointUUID === newTarget.pointUUID
                     )) {
                         return {
@@ -130,15 +129,15 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     }
                 }
                 // Handle incoming connections to Vehicle
-                else if (path.modeluuid === toPathUUID && path.points.uuid === toPointUUID) {
+                else if (path.modeluuid === toModelUUID && path.points.uuid === toPointUUID) {
                     const reverseTarget = {
-                        pathUUID: fromPathUUID,
+                        modelUUID: fromModelUUID,
                         pointUUID: fromPointUUID
                     };
                     const existingTargets = path.points.connections.targets || [];
 
                     // Check if source is a Conveyor
-                    const fromPath = simulationStates.find(p => p.modeluuid === fromPathUUID);
+                    const fromPath = simulationStates.find(p => p.modeluuid === fromModelUUID);
                     if (fromPath?.type !== 'Conveyor') {
                         console.log("Vehicle can only connect to Conveyors");
                         return path;
@@ -151,7 +150,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     }
 
                     if (!existingTargets.some(target =>
-                        target.pathUUID === reverseTarget.pathUUID &&
+                        target.modelUUID === reverseTarget.modelUUID &&
                         target.pointUUID === reverseTarget.pointUUID
                     )) {
                         return {
@@ -168,13 +167,89 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                 }
                 return path;
             }
+            // else if (path.type === 'StaticMachine') {
+            //     if (path.modeluuid === fromModelUUID && path.points.uuid === fromPointUUID) {
+            //         const newTarget = {
+            //             modelUUID: toModelUUID,
+            //             pointUUID: toPointUUID
+            //         };
+            //         const existingTargets = path.points.connections.targets || [];
+
+            //         // Check if target is an ArmBot
+            //         const toPath = simulationStates.find(p => p.modeluuid === toModelUUID);
+            //         if (toPath?.type !== 'ArmBot') {
+            //             console.log("StaticMachine can only connect to ArmBot");
+            //             return path;
+            //         }
+
+            //         // Check if already has a connection
+            //         if (existingTargets.length >= 1) {
+            //             console.log("StaticMachine can have only one connection");
+            //             return path;
+            //         }
+
+            //         if (!existingTargets.some(target =>
+            //             target.modelUUID === newTarget.modelUUID &&
+            //             target.pointUUID === newTarget.pointUUID
+            //         )) {
+            //             return {
+            //                 ...path,
+            //                 points: {
+            //                     ...path.points,
+            //                     connections: {
+            //                         ...path.points.connections,
+            //                         targets: [...existingTargets, newTarget]
+            //                     }
+            //                 }
+            //             };
+            //         }
+            //     }
+            //     // Handle incoming connections to StaticMachine
+            //     else if (path.modeluuid === toModelUUID && path.points.uuid === toPointUUID) {
+            //         const reverseTarget = {
+            //             modelUUID: fromModelUUID,
+            //             pointUUID: fromPointUUID
+            //         };
+            //         const existingTargets = path.points.connections.targets || [];
+
+            //         // Check if source is an ArmBot
+            //         const fromPath = simulationStates.find(p => p.modeluuid === fromModelUUID);
+            //         if (fromPath?.type !== 'ArmBot') {
+            //             console.log("StaticMachine can only connect to ArmBot");
+            //             return path;
+            //         }
+
+            //         // Check if already has a connection
+            //         if (existingTargets.length >= 1) {
+            //             console.log("StaticMachine can have only one connection");
+            //             return path;
+            //         }
+
+            //         if (!existingTargets.some(target =>
+            //             target.modelUUID === reverseTarget.modelUUID &&
+            //             target.pointUUID === reverseTarget.pointUUID
+            //         )) {
+            //             return {
+            //                 ...path,
+            //                 points: {
+            //                     ...path.points,
+            //                     connections: {
+            //                         ...path.points.connections,
+            //                         targets: [...existingTargets, reverseTarget]
+            //                     }
+            //                 }
+            //             };
+            //         }
+            //     }
+            //     return path;
+            // }
             return path;
         });
 
         setSimulationStates(updatedPaths);
 
         const updatedPathDetails = updatedPaths.filter(path =>
-            path.modeluuid === fromPathUUID || path.modeluuid === toPathUUID
+            path.modeluuid === fromModelUUID || path.modeluuid === toModelUUID
         );
 
         updateBackend(updatedPathDetails);
@@ -223,8 +298,8 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
     }
 
-    const handleAddConnection = (fromPathUUID: string, fromUUID: string, toPathUUID: string, toUUID: string) => {
-        updatePathConnections(fromPathUUID, fromUUID, toPathUUID, toUUID);
+    const handleAddConnection = (fromModelUUID: string, fromUUID: string, toModelUUID: string, toUUID: string) => {
+        updatePathConnections(fromModelUUID, fromUUID, toModelUUID, toUUID);
         setFirstSelected(null);
         setCurrentLine(null);
         setIsConnecting(false);
@@ -261,7 +336,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                 const intersected = intersects[0].object;
 
                 if (intersected.name.includes("events-sphere")) {
-                    const pathUUID = intersected.userData.path.modeluuid;
+                    const modelUUID = intersected.userData.path.modeluuid;
                     const sphereUUID = intersected.uuid;
                     const worldPosition = new THREE.Vector3();
                     intersected.getWorldPosition(worldPosition);
@@ -277,9 +352,9 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         isStartOrEnd = sphereUUID === intersected.userData.path.points.uuid;
                     }
 
-                    if (pathUUID) {
-                        const firstPath = simulationStates.find(p => p.modeluuid === firstSelected?.pathUUID);
-                        const secondPath = simulationStates.find(p => p.modeluuid === pathUUID);
+                    if (modelUUID) {
+                        const firstPath = simulationStates.find(p => p.modeluuid === firstSelected?.modelUUID);
+                        const secondPath = simulationStates.find(p => p.modeluuid === modelUUID);
 
                         // Prevent vehicle-to-vehicle connections
                         if (firstPath && secondPath && firstPath.type === 'Vehicle' && secondPath.type === 'Vehicle') {
@@ -299,15 +374,15 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                         // Check if this specific connection already exists
                         const isDuplicateConnection = firstSelected
                             ? simulationStates.some(path => {
-                                if (path.modeluuid === firstSelected.pathUUID) {
+                                if (path.modeluuid === firstSelected.modelUUID) {
                                     if (path.type === 'Conveyor') {
                                         const point = path.points.find(p => p.uuid === firstSelected.sphereUUID);
                                         return point?.connections.targets.some(t =>
-                                            t.pathUUID === pathUUID && t.pointUUID === sphereUUID
+                                            t.modelUUID === modelUUID && t.pointUUID === sphereUUID
                                         );
                                     } else if (path.type === 'Vehicle') {
                                         return path.points.connections.targets.some(t =>
-                                            t.pathUUID === pathUUID && t.pointUUID === sphereUUID
+                                            t.modelUUID === modelUUID && t.pointUUID === sphereUUID
                                         );
                                     }
                                 }
@@ -357,7 +432,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                             }
 
                             // Prevent same-path connections
-                            if (firstSelected.pathUUID === pathUUID) {
+                            if (firstSelected.modelUUID === modelUUID) {
                                 console.log("Cannot connect spheres on the same path.");
                                 return;
                             }
@@ -370,15 +445,15 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                             // All checks passed - make the connection
                             handleAddConnection(
-                                firstSelected.pathUUID,
+                                firstSelected.modelUUID,
                                 firstSelected.sphereUUID,
-                                pathUUID,
+                                modelUUID,
                                 sphereUUID
                             );
                         } else {
                             // First selection - just store it
                             setFirstSelected({
-                                pathUUID,
+                                modelUUID,
                                 sphereUUID,
                                 position: worldPosition,
                                 isCorner: isStartOrEnd
@@ -426,7 +501,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
             );
 
             let point: THREE.Vector3 | null = null;
-            let snappedSphere: { sphereUUID: string, position: THREE.Vector3, pathUUID: string, isCorner: boolean } | null = null;
+            let snappedSphere: { sphereUUID: string, position: THREE.Vector3, modelUUID: string, isCorner: boolean } | null = null;
             let isInvalidConnection = false;
 
             if (intersects.length > 0) {
@@ -446,10 +521,10 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                 const spherePosition = new THREE.Vector3();
                 sphere.getWorldPosition(spherePosition);
                 const pathData = sphere.userData.path;
-                const pathUUID = pathData.modeluuid;
+                const modelUUID = pathData.modeluuid;
 
-                const firstPath = simulationStates.find(p => p.modeluuid === firstSelected.pathUUID);
-                const secondPath = simulationStates.find(p => p.modeluuid === pathUUID);
+                const firstPath = simulationStates.find(p => p.modeluuid === firstSelected.modelUUID);
+                const secondPath = simulationStates.find(p => p.modeluuid === modelUUID);
                 const isVehicleToVehicle = firstPath?.type === 'Vehicle' && secondPath?.type === 'Vehicle';
 
                 // Inside the useFrame hook, where we check for snapped spheres:
@@ -465,15 +540,15 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
 
                 // Check for duplicate connection (regardless of path type)
                 const isDuplicateConnection = simulationStates.some(path => {
-                    if (path.modeluuid === firstSelected.pathUUID) {
+                    if (path.modeluuid === firstSelected.modelUUID) {
                         if (path.type === 'Conveyor') {
                             const point = path.points.find(p => p.uuid === firstSelected.sphereUUID);
                             return point?.connections.targets.some(t =>
-                                t.pathUUID === pathUUID && t.pointUUID === sphereUUID
+                                t.modelUUID === modelUUID && t.pointUUID === sphereUUID
                             );
                         } else if (path.type === 'Vehicle') {
                             return path.points.connections.targets.some(t =>
-                                t.pathUUID === pathUUID && t.pointUUID === sphereUUID
+                                t.modelUUID === modelUUID && t.pointUUID === sphereUUID
                             );
                         }
                     }
@@ -506,7 +581,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     !isVehicleAtMaxConnections &&
                     !isVehicleConnectingToNonConveyor &&
                     firstSelected.sphereUUID !== sphereUUID &&
-                    firstSelected.pathUUID !== pathUUID &&
+                    firstSelected.modelUUID !== modelUUID &&
                     (firstSelected.isCorner || isConnectable) &&
                     !(firstPath?.type === 'Conveyor' &&
                         pathData.type === 'Conveyor' &&
@@ -515,7 +590,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                     snappedSphere = {
                         sphereUUID,
                         position: spherePosition,
-                        pathUUID,
+                        modelUUID,
                         isCorner: isConnectable
                     };
                 } else {
@@ -563,7 +638,7 @@ function PathConnector({ pathsGroupRef }: { pathsGroupRef: React.MutableRefObjec
                 if (path.type === 'Conveyor') {
                     return path.points.flatMap(point =>
                         point.connections.targets.map((target, index) => {
-                            const targetPath = simulationStates.find(p => p.modeluuid === target.pathUUID);
+                            const targetPath = simulationStates.find(p => p.modeluuid === target.modelUUID);
                             if (targetPath?.type === 'Vehicle') return null;
 
                             const fromSphere = pathsGroupRef.current?.getObjectByProperty('uuid', point.uuid);
diff --git a/app/src/modules/simulation/process/processAnimator.tsx b/app/src/modules/simulation/process/processAnimator.tsx
index d82b800..c8cf07f 100644
--- a/app/src/modules/simulation/process/processAnimator.tsx
+++ b/app/src/modules/simulation/process/processAnimator.tsx
@@ -29,8 +29,8 @@ interface ProcessPoint {
   rotation: number[];
   actions: PointAction[];
   connections: {
-    source: { pathUUID: string; pointUUID: string };
-    targets: { pathUUID: string; pointUUID: string }[];
+    source: { modelUUID: string; pointUUID: string };
+    targets: { modelUUID: string; pointUUID: string }[];
   };
 }
 
diff --git a/app/src/modules/simulation/process/processCreator.tsx b/app/src/modules/simulation/process/processCreator.tsx
index a579719..4403a71 100644
--- a/app/src/modules/simulation/process/processCreator.tsx
+++ b/app/src/modules/simulation/process/processCreator.tsx
@@ -29,7 +29,7 @@
 //   position: [number, number, number];
 //   actions: PointAction[];
 //   connections: {
-//     targets: Array<{ pathUUID: string }>;
+//     targets: Array<{ modelUUID: string }>;
 //   };
 // }
 
@@ -72,7 +72,7 @@
 //         actions: point.actions.map(normalizeAction), // Preserve exact actions
 //         connections: {
 //           targets: point.connections.targets.map((target) => ({
-//             pathUUID: target.pathUUID,
+//             modelUUID: target.modelUUID,
 //           })),
 //         },
 //       })),
@@ -94,7 +94,7 @@
 //             : [normalizeAction(path.point.actions)],
 //           connections: {
 //             targets: path.point.connections.targets.map((target) => ({
-//               pathUUID: target.pathUUID,
+//               modelUUID: target.modelUUID,
 //             })),
 //           },
 //         },
@@ -137,18 +137,18 @@
 //   // Check if current last connects to next last (requires reversal)
 //   const connectsToLast = currentLastPoint.connections.targets.some(
 //     (target) =>
-//       target.pathUUID === nextPath.modeluuid &&
+//       target.modelUUID === nextPath.modeluuid &&
 //       nextLastPoint.connections.targets.some(
-//         (t) => t.pathUUID === currentPath.modeluuid
+//         (t) => t.modelUUID === currentPath.modeluuid
 //       )
 //   );
 
 //   // Check if current last connects to next first (no reversal needed)
 //   const connectsToFirst = currentLastPoint.connections.targets.some(
 //     (target) =>
-//       target.pathUUID === nextPath.modeluuid &&
+//       target.modelUUID === nextPath.modeluuid &&
 //       nextFirstPoint.connections.targets.some(
-//         (t) => t.pathUUID === currentPath.modeluuid
+//         (t) => t.modelUUID === currentPath.modeluuid
 //       )
 //   );
 
@@ -249,10 +249,10 @@
 //         // Process outgoing connections
 //         for (const point of currentPath.points) {
 //           for (const target of point.connections.targets) {
-//             if (!visited.has(target.pathUUID)) {
-//               const targetPath = pathMap.get(target.pathUUID);
+//             if (!visited.has(target.modelUUID)) {
+//               const targetPath = pathMap.get(target.modelUUID);
 //               if (targetPath) {
-//                 visited.add(target.pathUUID);
+//                 visited.add(target.modelUUID);
 //                 queue.push(targetPath);
 //               }
 //             }
@@ -264,7 +264,7 @@
 //           if (!visited.has(uuid)) {
 //             const hasConnectionToCurrent = path.points.some((point) =>
 //               point.connections.targets.some(
-//                 (t) => t.pathUUID === currentPath.modeluuid
+//                 (t) => t.modelUUID === currentPath.modeluuid
 //               )
 //             );
 //             if (hasConnectionToCurrent) {
@@ -335,7 +335,7 @@
 //         ),
 //         connections: path.points
 //           .flatMap((p: PathPoint) =>
-//             p.connections.targets.map((t: { pathUUID: string }) => t.pathUUID)
+//             p.connections.targets.map((t: { modelUUID: string }) => t.modelUUID)
 //           )
 //           .join(","),
 //       }));
@@ -428,7 +428,7 @@ export interface PathPoint {
   position: [number, number, number];
   actions: PointAction[];
   connections: {
-    targets: Array<{ pathUUID: string }>;
+    targets: Array<{ modelUUID: string }>;
   };
 }
 
@@ -473,7 +473,7 @@ function convertToSimulationPath(
         actions: point.actions.map(normalizeAction), // Preserve exact actions
         connections: {
           targets: point.connections.targets.map((target) => ({
-            pathUUID: target.pathUUID,
+            modelUUID: target.modelUUID,
           })),
         },
       })),
@@ -496,7 +496,7 @@ function convertToSimulationPath(
             : [normalizeAction(path.points.actions)],
           connections: {
             targets: path.points.connections.targets.map((target) => ({
-              pathUUID: target.pathUUID,
+              modelUUID: target.modelUUID,
             })),
           },
         },
@@ -539,18 +539,18 @@ function shouldReverseNextPath(
   // Check if current last connects to next last (requires reversal)
   const connectsToLast = currentLastPoint.connections.targets.some(
     (target) =>
-      target.pathUUID === nextPath.modeluuid &&
+      target.modelUUID === nextPath.modeluuid &&
       nextLastPoint.connections.targets.some(
-        (t) => t.pathUUID === currentPath.modeluuid
+        (t) => t.modelUUID === currentPath.modeluuid
       )
   );
 
   // Check if current last connects to next first (no reversal needed)
   const connectsToFirst = currentLastPoint.connections.targets.some(
     (target) =>
-      target.pathUUID === nextPath.modeluuid &&
+      target.modelUUID === nextPath.modeluuid &&
       nextFirstPoint.connections.targets.some(
-        (t) => t.pathUUID === currentPath.modeluuid
+        (t) => t.modelUUID === currentPath.modeluuid
       )
   );
 
@@ -678,10 +678,10 @@ export function useProcessCreation() {
         // Process outgoing connections
         for (const point of currentPath.points) {
           for (const target of point.connections.targets) {
-            if (!visited.has(target.pathUUID)) {
-              const targetPath = pathMap.get(target.pathUUID);
+            if (!visited.has(target.modelUUID)) {
+              const targetPath = pathMap.get(target.modelUUID);
               if (targetPath) {
-                visited.add(target.pathUUID);
+                visited.add(target.modelUUID);
                 queue.push(targetPath);
               }
             }
@@ -693,7 +693,7 @@ export function useProcessCreation() {
           if (!visited.has(uuid)) {
             const hasConnectionToCurrent = path.points.some((point) =>
               point.connections.targets.some(
-                (t) => t.pathUUID === currentPath.modeluuid
+                (t) => t.modelUUID === currentPath.modeluuid
               )
             );
             if (hasConnectionToCurrent) {
@@ -768,7 +768,7 @@ const ProcessCreator: React.FC<ProcessCreatorProps> = React.memo(
           .join(","),
         connections: path.points
           .flatMap((p: PathPoint) =>
-            p.connections.targets.map((t: { pathUUID: string }) => t.pathUUID)
+            p.connections.targets.map((t: { modelUUID: string }) => t.modelUUID)
           )
           .join(","),
       }));
diff --git a/app/src/types/world/worldTypes.d.ts b/app/src/types/world/worldTypes.d.ts
index 85bcb9d..9038efe 100644
--- a/app/src/types/world/worldTypes.d.ts
+++ b/app/src/types/world/worldTypes.d.ts
@@ -271,10 +271,10 @@ export type RefCSM = React.MutableRefObject<CSM>;
 export type RefCSMHelper = React.MutableRefObject<CSMHelper>;
 
 interface PathConnection {
-    fromPathUUID: string;
+    fromModelUUID: string;
     fromUUID: string;
     toConnections: {
-        toPathUUID: string;
+        toModelUUID: string;
         toUUID: string;
     }[];
 }
@@ -296,7 +296,7 @@ interface ConveyorEventsSchema {
         rotation: [number, number, number];
         actions: { uuid: string; name: string; type: string; material: string; delay: number | string; spawnInterval: number | string; isUsed: boolean }[] | [];
         triggers: { uuid: string; name: string; type: string; isUsed: boolean; bufferTime: number }[] | [];
-        connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
     }[];
     position: [number, number, number];
     rotation: [number, number, number];
@@ -311,7 +311,7 @@ interface VehicleEventsSchema {
         uuid: string;
         position: [number, number, number];
         actions: { uuid: string; name: string; type: string; start: { x: number, y: number } | {}, hitCount: number, end: { x: number, y: number } | {}, buffer: number };
-        connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
         speed: number;
     };
     position: [number, number, number];
@@ -326,7 +326,7 @@ interface StaticMachineEventsSchema {
         position: [number, number, number];
         actions: { uuid: string; name: string; buffer: number | string; material: string; isUsed: boolean };
         triggers: { uuid: string; name: string; type: string };
-        connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
     };
     position: [number, number, number];
 }
@@ -347,7 +347,7 @@ export type EventData = {
             rotation: [number, number, number];
             actions: { uuid: string; name: string; type: string; material: string; delay: number | string; spawnInterval: number | string; isUsed: boolean }[] | [];
             triggers: { uuid: string; name: string; type: string; isUsed: boolean; bufferTime: number }[] | [];
-            connections: { source: { pathUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+            connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
         }[];
         speed: number | string;
     } | {
@@ -356,7 +356,7 @@ export type EventData = {
             uuid: string;
             position: [number, number, number];
             actions: { uuid: string; name: string; type: string; start: { x: number, y: number } | {}, hitCount: number, end: { x: number, y: number } | {}, buffer: number };
-            connections: { source: { modelUUID: string; pointUUID: string }; targets: { pathUUID: string; pointUUID: string }[] };
+            connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
             speed: number;
         };
     };

From 58d82da349a592d638a356dba07c8f2900bb4128 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 16:15:11 +0530
Subject: [PATCH 14/17] refactor: Simplify eventData structure in controls and
 remove console logs from simulation

---
 .../scene/IntialLoad/loadInitialFloorItems.ts       |  3 ---
 .../scene/controls/selection/copyPasteControls.tsx  |  9 ++++-----
 .../controls/selection/duplicationControls.tsx      | 11 +++++------
 .../scene/controls/selection/moveControls.tsx       | 12 ++++++------
 .../scene/controls/selection/rotateControls.tsx     | 13 ++++++-------
 app/src/modules/simulation/simulation.tsx           |  2 +-
 6 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
index b1d8370..ec6033b 100644
--- a/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
+++ b/app/src/modules/scene/IntialLoad/loadInitialFloorItems.ts
@@ -245,9 +245,6 @@ function processEventData(item: Types.EventData, setSimulationStates: any) {
             },
             position: item.position
         };
-
-        console.log(staticMachine);
-
         
         setSimulationStates((prevEvents: (Types.ConveyorEventsSchema | Types.VehicleEventsSchema | Types.StaticMachineEventsSchema)[]) => [
             ...(prevEvents || []),
diff --git a/app/src/modules/scene/controls/selection/copyPasteControls.tsx b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
index 8a8c84c..44dc2bf 100644
--- a/app/src/modules/scene/controls/selection/copyPasteControls.tsx
+++ b/app/src/modules/scene/controls/selection/copyPasteControls.tsx
@@ -224,11 +224,11 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
@@ -277,7 +277,6 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                         const backendEventData = {
                             type: 'Vehicle',
                             points: createVehiclePoint(),
-                            speed: (eventData as Types.VehicleEventsSchema)?.points.speed
                         };
 
                         // API
@@ -305,11 +304,11 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
diff --git a/app/src/modules/scene/controls/selection/duplicationControls.tsx b/app/src/modules/scene/controls/selection/duplicationControls.tsx
index 96bd9e2..0c22f60 100644
--- a/app/src/modules/scene/controls/selection/duplicationControls.tsx
+++ b/app/src/modules/scene/controls/selection/duplicationControls.tsx
@@ -206,11 +206,11 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
@@ -221,8 +221,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                             newEventData as Types.ConveyorEventsSchema
                         ]);
 
-                        console.log('data: ', data);
-                        // socket.emit("v2:model-asset:add", data);
+                        socket.emit("v2:model-asset:add", data);
 
                     } else if (eventData.type === 'Vehicle' && eventData) {
                         const createVehiclePoint = () => {
@@ -287,11 +286,11 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
diff --git a/app/src/modules/scene/controls/selection/moveControls.tsx b/app/src/modules/scene/controls/selection/moveControls.tsx
index 9871811..2693531 100644
--- a/app/src/modules/scene/controls/selection/moveControls.tsx
+++ b/app/src/modules/scene/controls/selection/moveControls.tsx
@@ -205,7 +205,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         //     obj.userData.modelId,
                         //     false,
                         //     true,
-                        //     backendEventData
+                        //     { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed }
                         // );
 
                         //SOCKET
@@ -219,11 +219,11 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
@@ -257,7 +257,7 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                         //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
                         //     false,
                         //     true,
-                        //     backendEventData
+                        //     { type: backendEventData.type, points: backendEventData.points }
                         // );
 
                         //SOCKET
@@ -271,11 +271,11 @@ function MoveControls({ movedObjects, setMovedObjects, itemsGroupRef, copiedObje
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
diff --git a/app/src/modules/scene/controls/selection/rotateControls.tsx b/app/src/modules/scene/controls/selection/rotateControls.tsx
index 04a9cd8..bff9fd6 100644
--- a/app/src/modules/scene/controls/selection/rotateControls.tsx
+++ b/app/src/modules/scene/controls/selection/rotateControls.tsx
@@ -209,7 +209,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
                         //     false,
                         //     true,
-                        //     backendEventData
+                        //     { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed }
                         // );
 
                         //SOCKET
@@ -223,11 +223,11 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points, speed: backendEventData.speed };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
@@ -262,7 +262,7 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                         //     { "x": obj.rotation.x, "y": obj.rotation.y, "z": obj.rotation.z },
                         //     false,
                         //     true,
-                        //     backendEventData
+                        //     { type: backendEventData.type, points: backendEventData.points }
                         // );
 
                         //SOCKET
@@ -276,11 +276,11 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
                             rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
                             isLocked: false,
                             isVisible: true,
-                            eventData: backendEventData,
+                            eventData: { type: backendEventData.type, points: backendEventData.points },
                             socketId: socket.id,
                         };
 
-                        const newEventData: any = backendEventData;
+                        const newEventData: any = { type: backendEventData.type, points: backendEventData.points };
                         newEventData.modeluuid = newFloorItem.modeluuid;
                         newEventData.modelName = newFloorItem.modelname;
                         newEventData.position = newFloorItem.position;
@@ -298,7 +298,6 @@ function RotateControls({ rotatedObjects, setRotatedObjects, movedObjects, setMo
 
                     }
                 } else {
-console.log('hii');
 
                     //REST
 
diff --git a/app/src/modules/simulation/simulation.tsx b/app/src/modules/simulation/simulation.tsx
index fad837a..98fd3dd 100644
--- a/app/src/modules/simulation/simulation.tsx
+++ b/app/src/modules/simulation/simulation.tsx
@@ -19,7 +19,7 @@ function Simulation() {
   const [processes, setProcesses] = useState([]);
 
   useEffect(() => {
-    console.log('simulationStates: ', simulationStates);
+    // console.log('simulationStates: ', simulationStates);
   }, [simulationStates]);
 
   // useEffect(() => {

From c5d45074004b652e18d88aad9cb884c50a1c4508 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 17:40:46 +0530
Subject: [PATCH 15/17] feat: Log camera update response data for debugging
 purposes; adjust user position parameter in findEnvironment function

---
 app/src/modules/collaboration/collabCams.tsx  | 346 +++++++++---------
 .../modules/collaboration/collabUserIcon.tsx  |  19 +-
 .../collaboration/socketResponses.dev.tsx     |   2 +-
 .../modules/collaboration/users/Avatar.tsx    |  18 +-
 .../environment/findEnvironment.ts            |   2 +-
 app/src/store/store.ts                        |  12 +-
 6 files changed, 211 insertions(+), 188 deletions(-)

diff --git a/app/src/modules/collaboration/collabCams.tsx b/app/src/modules/collaboration/collabCams.tsx
index 20d983e..a1383f2 100644
--- a/app/src/modules/collaboration/collabCams.tsx
+++ b/app/src/modules/collaboration/collabCams.tsx
@@ -12,203 +12,189 @@ import CollabUserIcon from "./collabUserIcon";
 import { getAvatarColor } from "./users/functions/getAvatarColor";
 
 const CamModelsGroup = () => {
-  let navigate = useNavigate();
-  const groupRef = useRef<THREE.Group>(null);
-  const email = localStorage.getItem("email");
-  const { activeUsers, setActiveUsers } = useActiveUsers();
-  const { socket } = useSocketStore();
-  const loader = new GLTFLoader();
-  const dracoLoader = new DRACOLoader();
-  const [cams, setCams] = useState<any[]>([]);
-  const [models, setModels] = useState<Record<string, { targetPosition: THREE.Vector3; targetRotation: THREE.Euler }>>({});
+	const navigate = useNavigate();
+	const groupRef = useRef<THREE.Group>(null);
+	const email = localStorage.getItem("email");
+	const { activeUsers, setActiveUsers } = useActiveUsers();
+	const { socket } = useSocketStore();
 
-  dracoLoader.setDecoderPath("three/examples/jsm/libs/draco/gltf/");
-  loader.setDRACOLoader(dracoLoader);
+	const loader = new GLTFLoader();
+	const dracoLoader = new DRACOLoader();
+	dracoLoader.setDecoderPath("three/examples/jsm/libs/draco/gltf/");
+	loader.setDRACOLoader(dracoLoader);
 
-  useEffect(() => {
-    if (!email) {
-      navigate("/");
-    }
-    if (!socket) return;
-    const organization = email!.split("@")[1].split(".")[0];
+	const [cams, setCams] = useState<any[]>([]);
+	const [models, setModels] = useState<Record<string, { targetPosition: THREE.Vector3; targetRotation: THREE.Euler }>>({});
 
-    socket.on("userConnectResponse", (data: any) => {
-      if (!groupRef.current) return;
-      if (data.data.userData.email === email) return;
-      if (socket.id === data.socketId || organization !== data.organization)
-        return;
+	const dedupeCams = (cams: any[]) => {
+		const seen = new Set();
+		return cams.filter((cam) => {
+			if (seen.has(cam.uuid)) return false;
+			seen.add(cam.uuid);
+			return true;
+		});
+	};
 
-      const model = groupRef.current.getObjectByProperty(
-        "uuid",
-        data.data.userData._id
-      );
-      if (model) {
-        groupRef.current.remove(model);
-      }
-      loader.load(camModel, (gltf) => {
-        const newModel = gltf.scene.clone();
-        newModel.uuid = data.data.userData._id;
-        newModel.position.set(
-          data.data.position.x,
-          data.data.position.y,
-          data.data.position.z
-        );
-        newModel.rotation.set(
-          data.data.rotation.x,
-          data.data.rotation.y,
-          data.data.rotation.z
-        );
-        newModel.userData = data.data.userData;
-        setCams((prev) => [...prev, newModel]);
-        setActiveUsers([...activeUsers, data.data.userData]);
-      });
-    });
+	const dedupeUsers = (users: any[]) => {
+		const seen = new Set();
+		return users.filter((user) => {
+			if (seen.has(user._id)) return false;
+			seen.add(user._id);
+			return true;
+		});
+	};
 
-    // socket.on("users:online", (data: any) => { 
-    //   console.log('users online: ', data);
-    // })
+	useEffect(() => {
+		if (!email) navigate("/");
 
-    socket.on("userDisConnectResponse", (data: any) => {
-      if (!groupRef.current) return;
-      if (socket.id === data.socketId || organization !== data.organization)
-        return;
+		if (!socket) return;
+		const organization = email!.split("@")[1].split(".")[0];
 
-      setCams((prev) =>
-        prev.filter((cam) => cam.uuid !== data.data.userData._id)
-      );
-      setActiveUsers(
-        activeUsers.filter((user: any) => user._id !== data.data.userData._id)
-      );
-    });
+		socket.on("userConnectResponse", (data: any) => {
+			if (!groupRef.current) return;
+			if (data.data.userData.email === email) return;
+			if (socket.id === data.socketId || organization !== data.organization) return;
 
-    socket.on("cameraUpdateResponse", (data: any) => {
-      if (
-        !groupRef.current ||
-        socket.id === data.socketId ||
-        organization !== data.organization
-      )
-        return;
+			const model = groupRef.current.getObjectByProperty("uuid", data.data.userData._id);
+			if (model) {
+				groupRef.current.remove(model);
+			}
 
-      setModels((prev) => ({
-        ...prev,
-        [data.data.userId]: {
-          targetPosition: new THREE.Vector3(
-            data.data.position.x,
-            data.data.position.y,
-            data.data.position.z
-          ),
-          targetRotation: new THREE.Euler(
-            data.data.rotation.x,
-            data.data.rotation.y,
-            data.data.rotation.z
-          ),
-        },
-      }));
-    });
+			loader.load(camModel, (gltf) => {
+				const newModel = gltf.scene.clone();
+				newModel.uuid = data.data.userData._id;
+				newModel.position.set(
+					data.data.position.x,
+					data.data.position.y,
+					data.data.position.z
+				);
+				newModel.rotation.set(
+					data.data.rotation.x,
+					data.data.rotation.y,
+					data.data.rotation.z
+				);
+				newModel.userData = data.data.userData;
 
-    return () => {
-      socket.off("userConnectRespones");
-      socket.off("userDisConnectRespones");
-      socket.off("cameraUpdateResponse");
-    };
-  }, [socket]);
+				setCams((prev) => dedupeCams([...prev, newModel]));
+				setActiveUsers((prev: any) =>
+					dedupeUsers([...prev, data.data.userData])
+				);
+			});
+		});
 
+		socket.on("userDisConnectResponse", (data: any) => {
+			if (!groupRef.current) return;
+			if (socket.id === data.socketId || organization !== data.organization) return;
 
-  // useEffect(() => {
-  //   console.log(activeUsers);
-  // }, [activeUsers])
+			setCams((prev) =>
+				prev.filter((cam) => cam.uuid !== data.data.userData._id)
+			);
+			setActiveUsers((prev: any) =>
+				prev.filter((user: any) => user._id !== data.data.userData._id)
+			);
+		});
 
-  // useEffect(() => {
-  //   console.log(models);
-  // }, [models])
+		socket.on("cameraUpdateResponse", (data: any) => {
+			if (
+				!groupRef.current ||
+				socket.id === data.socketId ||
+				organization !== data.organization
+			)
+				return;
 
-  useFrame(() => {
-    if (!groupRef.current) return;
-    Object.keys(models).forEach((uuid) => {
-      const model = groupRef.current!.getObjectByProperty("uuid", uuid);
-      if (!model) return;
+			setModels((prev) => ({
+				...prev,
+				[data.data.userId]: {
+					targetPosition: new THREE.Vector3(
+						data.data.position.x,
+						data.data.position.y,
+						data.data.position.z
+					),
+					targetRotation: new THREE.Euler(
+						data.data.rotation.x,
+						data.data.rotation.y,
+						data.data.rotation.z
+					),
+				},
+			}));
+		});
 
-      const { targetPosition, targetRotation } = models[uuid];
-      model.position.lerp(targetPosition, 0.1);
-      model.rotation.x = THREE.MathUtils.lerp(
-        model.rotation.x,
-        targetRotation.x,
-        0.1
-      );
-      model.rotation.y = THREE.MathUtils.lerp(
-        model.rotation.y,
-        targetRotation.y,
-        0.1
-      );
-      model.rotation.z = THREE.MathUtils.lerp(
-        model.rotation.z,
-        targetRotation.z,
-        0.1
-      );
-    });
-  });
+		return () => {
+			socket.off("userConnectResponse");
+			socket.off("userDisConnectResponse");
+			socket.off("cameraUpdateResponse");
+		};
+	}, [socket]);
 
-  useEffect(() => {
-    if (!groupRef.current) return;
-    const organization = email!.split("@")[1].split(".")[0];
-    getActiveUsersData(organization).then((data) => {
-      const filteredData = data.cameraDatas.filter(
-        (camera: any) => camera.userData.email !== email
-      );
-      let a: any = [];
-      if (filteredData.length > 0) {
-        loader.load(camModel, (gltf) => {
-          const newCams = filteredData.map((cam: any) => {
-            const newModel = gltf.scene.clone();
-            newModel.uuid = cam.userData._id;
-            newModel.position.set(
-              cam.position.x,
-              cam.position.y,
-              cam.position.z
-            );
-            newModel.rotation.set(
-              cam.rotation.x,
-              cam.rotation.y,
-              cam.rotation.z
-            );
-            newModel.userData = cam.userData;
-            a.push(cam.userData);
-            return newModel;
-          });
-          setActiveUsers(a);
-          setCams((prev) => [...prev, ...newCams]);
-        });
-      }
-    });
-  }, []);
+	useFrame(() => {
+		if (!groupRef.current) return;
+		Object.keys(models).forEach((uuid) => {
+			const model = groupRef.current!.getObjectByProperty("uuid", uuid);
+			if (!model) return;
 
-  return (
-    <group ref={groupRef} name="Cam-Model-Group">
-      {cams.map((cam, index) => (
-        <primitive key={index} object={cam}>
-          <Html
-            as="div"
-            center
-            zIndexRange={[1, 0]}
-            sprite
-            style={{
-              color: "white",
-              textAlign: "center",
-              fontFamily: "Arial, sans-serif",
-            }}
-            position={[-0.015, 0, 0.7]}
-          >
-            <CollabUserIcon
-              userImage={""}
-              userName={cam.userData.userName}
-              index={index}
-              color={getAvatarColor(index)}
-            />
-          </Html>
-        </primitive>
-      ))}
-    </group>
-  );
+			const { targetPosition, targetRotation } = models[uuid];
+			model.position.lerp(targetPosition, 0.1);
+			model.rotation.x = THREE.MathUtils.lerp(model.rotation.x, targetRotation.x, 0.1);
+			model.rotation.y = THREE.MathUtils.lerp(model.rotation.y, targetRotation.y, 0.1);
+			model.rotation.z = THREE.MathUtils.lerp(model.rotation.z, targetRotation.z, 0.1);
+		});
+	});
+
+	useEffect(() => {
+		if (!groupRef.current) return;
+		const organization = email!.split("@")[1].split(".")[0];
+
+		getActiveUsersData(organization).then((data) => {
+			const filteredData = data.cameraDatas.filter(
+				(camera: any) => camera.userData.email !== email
+			);
+
+			if (filteredData.length > 0) {
+				loader.load(camModel, (gltf) => {
+					const newCams = filteredData.map((cam: any) => {
+						const newModel = gltf.scene.clone();
+						newModel.uuid = cam.userData._id;
+						newModel.position.set(cam.position.x, cam.position.y, cam.position.z);
+						newModel.rotation.set(cam.rotation.x, cam.rotation.y, cam.rotation.z);
+						newModel.userData = cam.userData;
+						return newModel;
+					});
+
+					const users = filteredData.map((cam: any) => cam.userData);
+					setActiveUsers((prev: any) => dedupeUsers([...prev, ...users]));
+					setCams((prev) => dedupeCams([...prev, ...newCams]));
+				});
+			}
+		});
+	}, []);
+
+	return (
+		<group ref={groupRef} name="Cam-Model-Group">
+			{cams.map((cam, index) => (
+				<primitive key={cam.uuid} object={cam}>
+					<Html
+						as="div"
+						center
+						zIndexRange={[1, 0]}
+						sprite
+						style={{
+							color: "white",
+							textAlign: "center",
+							fontFamily: "Arial, sans-serif",
+						}}
+						position={[-0.015, 0, 0.7]}
+					>
+						<CollabUserIcon
+							userImage={""}
+							userName={cam.userData.userName}
+							index={index}
+							color={getAvatarColor(index)}
+						/>
+					</Html>
+				</primitive>
+			))}
+		</group>
+	);
 };
 
 export default CamModelsGroup;
diff --git a/app/src/modules/collaboration/collabUserIcon.tsx b/app/src/modules/collaboration/collabUserIcon.tsx
index acc3fa0..4cea436 100644
--- a/app/src/modules/collaboration/collabUserIcon.tsx
+++ b/app/src/modules/collaboration/collabUserIcon.tsx
@@ -20,7 +20,24 @@ const CollabUserIcon: React.FC<CollabUserIconProps> = ({
         {userImage ? (
           <img className="user-image" src={userImage} alt={userName} />
         ) : (
-          <CustomAvatar name={userName} index={index} />
+          <CustomAvatar name={userName} index={index} color={color} />
+          // <div
+          //   className="user-image"
+          //   style={{
+          //     lineHeight: "30px",
+          //     textTransform: "uppercase",
+          //     textAlign: "center",
+          //     fontSize: "16px",
+          //     borderRadius: "50%",
+          //     backgroundColor: color,
+          //     overflow: "hidden",
+          //     backgroundSize: "cover",
+          //     backgroundPosition: "center",
+          //     color: "white",
+          //     fontWeight: "bold",
+          //   }}>
+          //   {userName[0]}
+          // </div>
         )}
       </div>
       <div className="user-name" style={{ backgroundColor: color }}>
diff --git a/app/src/modules/collaboration/socketResponses.dev.tsx b/app/src/modules/collaboration/socketResponses.dev.tsx
index 8771303..ceef567 100644
--- a/app/src/modules/collaboration/socketResponses.dev.tsx
+++ b/app/src/modules/collaboration/socketResponses.dev.tsx
@@ -233,7 +233,7 @@ export default function SocketResponses({
                 }
 
             } else if (data.message === "Model updated successfully") {
-                itemsGroup.current.children.forEach((item: THREE.Group) => {
+                itemsGroup.current?.children.forEach((item: THREE.Group) => {
                     if (item.uuid === data.data.modeluuid) {
                         item.position.set(...data.data.position as [number, number, number]);
                         item.rotation.set(data.data.rotation.x, data.data.rotation.y, data.data.rotation.z);
diff --git a/app/src/modules/collaboration/users/Avatar.tsx b/app/src/modules/collaboration/users/Avatar.tsx
index f08a545..b04ff7d 100644
--- a/app/src/modules/collaboration/users/Avatar.tsx
+++ b/app/src/modules/collaboration/users/Avatar.tsx
@@ -7,6 +7,7 @@ interface AvatarProps {
   size?: number;
   index?: number;
   textColor?: string;
+  color?: string; // Optional color prop for future use
 }
 
 const CustomAvatar: React.FC<AvatarProps> = ({
@@ -14,6 +15,7 @@ const CustomAvatar: React.FC<AvatarProps> = ({
   size = 100,
   index = 0,
   textColor = "#ffffff",
+  color, // Optional color prop for future use
 }) => {
   const [imageSrc, setImageSrc] = useState<string | null>(null);
 
@@ -26,7 +28,7 @@ const CustomAvatar: React.FC<AvatarProps> = ({
       const initials = getInitials(name); // Convert name to initials if needed
 
       // Draw background
-      ctx.fillStyle = getAvatarColor(index);
+      ctx.fillStyle = color || getAvatarColor(index); // Use color prop or generate color based on index
       ctx.fillRect(0, 0, size, size);
 
       // Draw initials
@@ -40,7 +42,7 @@ const CustomAvatar: React.FC<AvatarProps> = ({
       const dataURL = canvas.toDataURL("image/png");
       setImageSrc(dataURL);
     }
-  }, [name, size, textColor]);
+  }, [name, size, textColor, index]);
 
   if (!imageSrc) {
     return null; // Return null while the image is being generated
@@ -53,6 +55,18 @@ const CustomAvatar: React.FC<AvatarProps> = ({
       alt="User Avatar"
       style={{ width: "100%", height: "100%" }}
     />
+    // <div
+    //   className="user-image"
+    //   style={{
+    //     width: size,
+    //     height: size,
+    //     borderRadius: "50%",
+    //     overflow: "hidden",
+    //     backgroundSize: "cover",
+    //     backgroundPosition: "center",
+    //   }}>
+    //     {name[0]}
+    //   </div>
   );
 };
 
diff --git a/app/src/services/factoryBuilder/environment/findEnvironment.ts b/app/src/services/factoryBuilder/environment/findEnvironment.ts
index de5b6a6..08cfe68 100644
--- a/app/src/services/factoryBuilder/environment/findEnvironment.ts
+++ b/app/src/services/factoryBuilder/environment/findEnvironment.ts
@@ -26,7 +26,7 @@ export const findEnvironment = async (organization: string, userId: string) => {
         false,
         false,
         false,
-        0,
+        40,
         true
       );
       return userpos;
diff --git a/app/src/store/store.ts b/app/src/store/store.ts
index fc30aba..725180b 100644
--- a/app/src/store/store.ts
+++ b/app/src/store/store.ts
@@ -14,7 +14,7 @@ export const useSocketStore = create<any>((set: any, get: any) => ({
     const socket = io(
       `http://${process.env.REACT_APP_SERVER_SOCKET_API_BASE_URL}/Builder`,
       {
-        reconnection: false,
+        reconnection: true,
         auth: { email, organization },
       }
     );
@@ -22,7 +22,7 @@ export const useSocketStore = create<any>((set: any, get: any) => ({
     const visualizationSocket = io(
       `http://${process.env.REACT_APP_SERVER_SOCKET_API_BASE_URL}/Visualization`,
       {
-        reconnection: false,
+        reconnection: true,
         auth: { email, organization },
       }
     );
@@ -302,7 +302,13 @@ export const useDrieTemp = create<any>((set: any) => ({
 
 export const useActiveUsers = create<any>((set: any) => ({
   activeUsers: [],
-  setActiveUsers: (x: any) => set({ activeUsers: x }),
+  setActiveUsers: (callback: (prev: any[]) => any[] | any[]) =>
+    set((state: { activeUsers: any[] }) => ({
+      activeUsers:
+        typeof callback === "function"
+          ? callback(state.activeUsers)
+          : callback,
+    })),
 }));
 
 export const useDrieUIValue = create<any>((set: any) => ({

From 8f0121aacf34b76bcb0f65635619d5cea73eb072 Mon Sep 17 00:00:00 2001
From: Gomathi9520 <gomathi@hexrfactory.com>
Date: Sat, 5 Apr 2025 17:55:14 +0530
Subject: [PATCH 16/17] socket added for 3d widgets edit option

---
 .../layout/3D-cards/cards/StateWorking.tsx    |  4 +-
 .../ui/componets/Dropped3dWidget.tsx          | 81 +++++++++++--------
 app/src/components/ui/list/List.tsx           |  2 +-
 .../visualization/realTimeVizSocket.dev.tsx   | 33 +++++++-
 4 files changed, 83 insertions(+), 37 deletions(-)

diff --git a/app/src/components/layout/3D-cards/cards/StateWorking.tsx b/app/src/components/layout/3D-cards/cards/StateWorking.tsx
index 287bc15..9adf77f 100644
--- a/app/src/components/layout/3D-cards/cards/StateWorking.tsx
+++ b/app/src/components/layout/3D-cards/cards/StateWorking.tsx
@@ -46,7 +46,7 @@ const StateWorking: React.FC<StateWorkingProps> = ({ id, type, position, rotatio
     socket.on("connect", startStream);
     socket.on("lastOutput", (response) => {
       const responseData = response;
-      console.log("responceeeeeeeeeee", response);
+    
 
       setDatas(responseData);
     });
@@ -76,7 +76,7 @@ const StateWorking: React.FC<StateWorkingProps> = ({ id, type, position, rotatio
     }
   }
 
-  console.log("dataaaaa", datas);
+ 
 
 
   useEffect(() => {
diff --git a/app/src/components/ui/componets/Dropped3dWidget.tsx b/app/src/components/ui/componets/Dropped3dWidget.tsx
index 567aa7a..d870195 100644
--- a/app/src/components/ui/componets/Dropped3dWidget.tsx
+++ b/app/src/components/ui/componets/Dropped3dWidget.tsx
@@ -50,6 +50,7 @@ export default function Dropped3dWidgets() {
     const rotationStartRef = useRef<[number, number, number]>([0, 0, 0]);
     const mouseStartRef = useRef<{ x: number; y: number }>({ x: 0, y: 0 });
 
+
     useEffect(() => {
         if (activeModule !== "visualization") return;
         if (!selectedZone.zoneId) return;
@@ -139,8 +140,6 @@ export default function Dropped3dWidgets() {
 
         if (rightSelect === "Duplicate") {
             async function duplicateWidget() {
-
-
                 const widgetToDuplicate = activeZoneWidgets.find((w: WidgetData) => w.id === rightClickSelected);
                 if (!widgetToDuplicate) return;
                 const newWidget: WidgetData = {
@@ -154,12 +153,15 @@ export default function Dropped3dWidgets() {
                     rotation: widgetToDuplicate.rotation || [0, 0, 0],
                 };
                 const adding3dWidget = {
-                    organization,
+                    organization: organization,
                     widget: newWidget,
                     zoneId: selectedZone.zoneId
                 };
-                let response = await adding3dWidgets(selectedZone.zoneId, organization, newWidget)
-                console.log('response: ', response);
+                if (visualizationSocket) {
+                    visualizationSocket.emit("v2:viz-3D-widget:add", adding3dWidget);
+                }
+                // let response = await adding3dWidgets(selectedZone.zoneId, organization, newWidget)
+                // console.log('response: ', response);
 
                 addWidget(selectedZone.zoneId, newWidget);
                 setRightSelect(null);
@@ -173,23 +175,20 @@ export default function Dropped3dWidgets() {
                 try {
                     const deleteWidget = {
                         organization,
-                        widgetId: rightClickSelected,
+                        id: rightClickSelected,
                         zoneId: selectedZone.zoneId,
                     };
 
+                    console.log('deleteWidget: ', deleteWidget);
+                    if (visualizationSocket) {
+                        visualizationSocket.emit("v2:viz-3D-widget:delete", deleteWidget);
+                    }
                     // Call the API to delete the widget
-                    const response = await delete3dWidgetApi(selectedZone.zoneId, organization, rightClickSelected);
-        
-
-                    // if (response?.success) {
-                    // Remove from state only if API call succeeds
+                    // const response = await delete3dWidgetApi(selectedZone.zoneId, organization, rightClickSelected);
                     setZoneWidgetData(
                         selectedZone.zoneId,
                         activeZoneWidgets.filter((w: WidgetData) => w.id !== rightClickSelected)
                     );
-                    // } else {
-                    //     console.error("Failed to delete widget:", response?.message);
-                    // }
                 } catch (error) {
                     console.error("Error deleting widget:", error);
                 } finally {
@@ -298,44 +297,60 @@ export default function Dropped3dWidgets() {
 
         const handleMouseUp = () => {
             if (!rightClickSelected || !rightSelect) return;
-
             const selectedZone = Object.keys(zoneWidgetData).find(zoneId =>
                 zoneWidgetData[zoneId].some(widget => widget.id === rightClickSelected)
             );
-
             if (!selectedZone) return;
 
             const selectedWidget = zoneWidgetData[selectedZone].find(widget => widget.id === rightClickSelected);
             if (!selectedWidget) return;
 
+
+
             // Format values to 2 decimal places
             const formatValues = (vals: number[]) => vals.map(val => parseFloat(val.toFixed(2)));
 
             if (rightSelect === "Horizontal Move" || rightSelect === "Vertical Move") {
                 console.log(`${rightSelect} Completed - Full Position:`, formatValues(selectedWidget.position));
                 let lastPosition = formatValues(selectedWidget.position) as [number, number, number];
+                // (async () => {
+                //     let response = await update3dWidget(selectedZone, organization, rightClickSelected, lastPosition);
+                //     console.log('response: ', response);
+                //     if (response) {
+                //         console.log("Widget position updated in API:", response);
+                //     }
+                // })();
+                let updatingPosition = {
+                    organization: organization,
+                    zoneId: selectedZone,
+                    id: rightClickSelected,
+                    position: lastPosition,
+                }
+                if (visualizationSocket) {
+                    visualizationSocket.emit("v2:viz-3D-widget:modifyPositionRotation", updatingPosition);
+                }
 
-                (async () => {
-                    let response = await update3dWidget(selectedZone, organization, rightClickSelected, lastPosition);
-                    console.log('response: ', response);
-                    if (response) {
-                        console.log("Widget position updated in API:", response);
-                    }
-                })();
             }
             else if (rightSelect.includes("Rotate")) {
                 const rotation = selectedWidget.rotation || [0, 0, 0];
                 console.log(`${rightSelect} Completed - Full Rotation:`, formatValues(rotation));
-                let lastPosition = formatValues(rotation) as [number, number, number];
-                console.log('lastPosition: ', lastPosition);
-
-                (async () => {
-                    let response = await update3dWidgetRotation(selectedZone, organization, rightClickSelected, lastPosition);
-                    console.log('response: ', response);
-                    if (response) {
-                        console.log("Widget position updated in API:", response);
-                    }
-                })();
+                let lastRotation = formatValues(rotation) as [number, number, number];
+                // (async () => {
+                //     let response = await update3dWidgetRotation(selectedZone, organization, rightClickSelected, lastRotation);
+                //     console.log('response: ', response);
+                //     if (response) {
+                //         console.log("Widget position updated in API:", response);
+                //     }
+                // })();
+                let updatingRotation = {
+                    organization: organization,
+                    zoneId: selectedZone,
+                    id: rightClickSelected,
+                    rotation: lastRotation,
+                }
+                if (visualizationSocket) {
+                    visualizationSocket.emit("v2:viz-3D-widget:modifyPositionRotation", updatingRotation);
+                }
             }
 
             // Reset selection
diff --git a/app/src/components/ui/list/List.tsx b/app/src/components/ui/list/List.tsx
index 7629730..a841b53 100644
--- a/app/src/components/ui/list/List.tsx
+++ b/app/src/components/ui/list/List.tsx
@@ -31,7 +31,7 @@ interface ListProps {
 }
 
 const List: React.FC<ListProps> = ({ items = [], remove }) => {
-  console.log("items: ", items);
+
   const { activeModule, setActiveModule } = useModuleStore();
   const { selectedZone, setSelectedZone } = useSelectedZoneStore();
   const { setSubModule } = useSubModuleStore();
diff --git a/app/src/modules/visualization/realTimeVizSocket.dev.tsx b/app/src/modules/visualization/realTimeVizSocket.dev.tsx
index ad5e226..9ee6b5b 100644
--- a/app/src/modules/visualization/realTimeVizSocket.dev.tsx
+++ b/app/src/modules/visualization/realTimeVizSocket.dev.tsx
@@ -5,6 +5,14 @@ import { useDroppedObjectsStore } from "../../store/useDroppedObjectsStore";
 import { useZoneWidgetStore } from "../../store/useZone3DWidgetStore";
 import useTemplateStore from "../../store/useTemplateStore";
 
+type WidgetData = {
+    id: string;
+    type: string;
+    position: [number, number, number];
+    rotation?: [number, number, number];
+    tempPosition?: [number, number, number];
+};
+
 export default function SocketRealTimeViz() {
     const { visualizationSocket } = useSocketStore();
     const { selectedZone, setSelectedZone } = useSelectedZoneStore();
@@ -14,6 +22,7 @@ export default function SocketRealTimeViz() {
     const { addWidget } = useZoneWidgetStore()
     const { templates, removeTemplate } = useTemplateStore();
     const { setTemplates } = useTemplateStore();
+    const { zoneWidgetData, setZoneWidgetData, updateWidgetPosition, updateWidgetRotation } = useZoneWidgetStore();
 
     useEffect(() => {
         const email = localStorage.getItem("email") || "";
@@ -132,14 +141,36 @@ export default function SocketRealTimeViz() {
             });
             //add 3D Widget response
             visualizationSocket.on("viz-widget3D:response:updates", (add3DWidget: any) => {
-                console.log('add3DWidget: ', add3DWidget);
 
+                console.log('add3DWidget: ', add3DWidget);
                 if (add3DWidget.success) {
+                    console.log('add3DWidget: ', add3DWidget);
                     if (add3DWidget.message === "Widget created successfully") {
                         addWidget(add3DWidget.data.zoneId, add3DWidget.data.widget);
                     }
                 }
             });
+            //delete 3D Widget response
+            visualizationSocket.on("viz-widget3D:response:delete", (delete3DWidget: any) => {
+                console.log('delete3DWidget: ', delete3DWidget);
+                // "3DWidget delete unsuccessfull"
+                if (delete3DWidget.success && delete3DWidget.message === "3DWidget delete successfull") {
+                    const activeZoneWidgets = zoneWidgetData[delete3DWidget.data.zoneId] || [];
+                    setZoneWidgetData(
+                        delete3DWidget.data.zoneId,
+                        activeZoneWidgets.filter((w: WidgetData) => w.id !== delete3DWidget.data.id)
+                    );
+                }
+            });
+            //update3D widget response
+            visualizationSocket.on("viz-widget3D:response:modifyPositionRotation", (update3DWidget: any) => {
+                console.log('update3DWidget: ', update3DWidget);
+                
+                if (update3DWidget.success && update3DWidget.message==="widget update successfully") {
+                    updateWidgetPosition(update3DWidget.data.zoneId, update3DWidget.data.widget.id, update3DWidget.data.widget.position);
+                    updateWidgetRotation(update3DWidget.data.zoneId, update3DWidget.data.widget.id, update3DWidget.data.widget.rotation);
+                }
+            });
             // add Template response
             visualizationSocket.on("viz-template:response:add", (addingTemplate: any) => {
                 console.log('addingTemplate: ', addingTemplate);

From e3b5b5c1d6f3a8b48c332aba8338871c12796a72 Mon Sep 17 00:00:00 2001
From: Jerald-Golden-B <jerald@hexrfactory.com>
Date: Sat, 5 Apr 2025 18:02:01 +0530
Subject: [PATCH 17/17] feat: Add ArmBotEventsSchema interface to define ArmBot
 event structure and properties

---
 app/src/types/world/worldTypes.d.ts | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/app/src/types/world/worldTypes.d.ts b/app/src/types/world/worldTypes.d.ts
index 9038efe..7baf5e0 100644
--- a/app/src/types/world/worldTypes.d.ts
+++ b/app/src/types/world/worldTypes.d.ts
@@ -331,6 +331,20 @@ interface StaticMachineEventsSchema {
     position: [number, number, number];
 }
 
+interface ArmBotEventsSchema {
+    modeluuid: string;
+    modelName: string;
+    type: 'ArmBot';
+    points: {
+        uuid: string;
+        position: [number, number, number];
+        actions: { uuid: string; name: string; speed: number; processes: { triggerId: string; startPoint: string; endPoint: string }[] };
+        triggers: { uuid: string; name: string; type: string };
+        connections: { source: { modelUUID: string; pointUUID: string }; targets: { modelUUID: string; pointUUID: string }[] };
+    };
+    position: [number, number, number];
+}
+
 export type EventData = {
     modeluuid: string;
     modelname: string;