code optimization

This commit is contained in:
2025-09-24 16:38:33 +05:30
parent a2b1229aa8
commit 14c4a3246f
10 changed files with 144 additions and 263 deletions

View File

@@ -48,7 +48,7 @@ const RealTimeHeatMap = () => {
u_radius: { value: RADIUS },
u_opacity: { value: OPACITY },
u_debugMode: { value: debugModeMap[debugMode] },
u_growthRate: { value: GROWTH_TIME_MULTIPLIER },
u_growthRate: { value: GROWTH_TIME_MULTIPLIER },
});
useEffect(() => {
@@ -59,10 +59,33 @@ const RealTimeHeatMap = () => {
}
}, [isReset, isPlaying]);
useEffect(() => {
addMonitoringVehicle("26770368-55e8-4d40-87f7-8eacb48dc236");
addMonitoringHuman("264a51e7-d8b9-4093-95ac-fa7e2dc49cfa");
}, []);
// Added human or vehicle
// useEffect(() => {
// const selectedProductData = getProductById(selectedProduct.productUuid);
// const newEvents: EventsSchema[] = [];
// if (selectedProductData) {
// determineExecutionMachineSequences([selectedProductData]).then((sequences) => {
// sequences.forEach((sequence) => {
// sequence.forEach((event) => {
// if (event.type === "human") {
// if (hasHuman(event.modelUuid)) {
// newEvents.push(event);
// }
// } else if (event.type === "vehicle") {
// if (hasVehicle(event.modelUuid)) {
// newEvents.push(event);
// }
// }
// });
// });
// setEvents(newEvents);
// });
// }
// }, [selectedProduct, products, monitoringHuman, monitoringVehicle]);
// All human or vehicle
useEffect(() => {
const selectedProductData = getProductById(selectedProduct.productUuid);
@@ -72,14 +95,8 @@ const RealTimeHeatMap = () => {
determineExecutionMachineSequences([selectedProductData]).then((sequences) => {
sequences.forEach((sequence) => {
sequence.forEach((event) => {
if (event.type === "human") {
if (hasHuman(event.modelUuid)) {
newEvents.push(event);
}
} else if (event.type === "vehicle") {
if (hasVehicle(event.modelUuid)) {
newEvents.push(event);
}
if (event.type === "human" || event.type === "vehicle") {
newEvents.push(event);
}
});
});

View File

@@ -1,20 +1,21 @@
import * as THREE from "three";
import { useEffect } from "react";
import { getFloorAssets } from "../../../services/factoryBuilder/asset/floorAsset/getFloorItemsApi";
import { useLoadingProgress, useRenameModeStore, useSelectedItem } from "../../../store/builder/store";
import { useSocketStore } from "../../../store/socket/useSocketStore";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
import Models from "./models/models";
import useModuleStore from "../../../store/ui/useModuleStore";
import { useParams } from "react-router-dom";
import { useThree } from "@react-three/fiber";
import { CameraControls } from "@react-three/drei";
import addAssetModel from "./functions/addAssetModel";
import { useParams } from "react-router-dom";
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
import { useSocketStore } from "../../../store/socket/useSocketStore";
import useModuleStore from "../../../store/ui/useModuleStore";
import { useSceneContext } from "../../scene/sceneContext";
import { useLoadingProgress, useRenameModeStore, useSelectedItem } from "../../../store/builder/store";
import { useLeftData, useTopData } from "../../../store/visualization/useZone3DWidgetStore";
import { getUserData } from "../../../functions/getUserData";
import { useSceneContext } from "../../scene/sceneContext";
import useAssetResponseHandler from "../../collaboration/responseHandler/useAssetResponseHandler";
import Models from "./models/models";
import addAssetModel from "./functions/addAssetModel";
import { getFloorAssets } from "../../../services/factoryBuilder/asset/floorAsset/getFloorItemsApi";
const gltfLoaderWorker = new Worker(new URL("../../../services/factoryBuilder/webWorkers/gltfLoaderWorker.js", import.meta.url));

View File

@@ -131,12 +131,41 @@ async function handleModelLoad(
opacity: 1,
};
const socketData: any = {
organization,
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: newFloorItem.position,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
isLocked: false,
isVisible: true,
socketId: builderSocket?.id || "",
versionId: versionId,
projectId: projectId,
userId: userId,
};
const apiData: any = {
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
position: newFloorItem.position,
assetId: newFloorItem.assetId,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
isLocked: false,
isVisible: true,
versionId: versionId,
projectId: projectId || "",
};
if (selectedItem.type) {
const data = PointsCalculator(selectedItem.type, gltf.scene.clone(), new THREE.Vector3(...model.rotation));
if (!data?.points) return;
const eventData: any = { type: selectedItem.type, subType: selectedItem.subType };
const eventData: any = { type: selectedItem.type, subType: selectedItem.subType || "" };
const assetEvent = createEventData(newFloorItem, selectedItem.type, selectedItem.subType, data.points);
if (!assetEvent) return;
@@ -155,227 +184,79 @@ async function handleModelLoad(
}));
}
const completeData = {
organization,
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: newFloorItem.position,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
isLocked: false,
isVisible: true,
socketId: builderSocket?.id || "",
eventData: eventData,
versionId: versionId,
projectId: projectId,
userId: userId,
};
socketData.eventData = JSON.parse(JSON.stringify(eventData));
apiData.eventData = JSON.parse(JSON.stringify(eventData));
}
if (!builderSocket?.connected) {
// API
if (!builderSocket?.connected) {
// API
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
position: newFloorItem.position,
assetId: newFloorItem.assetId,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
eventData: eventData,
isLocked: false,
isVisible: true,
versionId: versionId,
projectId: projectId || "",
})
.then((data) => {
if (!data.message) {
echo.error(`Error adding asset: ${newFloorItem.modelUuid}`);
return;
}
if (data.message === "Model created successfully" && data.data) {
const model: Asset = {
modelUuid: data.data.modelUuid,
modelName: data.data.modelName,
assetId: data.data.assetId,
position: data.data.position,
rotation: data.data.rotation,
scale: data.data.scale,
isLocked: data.data.isLocked,
isCollidable: true,
isVisible: data.data.isVisible,
opacity: 1,
eventData: data.data.eventData,
};
addAssetToScene(model, () => {
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
},
],
});
echo.info(`Added asset: ${model.modelName}`);
});
} else {
echo.error(`Error adding asset: ${data?.data?.modelName}`);
}
})
.catch(() => {
setAssetsApi(apiData)
.then((data) => {
if (!data.message) {
echo.error(`Error adding asset: ${newFloorItem.modelUuid}`);
});
} else {
// SOCKET
return;
}
if (data.message === "Model created successfully" && data.data) {
const model: Asset = {
modelUuid: data.data.modelUuid,
modelName: data.data.modelName,
assetId: data.data.assetId,
position: data.data.position,
rotation: data.data.rotation,
scale: data.data.scale,
isLocked: data.data.isLocked,
isCollidable: true,
isVisible: data.data.isVisible,
opacity: 1,
...(data.data.eventData ? { eventData: data.data.eventData } : {}),
};
const model: Asset = {
modelUuid: completeData.modelUuid,
modelName: completeData.modelName,
assetId: completeData.assetId,
position: completeData.position,
rotation: completeData.rotation,
scale: completeData.scale,
isLocked: completeData.isLocked,
isCollidable: true,
isVisible: completeData.isVisible,
opacity: 1,
eventData: completeData.eventData,
};
addAssetToScene(model, () => {
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
},
],
});
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
},
],
echo.info(`Added asset: ${model.modelUuid}`);
});
} else {
echo.error(`Error adding asset: ${data?.data?.modelName}`);
}
})
.catch(() => {
echo.error(`Error adding asset: ${newFloorItem.modelUuid}`);
});
builderSocket.emit("v1:model-asset:add", completeData);
}
} else {
const data = {
organization,
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: newFloorItem.position,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
isLocked: false,
isVisible: true,
socketId: builderSocket?.id || "",
versionId: versionId,
projectId: projectId,
userId: userId,
};
// SOCKET
if (!builderSocket?.connected) {
// API
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
position: newFloorItem.position,
assetId: newFloorItem.assetId,
rotation: newFloorItem.rotation,
scale: newFloorItem.scale,
isLocked: false,
isVisible: true,
versionId: versionId,
projectId: projectId || "",
})
.then((data) => {
if (!data.message) {
echo.error(`Error adding asset: ${newFloorItem.modelUuid}`);
return;
}
if (data.message === "Model created successfully" && data.data) {
const model: Asset = {
modelUuid: data.data.modelUuid,
modelName: data.data.modelName,
assetId: data.data.assetId,
position: data.data.position,
rotation: data.data.rotation,
scale: data.data.scale,
isLocked: data.data.isLocked,
isCollidable: true,
isVisible: data.data.isVisible,
opacity: 1,
};
addAssetToScene(model, () => {
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
},
],
});
echo.info(`Added asset: ${model.modelUuid}`);
});
} else {
echo.error(`Error adding asset: ${data?.data?.modelName}`);
}
})
.catch(() => {
echo.error(`Error adding asset: ${newFloorItem.modelUuid}`);
});
} else {
// SOCKET
const model: Asset = {
modelUuid: data.modelUuid,
modelName: data.modelName,
assetId: data.assetId,
position: data.position,
rotation: data.rotation,
scale: data.scale,
isLocked: data.isLocked,
isCollidable: true,
isVisible: data.isVisible,
opacity: 1,
};
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
push3D({
type: "Scene",
actions: [
{
module: "builder",
actionType: "Asset-Add",
asset: {
type: "Asset",
timeStap: new Date().toISOString(),
assetData: model,
},
],
});
},
],
});
builderSocket.emit("v1:model-asset:add", data);
}
console.log("socketData: ", socketData);
builderSocket.emit("v1:model-asset:add", socketData);
}
}

