From 0b43d53d0fe043c8da7e2da9cda1e9b169fd9e57 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Mon, 8 Sep 2025 17:31:16 +0530 Subject: [PATCH] refactor: Clean up addAssetModel and CamMode components; streamline state management and improve readability --- .../builder/asset/functions/addAssetModel.ts | 95 +++++++++---------- app/src/modules/scene/camera/camMode.tsx | 6 +- app/src/modules/scene/scene.tsx | 1 + 3 files changed, 47 insertions(+), 55 deletions(-) diff --git a/app/src/modules/builder/asset/functions/addAssetModel.ts b/app/src/modules/builder/asset/functions/addAssetModel.ts index 6a4496a..ffe5f9c 100644 --- a/app/src/modules/builder/asset/functions/addAssetModel.ts +++ b/app/src/modules/builder/asset/functions/addAssetModel.ts @@ -7,7 +7,7 @@ import * as CONSTANTS from "../../../../types/world/worldConstants"; import PointsCalculator from "../../../simulation/events/points/functions/pointsCalculator"; import { getUserData } from "../../../../functions/getUserData"; -import { setAssetsApi } from '../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; +import { setAssetsApi } from "../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; async function addAssetModel( scene: THREE.Scene, @@ -63,13 +63,12 @@ async function addAssetModel( } if (intersectPoint) { - if (intersectPoint.y < 0) { intersectPoint = new THREE.Vector3(intersectPoint.x, 0, intersectPoint.z); } const cachedModel = THREE.Cache.get(selectedItem.id); if (cachedModel) { - handleModelLoad(cachedModel, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || '', projectId, userId); + handleModelLoad(cachedModel, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || "", projectId, userId); return; } else { const cachedModelBlob = await retrieveGLTF(selectedItem.id); @@ -79,21 +78,19 @@ async function addAssetModel( URL.revokeObjectURL(blobUrl); THREE.Cache.remove(blobUrl); THREE.Cache.add(selectedItem.id, gltf); - handleModelLoad(gltf, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || '', projectId, userId); + handleModelLoad(gltf, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || "", projectId, userId); }); } else { - loader.load(`${url_Backend_dwinzo}/api/v2/AssetFile/${selectedItem.id}`, - async (gltf) => { - const modelBlob = await fetch(`${url_Backend_dwinzo}/api/v2/AssetFile/${selectedItem.id}`).then((res) => res.blob()); - await storeGLTF(selectedItem.id, modelBlob); - THREE.Cache.add(selectedItem.id, gltf); - await handleModelLoad(gltf, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || '', projectId, userId); - } - ); + loader.load(`${url_Backend_dwinzo}/api/v2/AssetFile/${selectedItem.id}`, async (gltf) => { + const modelBlob = await fetch(`${url_Backend_dwinzo}/api/v2/AssetFile/${selectedItem.id}`).then((res) => res.blob()); + await storeGLTF(selectedItem.id, modelBlob); + THREE.Cache.add(selectedItem.id, gltf); + await handleModelLoad(gltf, intersectPoint!, selectedItem, addEvent, addAsset, socket, selectedVersion?.versionId || "", projectId, userId); + }); } } } - } catch (error) { + } catch { echo.error("Failed to add asset"); } finally { setSelectedItem({}); @@ -118,7 +115,7 @@ async function handleModelLoad( modelId: selectedItem.id, modelUuid: model.uuid, }; - model.position.set(intersectPoint!.x, intersectPoint!.y, intersectPoint!.z); + model.position.set(intersectPoint.x, intersectPoint.y, intersectPoint.z); model.scale.set(...CONSTANTS.assetConfig.defaultScaleAfterGsap); model.traverse((child: any) => { @@ -132,7 +129,7 @@ async function handleModelLoad( modelUuid: model.uuid, modelName: selectedItem.name, assetId: selectedItem.id, - position: [intersectPoint!.x, intersectPoint!.y, intersectPoint!.z], + position: [intersectPoint.x, intersectPoint.y, intersectPoint.z], rotation: [0, 0, 0], isLocked: false, isVisible: true, @@ -141,13 +138,9 @@ async function handleModelLoad( }; if (selectedItem.type) { - const data = PointsCalculator( - selectedItem.type, - gltf.scene.clone(), - new THREE.Vector3(...model.rotation) - ); + const data = PointsCalculator(selectedItem.type, gltf.scene.clone(), new THREE.Vector3(...model.rotation)); - if (!data || !data.points) return; + if (!data?.points) return; const eventData: any = { type: selectedItem.type, subType: selectedItem.subType }; @@ -159,7 +152,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "transfer", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", speed: 1, points: data.points.map((point: THREE.Vector3, index: number) => { const triggers: TriggerSchema[] = []; @@ -228,7 +221,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "vehicle", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", speed: 1, point: { uuid: THREE.MathUtils.generateUUID(), @@ -266,7 +259,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "roboticArm", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", speed: 1, point: { uuid: THREE.MathUtils.generateUUID(), @@ -300,7 +293,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "machine", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", point: { uuid: THREE.MathUtils.generateUUID(), position: [data.points[0].x, data.points[0].y, data.points[0].z], @@ -332,7 +325,7 @@ async function handleModelLoad( storageCapacity: 10, storageCount: 10, materialType: "Default material", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", point: { uuid: THREE.MathUtils.generateUUID(), position: [data.points[0].x, data.points[0].y, data.points[0].z], @@ -343,7 +336,7 @@ async function handleModelLoad( actionName: "Action 1", actionType: "store", triggers: [], - } + }, ], }, }; @@ -361,7 +354,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "human", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", speed: 1, point: { uuid: THREE.MathUtils.generateUUID(), @@ -375,23 +368,23 @@ async function handleModelLoad( loadCount: 1, assemblyCount: 1, assemblyCondition: { - conditionType: 'material', - materialType: "Default material" + conditionType: "material", + materialType: "Default material", }, manufactureCount: 1, loadCapacity: 1, processTime: 10, - triggers: [] - } - ] - } - } + triggers: [], + }, + ], + }, + }; addEvent(humanEvent); eventData.point = { uuid: humanEvent.point.uuid, position: humanEvent.point.position, rotation: humanEvent.point.rotation, - } + }; } else if (selectedItem.type === "Crane") { const craneEvent: CraneEventSchema = { modelUuid: newFloorItem.modelUuid, @@ -400,7 +393,7 @@ async function handleModelLoad( rotation: newFloorItem.rotation, state: "idle", type: "crane", - subType: selectedItem.subType || '', + subType: selectedItem.subType || "", point: { uuid: THREE.MathUtils.generateUUID(), position: [data.points[0].x, data.points[0].y, data.points[0].z], @@ -411,17 +404,17 @@ async function handleModelLoad( actionName: "Action 1", actionType: "pickAndDrop", maxPickUpCount: 1, - triggers: [] - } - ] - } - } + triggers: [], + }, + ], + }, + }; addEvent(craneEvent); eventData.point = { uuid: craneEvent.point.uuid, position: craneEvent.point.position, rotation: craneEvent.point.rotation, - } + }; } const completeData = { @@ -430,10 +423,10 @@ async function handleModelLoad( modelName: newFloorItem.modelName, assetId: newFloorItem.assetId, position: newFloorItem.position, - rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z }, isLocked: false, isVisible: true, - socketId: socket?.id || '', + socketId: socket?.id || "", eventData: eventData, versionId: versionId, projectId: projectId, @@ -448,14 +441,13 @@ async function handleModelLoad( modelName: newFloorItem.modelName, position: newFloorItem.position, assetId: newFloorItem.assetId, - rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z }, eventData: eventData, isLocked: false, isVisible: true, versionId: versionId, projectId: projectId, }); - } else { // SOCKET @@ -467,7 +459,7 @@ async function handleModelLoad( modelName: completeData.modelName, assetId: completeData.assetId, position: completeData.position, - rotation: [completeData.rotation.x, completeData.rotation.y, completeData.rotation.z,] as [number, number, number], + rotation: [completeData.rotation.x, completeData.rotation.y, completeData.rotation.z] as [number, number, number], isLocked: completeData.isLocked, isCollidable: false, isVisible: completeData.isVisible, @@ -483,10 +475,10 @@ async function handleModelLoad( modelName: newFloorItem.modelName, assetId: newFloorItem.assetId, position: newFloorItem.position, - rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z }, isLocked: false, isVisible: true, - socketId: socket?.id || '', + socketId: socket?.id || "", versionId: versionId, projectId: projectId, userId: userId, @@ -500,13 +492,12 @@ async function handleModelLoad( modelName: newFloorItem.modelName, position: newFloorItem.position, assetId: newFloorItem.assetId, - rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, + rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z }, isLocked: false, isVisible: true, versionId: versionId, projectId: projectId, }); - } else { // SOCKET diff --git a/app/src/modules/scene/camera/camMode.tsx b/app/src/modules/scene/camera/camMode.tsx index caece18..881838c 100644 --- a/app/src/modules/scene/camera/camMode.tsx +++ b/app/src/modules/scene/camera/camMode.tsx @@ -40,7 +40,7 @@ const CamMode: React.FC = () => { const keyCombination = detectModifierKeys(event); if (keyCombination === "/" && !isTransitioning && !toggleView) { - setIsTransitioning && setIsTransitioning(true); + setIsTransitioning(true); state.controls.mouseButtons.left = CONSTANTS.controlsTransition.leftMouse; state.controls.mouseButtons.right = CONSTANTS.controlsTransition.rightMouse; @@ -55,10 +55,10 @@ const CamMode: React.FC = () => { await switchToThirdPerson(state.controls, state.camera); } - setIsTransitioning && setIsTransitioning(false); + setIsTransitioning(false); } - if (keyCombination === 'Shift') { + if (keyCombination === "Shift") { setIsShiftActive(true); } }; diff --git a/app/src/modules/scene/scene.tsx b/app/src/modules/scene/scene.tsx index 52c9907..28576bd 100644 --- a/app/src/modules/scene/scene.tsx +++ b/app/src/modules/scene/scene.tsx @@ -23,6 +23,7 @@ export default function Scene({ layout }: { readonly layout: "Main Layout" | "Co { name: "backward", keys: ["ArrowDown", "s", "S"] }, { name: "left", keys: ["ArrowLeft", "a", "A"] }, { name: "right", keys: ["ArrowRight", "d", "D"] }, + { name: "jump", keys: ["Space"] }, ], [] );