Refactor TriggerConnector to improve event handling: reset firstSelectedPoint on invalid intersections, update event model name, and ensure proper cleanup of state. Adjust event listener conditions for better performance.

This commit is contained in:
Jerald-Golden-B 2025-05-02 13:40:00 +05:30
parent 01a03f5166
commit a3b48d12c1
1 changed files with 35 additions and 10 deletions

View File

@ -171,10 +171,16 @@ function TriggerConnector() {
(intersect) =>
intersect.object.name === ('Event-Sphere')
);
if (intersects.length === 0) return;
if (intersects.length === 0) {
setFirstSelectedPoint(null);
return;
};
const currentObject = intersects[0].object;
if (!currentObject || currentObject.name !== 'Event-Sphere') return;
if (!currentObject || currentObject.name !== 'Event-Sphere') {
setFirstSelectedPoint(null);
return;
};
const modelUuid = currentObject.userData.modelUuid;
const pointUuid = currentObject.userData.pointUuid;
@ -189,7 +195,10 @@ function TriggerConnector() {
const event = getEventByModelUuid(selectedProduct.productId, modelUuid);
if (!point || !event) return;
if (!point || !event) {
setFirstSelectedPoint(null);
return;
};
let actionUuid: string | undefined;
if ('action' in point && point.action) {
@ -254,7 +263,12 @@ function TriggerConnector() {
pointUuid
);
if (!point) return;
const event = getEventByModelUuid(selectedProduct.productId, modelUuid);
if (!point || !event) {
setFirstSelectedPoint(null);
return;
};
let actionUuid: string | undefined;
if ('action' in point && point.action) {
@ -270,12 +284,12 @@ function TriggerConnector() {
delay: 0,
triggeredAsset: {
triggeredModel: {
modelName: currentObject.parent?.parent?.name || 'Unknown',
modelName: event.modelName || 'Unknown',
modelUuid: modelUuid
},
triggeredPoint: {
pointName: currentObject.name,
pointUuid: pointUuid
pointName: 'Point',
pointUuid: point.uuid
},
triggeredAction: actionUuid ? {
actionName: getActionByUuid(selectedProduct.productId, actionUuid)?.actionName || 'Action',
@ -285,13 +299,24 @@ function TriggerConnector() {
};
if (firstSelectedPoint.actionUuid) {
addTrigger(selectedProduct.productId, firstSelectedPoint.actionUuid, trigger);
const event = addTrigger(selectedProduct.productId, firstSelectedPoint.actionUuid, trigger);
if (event) {
updateBackend(
selectedProduct.productName,
selectedProduct.productId,
organization,
event
);
}
}
setFirstSelectedPoint(null);
} else if (firstSelectedPoint) {
setFirstSelectedPoint(null);
}
};
if (subModule === 'simulations') {
if (subModule === 'simulations' && !deleteTool) {
canvasElement.addEventListener("mousedown", onMouseDown);
canvasElement.addEventListener("mouseup", onMouseUp);
canvasElement.addEventListener("mousemove", onMouseMove);
@ -305,7 +330,7 @@ function TriggerConnector() {
canvasElement.removeEventListener('contextmenu', handleRightClick);
};
}, [gl, subModule, selectedProduct, firstSelectedPoint]);
}, [gl, subModule, selectedProduct, firstSelectedPoint, deleteTool]);
useFrame(() => {