code optimization
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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[] = [];
|
||||
|
||||
@@ -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[] = [];
|
||||
|
||||
@@ -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, {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user