From 75aa0c3d26d1443b94f967a673540c4c5f9a13df Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Fri, 9 May 2025 19:42:08 +0530 Subject: [PATCH] Add storage event handling and extend actionType in simulation types --- .../IntialLoad/loadInitialFloorItems.ts | 22 ++++++++++++++- .../geomentries/assets/addAssetModel.ts | 27 +++++++++++++++++++ .../selectionControls/copyPasteControls.tsx | 4 +-- .../selectionControls/duplicationControls.tsx | 4 +-- app/src/types/simulationTypes.d.ts | 2 +- 5 files changed, 52 insertions(+), 7 deletions(-) diff --git a/app/src/modules/builder/IntialLoad/loadInitialFloorItems.ts b/app/src/modules/builder/IntialLoad/loadInitialFloorItems.ts index aa58646..651f2f9 100644 --- a/app/src/modules/builder/IntialLoad/loadInitialFloorItems.ts +++ b/app/src/modules/builder/IntialLoad/loadInitialFloorItems.ts @@ -290,7 +290,27 @@ function processLoadedModel( } }; addEvent(roboticArmEvent); - + } else if (item.eventData.type === 'Storage') { + const storageEvent: StorageEventSchema = { + modelUuid: item.modelUuid, + modelName: item.modelName, + position: item.position, + rotation: [item.rotation.x, item.rotation.y, item.rotation.z], state: "idle", + type: "storageUnit", + point: { + uuid: item.eventData.point?.uuid || THREE.MathUtils.generateUUID(), + position: [item.eventData.point?.position[0] || 0, item.eventData.point?.position[1] || 0, item.eventData.point?.position[2] || 0], + rotation: [item.eventData.point?.rotation[0] || 0, item.eventData.point?.rotation[1] || 0, item.eventData.point?.rotation[2] || 0], + action: { + actionUuid: THREE.MathUtils.generateUUID(), + actionName: "Action 1", + actionType: "store", + storageCapacity: 10, + triggers: [] + } + } + }; + addEvent(storageEvent); } } else { setFloorItems((prevItems) => [ diff --git a/app/src/modules/builder/geomentries/assets/addAssetModel.ts b/app/src/modules/builder/geomentries/assets/addAssetModel.ts index 707b8c0..acb4ee8 100644 --- a/app/src/modules/builder/geomentries/assets/addAssetModel.ts +++ b/app/src/modules/builder/geomentries/assets/addAssetModel.ts @@ -342,6 +342,33 @@ async function handleModelLoad( position: machineEvent.point.position, rotation: machineEvent.point.rotation }; + } else if (selectedItem.type === "Storage") { + const storageEvent: StorageEventSchema = { + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + position: newFloorItem.position, + rotation: [newFloorItem.rotation.x, newFloorItem.rotation.y, newFloorItem.rotation.z], + state: "idle", + type: "storageUnit", + point: { + uuid: THREE.MathUtils.generateUUID(), + position: [data.points[0].x, data.points[0].y, data.points[0].z], + rotation: [0, 0, 0], + action: { + actionUuid: THREE.MathUtils.generateUUID(), + actionName: "Action 1", + actionType: "store", + storageCapacity: 10, + triggers: [] + } + } + } + addEvent(storageEvent); + eventData.point = { + uuid: storageEvent.point.uuid, + position: storageEvent.point.position, + rotation: storageEvent.point.rotation + }; } const completeData = { diff --git a/app/src/modules/scene/controls/selectionControls/copyPasteControls.tsx b/app/src/modules/scene/controls/selectionControls/copyPasteControls.tsx index b2e0ea5..d3c3f80 100644 --- a/app/src/modules/scene/controls/selectionControls/copyPasteControls.tsx +++ b/app/src/modules/scene/controls/selectionControls/copyPasteControls.tsx @@ -150,6 +150,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas }; let updatedEventData = null; + console.log('obj.userData: ', obj.userData); if (obj.userData.eventData) { updatedEventData = JSON.parse(JSON.stringify(obj.userData.eventData)); updatedEventData.modelUuid = newFloorItem.modelUuid; @@ -287,11 +288,9 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas }; } - obj.userData.eventData = eventData; newFloorItem.eventData = eventData; - setFloorItems((prevItems: Types.FloorItems) => { const updatedItems = [...(prevItems || []), newFloorItem]; localStorage.setItem("FloorItems", JSON.stringify(updatedItems)); @@ -335,6 +334,7 @@ const CopyPasteControls = ({ itemsGroupRef, copiedObjects, setCopiedObjects, pas name: newFloorItem.modelName, modelId: newFloorItem.modelfileID, modelUuid: newFloorItem.modelUuid, + eventData: JSON.parse(JSON.stringify(eventData)) }; itemsGroupRef.current.add(obj); diff --git a/app/src/modules/scene/controls/selectionControls/duplicationControls.tsx b/app/src/modules/scene/controls/selectionControls/duplicationControls.tsx index 86df41b..cc25923 100644 --- a/app/src/modules/scene/controls/selectionControls/duplicationControls.tsx +++ b/app/src/modules/scene/controls/selectionControls/duplicationControls.tsx @@ -265,11 +265,8 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb }; } - obj.userData.eventData = eventData; - newFloorItem.eventData = eventData; - setFloorItems((prevItems: Types.FloorItems) => { const updatedItems = [...(prevItems || []), newFloorItem]; localStorage.setItem("FloorItems", JSON.stringify(updatedItems)); @@ -313,6 +310,7 @@ const DuplicationControls = ({ itemsGroupRef, duplicatedObjects, setDuplicatedOb name: newFloorItem.modelName, modelId: newFloorItem.modelfileID, modelUuid: newFloorItem.modelUuid, + eventData: JSON.parse(JSON.stringify(eventData)) }; itemsGroupRef.current.add(obj); diff --git a/app/src/types/simulationTypes.d.ts b/app/src/types/simulationTypes.d.ts index 5aa26d2..2e262fc 100644 --- a/app/src/types/simulationTypes.d.ts +++ b/app/src/types/simulationTypes.d.ts @@ -124,7 +124,7 @@ interface MachineAction { interface StorageAction { actionUuid: string; actionName: string; - actionType: "store"; + actionType: "store" | "spawn"; storageCapacity: number; triggers: TriggerSchema[]; }