View File

@@ -5,7 +5,6 @@ import { CameraControls } from "@react-three/drei";
import { useLimitDistance, useRenderDistance } from "../../../../store/builder/store";
import { useSelectedAsset } from "../../../../store/simulation/useSimulationStore";
import { useSceneContext } from "../../../scene/sceneContext";
import { useBuilderStore } from "../../../../store/builder/useBuilderStore";
import Model from "./model/model";
import { GLTFLoader } from "three/examples/jsm/Addons";

View File

@@ -368,7 +368,7 @@ const CutCopyPasteControls3D = () => {
const eventData: any = {
type: pastedAsset.userData.eventData.type,
subType: pastedAsset.userData.eventData.subType,
subType: pastedAsset.userData.eventData.subType || "",
};
let points: THREE.Vector3[] = [];

View File

@@ -310,7 +310,7 @@ const DuplicationControls3D = () => {
const eventData: any = {
type: duplicatedAsset.userData.eventData.type,
subType: duplicatedAsset.userData.eventData.subType,
subType: duplicatedAsset.userData.eventData.subType || "",
};
let points: THREE.Vector3[] = [];

View File

@@ -393,12 +393,12 @@ function MoveControls3D() {
const eventData = eventStore.getState().getEventByModelUuid(movedAsset.userData.modelUuid);
const productData = productStore.getState().getEventByModelUuid(productStore.getState().selectedProduct.productUuid, movedAsset.userData.modelUuid);
// if (eventData) {
// eventStore.getState().updateEvent(movedAsset.userData.modelUuid, {
// position: [position.x, position.y, position.z],
// rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z],
// });
// }
if (eventData) {
eventStore.getState().updateEvent(movedAsset.userData.modelUuid, {
position: [position.x, position.y, position.z],
rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z],
});
}
if (productData) {
const event = productStore.getState().updateEvent(productStore.getState().selectedProduct.productUuid, movedAsset.userData.modelUuid, {

View File

@@ -128,6 +128,8 @@ export default function createEventData(asset: Asset, type: string, subType: str
],
},
};
return roboticArmEvent;
} else if (type === "StaticMachine") {
const machineEvent: MachineEventSchema = {
modelUuid: asset.modelUuid,

View File

@@ -15,7 +15,6 @@ type assetType = {
}
export const setAssetsApi = async (data: assetType) => {
console.log('data: ', data);
try {
const response = await fetch(`${url_Backend_dwinzo}/api/V1/setAsset`, {
method: "POST",

View File

@@ -121,21 +121,3 @@ export const useHeatMapStore = create<HeatMapState>()(
hasHuman: (humanUuid) => get().monitoringHuman.includes(humanUuid),
}))
);
// useEffect(() => {
// const selectedProductData = getProductById(selectedProduct.productUuid);
// const newEvents: EventsSchema[] = [];
// if (selectedProductData) {
// determineExecutionMachineSequences([selectedProductData]).then((sequences) => {
// sequences.forEach((sequence) => {
// sequence.forEach((event) => {
// if (event.type === "human" || event.type === "vehicle") {
// newEvents.push(event);
// }
// });
// });
// setEvents(newEvents);
// });
// }
// }, [selectedProduct, products, monitoringHuman, monitoringVehicle]);