@2112-lab/central-plant 0.1.49 â 0.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/index.js +417 -609
- package/dist/cjs/src/core/centralPlant.js +3 -48
- package/dist/cjs/src/managers/components/transformOperationsManager.js +86 -123
- package/dist/cjs/src/managers/controls/keyboardControlsManager.js +0 -56
- package/dist/cjs/src/managers/controls/transformControlsManager.js +195 -144
- package/dist/cjs/src/managers/pathfinding/PathRenderingManager.js +36 -2
- package/dist/cjs/src/managers/pathfinding/pathfindingManager.js +72 -93
- package/dist/cjs/src/managers/pathfinding/sceneDataManager.js +13 -0
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +12 -143
- package/dist/esm/src/core/centralPlant.js +3 -48
- package/dist/esm/src/managers/components/transformOperationsManager.js +86 -123
- package/dist/esm/src/managers/controls/keyboardControlsManager.js +0 -56
- package/dist/esm/src/managers/controls/transformControlsManager.js +196 -145
- package/dist/esm/src/managers/pathfinding/PathRenderingManager.js +36 -2
- package/dist/esm/src/managers/pathfinding/pathfindingManager.js +73 -94
- package/dist/esm/src/managers/pathfinding/sceneDataManager.js +13 -0
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +12 -143
- package/package.json +2 -2
|
@@ -263,58 +263,74 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
263
263
|
};
|
|
264
264
|
|
|
265
265
|
// Transform end event
|
|
266
|
-
this.eventHandlers.transformEnd = function () {
|
|
267
|
-
_this2
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
266
|
+
this.eventHandlers.transformEnd = /*#__PURE__*/_rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee() {
|
|
267
|
+
var hasComponents, _this2$selectedObject, sceneCompleteEvent;
|
|
268
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context) {
|
|
269
|
+
while (1) switch (_context.n) {
|
|
270
|
+
case 0:
|
|
271
|
+
_this2.transformState.isTransforming = false;
|
|
273
272
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
console.error('â Error in applyMultiSelectionTransform:', error);
|
|
279
|
-
});
|
|
280
|
-
}
|
|
273
|
+
// Re-enable orbit controls
|
|
274
|
+
if (_this2.orbitControls) {
|
|
275
|
+
_this2.orbitControls.enabled = true;
|
|
276
|
+
}
|
|
281
277
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
console.
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
278
|
+
// Apply multi-selection transforms (works for single or multiple objects)
|
|
279
|
+
// IMPORTANT: We await this to prevent race conditions with updatePaths()
|
|
280
|
+
if (!(_this2.selectedObjects.length > 0 && _this2.multiSelectionGroup)) {
|
|
281
|
+
_context.n = 2;
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
_context.n = 1;
|
|
285
|
+
return _this2.applyMultiSelectionTransform().catch(function (error) {
|
|
286
|
+
console.error('â Error in applyMultiSelectionTransform:', error);
|
|
287
|
+
});
|
|
288
|
+
case 1:
|
|
289
|
+
// applyMultiSelectionTransform() already calls updatePaths() once at the end
|
|
290
|
+
// so we skip the additional updatePaths() call below
|
|
291
|
+
console.log('â
Multi-selection transform complete (updatePaths already called)');
|
|
292
|
+
_context.n = 3;
|
|
293
|
+
break;
|
|
294
|
+
case 2:
|
|
295
|
+
if (_this2.currentMode === 'translate' && _this2.sceneViewer && typeof _this2.sceneViewer.updatePaths === 'function') {
|
|
296
|
+
// Update paths after translation is complete
|
|
297
|
+
// Only if we translated components (not segments/gateways - they handle paths internally)
|
|
298
|
+
// This branch only executes when NOT in multi-selection mode
|
|
299
|
+
hasComponents = _this2.selectedObjects.some(function (obj) {
|
|
300
|
+
return !objectTypes.isSegment(obj) && !objectTypes.isGateway(obj);
|
|
301
|
+
});
|
|
302
|
+
if (hasComponents) {
|
|
303
|
+
console.log('đ Updating paths after component translation...');
|
|
304
|
+
try {
|
|
305
|
+
_this2.sceneViewer.updatePaths();
|
|
306
|
+
console.log('â
Paths updated successfully after translation');
|
|
307
|
+
} catch (error) {
|
|
308
|
+
console.error('â Error updating paths after translation:', error);
|
|
309
|
+
}
|
|
310
|
+
} else {
|
|
311
|
+
console.log('âšī¸ Skipping updatePaths - segments/gateways handle their own path updates');
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
case 3:
|
|
315
|
+
// Dispatch custom scene update event after transform completes
|
|
316
|
+
if (typeof window !== 'undefined') {
|
|
317
|
+
console.log('đĄ Dispatching sceneUpdateComplete event after transform');
|
|
318
|
+
sceneCompleteEvent = new CustomEvent('sceneUpdateComplete', {
|
|
319
|
+
detail: {
|
|
320
|
+
timestamp: Date.now(),
|
|
321
|
+
transformType: _this2.currentMode,
|
|
322
|
+
objectName: ((_this2$selectedObject = _this2.selectedObjects[0]) === null || _this2$selectedObject === void 0 ? void 0 : _this2$selectedObject.name) || 'unknown',
|
|
323
|
+
objectCount: _this2.selectedObjects.length
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
window.dispatchEvent(sceneCompleteEvent);
|
|
327
|
+
}
|
|
328
|
+
console.log("\u2705 Transform completed: ".concat(_this2.currentMode, " mode"));
|
|
329
|
+
case 4:
|
|
330
|
+
return _context.a(2);
|
|
299
331
|
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// Dispatch custom scene update event after transform completes
|
|
303
|
-
if (typeof window !== 'undefined') {
|
|
304
|
-
var _this2$selectedObject;
|
|
305
|
-
console.log('đĄ Dispatching sceneUpdateComplete event after transform');
|
|
306
|
-
var sceneCompleteEvent = new CustomEvent('sceneUpdateComplete', {
|
|
307
|
-
detail: {
|
|
308
|
-
timestamp: Date.now(),
|
|
309
|
-
transformType: _this2.currentMode,
|
|
310
|
-
objectName: ((_this2$selectedObject = _this2.selectedObjects[0]) === null || _this2$selectedObject === void 0 ? void 0 : _this2$selectedObject.name) || 'unknown',
|
|
311
|
-
objectCount: _this2.selectedObjects.length
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
window.dispatchEvent(sceneCompleteEvent);
|
|
315
|
-
}
|
|
316
|
-
console.log("\u2705 Transform completed: ".concat(_this2.currentMode, " mode"));
|
|
317
|
-
};
|
|
332
|
+
}, _callee);
|
|
333
|
+
}));
|
|
318
334
|
// Transform changing event
|
|
319
335
|
this.eventHandlers.transforming = function () {
|
|
320
336
|
// Apply real-time visual transformation to objects during drag
|
|
@@ -546,7 +562,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
546
562
|
}, {
|
|
547
563
|
key: "_isValidSelectableObject",
|
|
548
564
|
value: function _isValidSelectableObject(object) {
|
|
549
|
-
var _object$userData;
|
|
565
|
+
var _object$userData, _object$userData2;
|
|
550
566
|
// Safety check: ensure object is still valid and in the scene
|
|
551
567
|
if (!object || !object.parent) {
|
|
552
568
|
console.warn('â ī¸ Selected object is no longer valid or in scene');
|
|
@@ -564,6 +580,12 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
564
580
|
console.warn('â ī¸ Object is marked as non-selectable (stub segment)');
|
|
565
581
|
return false;
|
|
566
582
|
}
|
|
583
|
+
|
|
584
|
+
// Check if object is marked as immutable (computed segments/elbows from pathfinder)
|
|
585
|
+
if (((_object$userData2 = object.userData) === null || _object$userData2 === void 0 ? void 0 : _object$userData2.immutable) === true) {
|
|
586
|
+
console.warn('â ī¸ Object is immutable (computed from pathfinder)');
|
|
587
|
+
return false;
|
|
588
|
+
}
|
|
567
589
|
return true;
|
|
568
590
|
}
|
|
569
591
|
|
|
@@ -603,7 +625,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
603
625
|
}, {
|
|
604
626
|
key: "isSelectableObject",
|
|
605
627
|
value: function isSelectableObject(object) {
|
|
606
|
-
var _object$
|
|
628
|
+
var _object$userData3, _object$userData4, _object$userData5, _object$userData6, _object$userData7, _object$userData8, _object$userData9, _object$userData0;
|
|
607
629
|
// Basic safety checks
|
|
608
630
|
if (!object || !object.isObject3D) {
|
|
609
631
|
return false;
|
|
@@ -615,25 +637,30 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
615
637
|
}
|
|
616
638
|
|
|
617
639
|
// Skip helpers and special objects
|
|
618
|
-
var isHelper = object.isHelper || ((_object$
|
|
619
|
-
var isBaseGround = (_object$
|
|
620
|
-
var isBrickWall = (_object$
|
|
640
|
+
var isHelper = object.isHelper || ((_object$userData3 = object.userData) === null || _object$userData3 === void 0 ? void 0 : _object$userData3.isHelper) || ((_object$userData4 = object.userData) === null || _object$userData4 === void 0 ? void 0 : _object$userData4.isBoundingBox);
|
|
641
|
+
var isBaseGround = (_object$userData5 = object.userData) === null || _object$userData5 === void 0 ? void 0 : _object$userData5.isBaseGround;
|
|
642
|
+
var isBrickWall = (_object$userData6 = object.userData) === null || _object$userData6 === void 0 ? void 0 : _object$userData6.isBrickWall;
|
|
621
643
|
if (isHelper || isBaseGround || isBrickWall || !object.visible) {
|
|
622
644
|
return false;
|
|
623
645
|
}
|
|
624
646
|
|
|
625
647
|
// Skip segment connectors - they should not be selectable for transformation
|
|
626
|
-
if (((_object$
|
|
648
|
+
if (((_object$userData7 = object.userData) === null || _object$userData7 === void 0 ? void 0 : _object$userData7.objectType) === 'segment-connector') {
|
|
627
649
|
return false;
|
|
628
650
|
}
|
|
629
651
|
|
|
630
652
|
// Check if object has explicit selectable flag set to false
|
|
631
|
-
if (((_object$
|
|
653
|
+
if (((_object$userData8 = object.userData) === null || _object$userData8 === void 0 ? void 0 : _object$userData8.selectable) === false) {
|
|
654
|
+
return false;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// Check if object is marked as immutable (computed segments/elbows from pathfinder)
|
|
658
|
+
if (((_object$userData9 = object.userData) === null || _object$userData9 === void 0 ? void 0 : _object$userData9.immutable) === true) {
|
|
632
659
|
return false;
|
|
633
660
|
}
|
|
634
661
|
|
|
635
662
|
// Allow components, gateways, and segments to be selected
|
|
636
|
-
var objectType = (_object$
|
|
663
|
+
var objectType = (_object$userData0 = object.userData) === null || _object$userData0 === void 0 ? void 0 : _object$userData0.objectType;
|
|
637
664
|
return objectType === 'component' || objectType === 'gateway' || objectTypes.isSegment(object);
|
|
638
665
|
}
|
|
639
666
|
/**
|
|
@@ -1308,7 +1335,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1308
1335
|
|
|
1309
1336
|
// Traverse scene to find selectable objects
|
|
1310
1337
|
this.scene.traverse(function (object) {
|
|
1311
|
-
var _object$
|
|
1338
|
+
var _object$userData1, _object$userData10;
|
|
1312
1339
|
// Skip invalid objects and helpers early
|
|
1313
1340
|
if (!object || !object.isObject3D) {
|
|
1314
1341
|
return;
|
|
@@ -1320,7 +1347,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1320
1347
|
}
|
|
1321
1348
|
|
|
1322
1349
|
// Skip other helpers and special objects
|
|
1323
|
-
if (object.isHelper || (_object$
|
|
1350
|
+
if (object.isHelper || (_object$userData1 = object.userData) !== null && _object$userData1 !== void 0 && _object$userData1.isHelper || (_object$userData10 = object.userData) !== null && _object$userData10 !== void 0 && _object$userData10.isBoundingBox) {
|
|
1324
1351
|
return;
|
|
1325
1352
|
}
|
|
1326
1353
|
try {
|
|
@@ -1492,17 +1519,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1492
1519
|
}, {
|
|
1493
1520
|
key: "applyMultiSelectionTransform",
|
|
1494
1521
|
value: (function () {
|
|
1495
|
-
var _applyMultiSelectionTransform = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function
|
|
1522
|
+
var _applyMultiSelectionTransform = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee2() {
|
|
1496
1523
|
var _this9 = this;
|
|
1497
|
-
var groupPosition, originalCentroid, positionDelta, deltaX, deltaY, deltaZ, threshold, _this$sceneViewer, segments, gateways, components, transformOpsManager, THROTTLE_DELAY, SEGMENT_DELAY, _throttleDelay, _loop, i, _THROTTLE_DELAY, _SEGMENT_DELAY, _throttleDelay2, _loop2, _i, GATEWAY_THROTTLE, GATEWAY_DELAY, COMPONENT_THROTTLE, COMPONENT_DELAY, throttleDelay, _i2, _gateway$userData, gateway, gatewayId, _i3, _component$userData, component, componentId;
|
|
1498
|
-
return _rollupPluginBabelHelpers.regenerator().w(function (
|
|
1499
|
-
while (1) switch (
|
|
1524
|
+
var groupPosition, originalCentroid, positionDelta, deltaX, deltaY, deltaZ, threshold, _this$sceneViewer, _this$sceneViewer2, _this$sceneViewer3, _this$sceneViewer4, _this$sceneViewer5, segments, gateways, components, transformOpsManager, THROTTLE_DELAY, SEGMENT_DELAY, _throttleDelay, _loop, i, _THROTTLE_DELAY, _SEGMENT_DELAY, _throttleDelay2, _loop2, _i, GATEWAY_THROTTLE, GATEWAY_DELAY, COMPONENT_THROTTLE, COMPONENT_DELAY, throttleDelay, _i2, _gateway$userData, gateway, gatewayId, _i3, _component$userData, component, componentId;
|
|
1525
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context4) {
|
|
1526
|
+
while (1) switch (_context4.n) {
|
|
1500
1527
|
case 0:
|
|
1501
1528
|
if (!(!this.multiSelectionGroup || this.selectedObjects.length === 0)) {
|
|
1502
|
-
|
|
1529
|
+
_context4.n = 1;
|
|
1503
1530
|
break;
|
|
1504
1531
|
}
|
|
1505
|
-
return
|
|
1532
|
+
return _context4.a(2);
|
|
1506
1533
|
case 1:
|
|
1507
1534
|
console.log("\uD83D\uDD27 Applying multi-selection transform to ".concat(this.selectedObjects.length, " objects"));
|
|
1508
1535
|
|
|
@@ -1531,7 +1558,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1531
1558
|
// Only process if there's a meaningful translation
|
|
1532
1559
|
threshold = 0.001;
|
|
1533
1560
|
if (!(this.currentMode === 'translate' && positionDelta.length() > threshold)) {
|
|
1534
|
-
|
|
1561
|
+
_context4.n = 21;
|
|
1535
1562
|
break;
|
|
1536
1563
|
}
|
|
1537
1564
|
// FIRST: Reset all objects to their original positions
|
|
@@ -1554,14 +1581,23 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1554
1581
|
});
|
|
1555
1582
|
components = this.selectedObjects.filter(function (obj) {
|
|
1556
1583
|
return !objectTypes.isSegment(obj) && !objectTypes.isGateway(obj);
|
|
1557
|
-
}); //
|
|
1584
|
+
}); // Debug: Check availability of managers
|
|
1585
|
+
console.log('đ Debug - sceneViewer available:', !!this.sceneViewer);
|
|
1586
|
+
console.log('đ Debug - sceneViewer.managers available:', !!((_this$sceneViewer = this.sceneViewer) !== null && _this$sceneViewer !== void 0 && _this$sceneViewer.managers));
|
|
1587
|
+
console.log('đ Debug - Available managers:', (_this$sceneViewer2 = this.sceneViewer) !== null && _this$sceneViewer2 !== void 0 && _this$sceneViewer2.managers ? Object.keys(this.sceneViewer.managers) : 'none');
|
|
1588
|
+
console.log('đ Debug - transformOperationsManager (direct):', !!((_this$sceneViewer3 = this.sceneViewer) !== null && _this$sceneViewer3 !== void 0 && _this$sceneViewer3.transformOperationsManager));
|
|
1589
|
+
console.log('đ Debug - transformOperations (managers.transformOperations):', !!((_this$sceneViewer4 = this.sceneViewer) !== null && _this$sceneViewer4 !== void 0 && (_this$sceneViewer4 = _this$sceneViewer4.managers) !== null && _this$sceneViewer4 !== void 0 && _this$sceneViewer4.transformOperations));
|
|
1590
|
+
console.log('đ Debug - Segments to translate:', segments.length);
|
|
1591
|
+
|
|
1592
|
+
// BATCH SEGMENT TRANSLATIONS: Call translateSegment with skipPathUpdate=true
|
|
1558
1593
|
// Process segments SEQUENTIALLY with throttling for maximum stability
|
|
1559
|
-
|
|
1560
|
-
|
|
1594
|
+
// Access transformOperationsManager directly from sceneViewer (it's attached in attachToComponent)
|
|
1595
|
+
if (!(segments.length > 0 && (_this$sceneViewer5 = this.sceneViewer) !== null && _this$sceneViewer5 !== void 0 && _this$sceneViewer5.transformOperationsManager)) {
|
|
1596
|
+
_context4.n = 5;
|
|
1561
1597
|
break;
|
|
1562
1598
|
}
|
|
1563
1599
|
console.log("\uD83D\uDD27 Batch translating ".concat(segments.length, " segments (sequential with throttling)..."));
|
|
1564
|
-
transformOpsManager = this.sceneViewer.
|
|
1600
|
+
transformOpsManager = this.sceneViewer.transformOperationsManager; // Throttle delay in milliseconds (adjust as needed for stability)
|
|
1565
1601
|
THROTTLE_DELAY = 10; // 10ms between axis operations
|
|
1566
1602
|
SEGMENT_DELAY = 20; // 20ms between segments
|
|
1567
1603
|
// Helper function for throttled delay
|
|
@@ -1572,13 +1608,13 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1572
1608
|
}; // Process each segment sequentially with throttling for stability
|
|
1573
1609
|
_loop = /*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _loop(i) {
|
|
1574
1610
|
var segment, _segment$userData, _segment$userData2, segmentId, success, newSegmentId, _segment$userData3, _segment$userData4, _segmentId, _success, _newSegmentId, _segment$userData5, _segment$userData6, _segmentId2, _success2, _newSegmentId2, selectedIndex;
|
|
1575
|
-
return _rollupPluginBabelHelpers.regenerator().w(function (
|
|
1576
|
-
while (1) switch (
|
|
1611
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context2) {
|
|
1612
|
+
while (1) switch (_context2.n) {
|
|
1577
1613
|
case 0:
|
|
1578
1614
|
segment = segments[i]; // Call translateSegment API with skipPathUpdate=true to defer path updates
|
|
1579
1615
|
// IMPORTANT: Refresh segment reference after each axis to handle UUID changes from manualization
|
|
1580
1616
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1581
|
-
|
|
1617
|
+
_context2.n = 1;
|
|
1582
1618
|
break;
|
|
1583
1619
|
}
|
|
1584
1620
|
segmentId = segment.uuid || ((_segment$userData = segment.userData) === null || _segment$userData === void 0 ? void 0 : _segment$userData.originalUuid);
|
|
@@ -1588,7 +1624,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1588
1624
|
}
|
|
1589
1625
|
// Refresh segment reference by searching for the new UUID or by segmentIndex
|
|
1590
1626
|
// After manualization, UUID changes from SEGMENT-X to Segment-X
|
|
1591
|
-
newSegmentId = (_segment$userData2 = segment.userData) !== null && _segment$userData2 !== void 0 && _segment$userData2.segmentIndex ? "
|
|
1627
|
+
newSegmentId = (_segment$userData2 = segment.userData) !== null && _segment$userData2 !== void 0 && _segment$userData2.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : segmentId;
|
|
1592
1628
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', newSegmentId) || segment;
|
|
1593
1629
|
|
|
1594
1630
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1596,11 +1632,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1596
1632
|
segment.updateMatrix();
|
|
1597
1633
|
segment.updateMatrixWorld(true);
|
|
1598
1634
|
}
|
|
1599
|
-
|
|
1635
|
+
_context2.n = 1;
|
|
1600
1636
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1601
1637
|
case 1:
|
|
1602
1638
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1603
|
-
|
|
1639
|
+
_context2.n = 2;
|
|
1604
1640
|
break;
|
|
1605
1641
|
}
|
|
1606
1642
|
_segmentId = segment.uuid || ((_segment$userData3 = segment.userData) === null || _segment$userData3 === void 0 ? void 0 : _segment$userData3.originalUuid);
|
|
@@ -1609,7 +1645,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1609
1645
|
console.warn("\u26A0\uFE0F Failed to translate segment ".concat(_segmentId, " on Y axis"));
|
|
1610
1646
|
}
|
|
1611
1647
|
// Refresh segment reference by searching for the new UUID
|
|
1612
|
-
_newSegmentId = (_segment$userData4 = segment.userData) !== null && _segment$userData4 !== void 0 && _segment$userData4.segmentIndex ? "
|
|
1648
|
+
_newSegmentId = (_segment$userData4 = segment.userData) !== null && _segment$userData4 !== void 0 && _segment$userData4.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId;
|
|
1613
1649
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId) || segment;
|
|
1614
1650
|
|
|
1615
1651
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1617,11 +1653,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1617
1653
|
segment.updateMatrix();
|
|
1618
1654
|
segment.updateMatrixWorld(true);
|
|
1619
1655
|
}
|
|
1620
|
-
|
|
1656
|
+
_context2.n = 2;
|
|
1621
1657
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1622
1658
|
case 2:
|
|
1623
1659
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1624
|
-
|
|
1660
|
+
_context2.n = 3;
|
|
1625
1661
|
break;
|
|
1626
1662
|
}
|
|
1627
1663
|
_segmentId2 = segment.uuid || ((_segment$userData5 = segment.userData) === null || _segment$userData5 === void 0 ? void 0 : _segment$userData5.originalUuid);
|
|
@@ -1630,7 +1666,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1630
1666
|
console.warn("\u26A0\uFE0F Failed to translate segment ".concat(_segmentId2, " on Z axis"));
|
|
1631
1667
|
}
|
|
1632
1668
|
// Refresh segment reference by searching for the new UUID
|
|
1633
|
-
_newSegmentId2 = (_segment$userData6 = segment.userData) !== null && _segment$userData6 !== void 0 && _segment$userData6.segmentIndex ? "
|
|
1669
|
+
_newSegmentId2 = (_segment$userData6 = segment.userData) !== null && _segment$userData6 !== void 0 && _segment$userData6.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId2;
|
|
1634
1670
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId2) || segment;
|
|
1635
1671
|
|
|
1636
1672
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1638,7 +1674,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1638
1674
|
segment.updateMatrix();
|
|
1639
1675
|
segment.updateMatrixWorld(true);
|
|
1640
1676
|
}
|
|
1641
|
-
|
|
1677
|
+
_context2.n = 3;
|
|
1642
1678
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1643
1679
|
case 3:
|
|
1644
1680
|
// Update the segment in the selectedObjects array with the refreshed reference
|
|
@@ -1658,34 +1694,38 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1658
1694
|
_this9.selectedObjects[selectedIndex] = segment;
|
|
1659
1695
|
console.log("\u2705 Updated selectedObjects[".concat(selectedIndex, "] with refreshed segment reference"));
|
|
1660
1696
|
}
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1697
|
+
if (segment) {
|
|
1698
|
+
console.log("\uD83D\uDCE6 Segment ".concat(segment.name, " translated (").concat(i + 1, "/").concat(segments.length, "):"), {
|
|
1699
|
+
deltaX: deltaX,
|
|
1700
|
+
deltaY: deltaY,
|
|
1701
|
+
deltaZ: deltaZ
|
|
1702
|
+
});
|
|
1703
|
+
} else {
|
|
1704
|
+
console.warn("\u26A0\uFE0F Segment reference became null after translation (".concat(i + 1, "/").concat(segments.length, ")"));
|
|
1705
|
+
}
|
|
1666
1706
|
|
|
1667
1707
|
// Delay between segments to ensure all updates propagate
|
|
1668
1708
|
if (!(i < segments.length - 1)) {
|
|
1669
|
-
|
|
1709
|
+
_context2.n = 4;
|
|
1670
1710
|
break;
|
|
1671
1711
|
}
|
|
1672
|
-
|
|
1712
|
+
_context2.n = 4;
|
|
1673
1713
|
return _throttleDelay(SEGMENT_DELAY);
|
|
1674
1714
|
case 4:
|
|
1675
|
-
return
|
|
1715
|
+
return _context2.a(2);
|
|
1676
1716
|
}
|
|
1677
1717
|
}, _loop);
|
|
1678
1718
|
});
|
|
1679
1719
|
i = 0;
|
|
1680
1720
|
case 2:
|
|
1681
1721
|
if (!(i < segments.length)) {
|
|
1682
|
-
|
|
1722
|
+
_context4.n = 4;
|
|
1683
1723
|
break;
|
|
1684
1724
|
}
|
|
1685
|
-
return
|
|
1725
|
+
return _context4.d(_rollupPluginBabelHelpers.regeneratorValues(_loop(i)), 3);
|
|
1686
1726
|
case 3:
|
|
1687
1727
|
i++;
|
|
1688
|
-
|
|
1728
|
+
_context4.n = 2;
|
|
1689
1729
|
break;
|
|
1690
1730
|
case 4:
|
|
1691
1731
|
// Only call updatePaths ONCE after all segments are translated
|
|
@@ -1694,11 +1734,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1694
1734
|
this.sceneViewer.updatePaths();
|
|
1695
1735
|
console.log('â
Paths regenerated successfully for all segments');
|
|
1696
1736
|
}
|
|
1697
|
-
|
|
1737
|
+
_context4.n = 8;
|
|
1698
1738
|
break;
|
|
1699
1739
|
case 5:
|
|
1700
1740
|
if (!(segments.length > 0)) {
|
|
1701
|
-
|
|
1741
|
+
_context4.n = 8;
|
|
1702
1742
|
break;
|
|
1703
1743
|
}
|
|
1704
1744
|
// Fallback to individual API calls if manager not available
|
|
@@ -1715,18 +1755,18 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1715
1755
|
};
|
|
1716
1756
|
_loop2 = /*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _loop2(_i) {
|
|
1717
1757
|
var segment, _segment$userData7, _segment$userData8, segmentId, newSegmentId, _segment$userData9, _segment$userData0, _segmentId3, _newSegmentId3, _segment$userData1, _segment$userData10, _segmentId4, _newSegmentId4, selectedIndex;
|
|
1718
|
-
return _rollupPluginBabelHelpers.regenerator().w(function (
|
|
1719
|
-
while (1) switch (
|
|
1758
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context3) {
|
|
1759
|
+
while (1) switch (_context3.n) {
|
|
1720
1760
|
case 0:
|
|
1721
1761
|
segment = segments[_i];
|
|
1722
1762
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1723
|
-
|
|
1763
|
+
_context3.n = 1;
|
|
1724
1764
|
break;
|
|
1725
1765
|
}
|
|
1726
1766
|
segmentId = segment.uuid || ((_segment$userData7 = segment.userData) === null || _segment$userData7 === void 0 ? void 0 : _segment$userData7.originalUuid);
|
|
1727
1767
|
_this9.centralPlant.translateSegment(segmentId, 'x', deltaX);
|
|
1728
1768
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1729
|
-
newSegmentId = (_segment$userData8 = segment.userData) !== null && _segment$userData8 !== void 0 && _segment$userData8.segmentIndex ? "
|
|
1769
|
+
newSegmentId = (_segment$userData8 = segment.userData) !== null && _segment$userData8 !== void 0 && _segment$userData8.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : segmentId;
|
|
1730
1770
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', newSegmentId) || segment;
|
|
1731
1771
|
|
|
1732
1772
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1734,17 +1774,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1734
1774
|
segment.updateMatrix();
|
|
1735
1775
|
segment.updateMatrixWorld(true);
|
|
1736
1776
|
}
|
|
1737
|
-
|
|
1777
|
+
_context3.n = 1;
|
|
1738
1778
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1739
1779
|
case 1:
|
|
1740
1780
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1741
|
-
|
|
1781
|
+
_context3.n = 2;
|
|
1742
1782
|
break;
|
|
1743
1783
|
}
|
|
1744
1784
|
_segmentId3 = segment.uuid || ((_segment$userData9 = segment.userData) === null || _segment$userData9 === void 0 ? void 0 : _segment$userData9.originalUuid);
|
|
1745
1785
|
_this9.centralPlant.translateSegment(_segmentId3, 'y', deltaY);
|
|
1746
1786
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1747
|
-
_newSegmentId3 = (_segment$userData0 = segment.userData) !== null && _segment$userData0 !== void 0 && _segment$userData0.segmentIndex ? "
|
|
1787
|
+
_newSegmentId3 = (_segment$userData0 = segment.userData) !== null && _segment$userData0 !== void 0 && _segment$userData0.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId3;
|
|
1748
1788
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId3) || segment;
|
|
1749
1789
|
|
|
1750
1790
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1752,17 +1792,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1752
1792
|
segment.updateMatrix();
|
|
1753
1793
|
segment.updateMatrixWorld(true);
|
|
1754
1794
|
}
|
|
1755
|
-
|
|
1795
|
+
_context3.n = 2;
|
|
1756
1796
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1757
1797
|
case 2:
|
|
1758
1798
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1759
|
-
|
|
1799
|
+
_context3.n = 3;
|
|
1760
1800
|
break;
|
|
1761
1801
|
}
|
|
1762
1802
|
_segmentId4 = segment.uuid || ((_segment$userData1 = segment.userData) === null || _segment$userData1 === void 0 ? void 0 : _segment$userData1.originalUuid);
|
|
1763
1803
|
_this9.centralPlant.translateSegment(_segmentId4, 'z', deltaZ);
|
|
1764
1804
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1765
|
-
_newSegmentId4 = (_segment$userData10 = segment.userData) !== null && _segment$userData10 !== void 0 && _segment$userData10.segmentIndex ? "
|
|
1805
|
+
_newSegmentId4 = (_segment$userData10 = segment.userData) !== null && _segment$userData10 !== void 0 && _segment$userData10.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId4;
|
|
1766
1806
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId4) || segment;
|
|
1767
1807
|
|
|
1768
1808
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1770,7 +1810,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1770
1810
|
segment.updateMatrix();
|
|
1771
1811
|
segment.updateMatrixWorld(true);
|
|
1772
1812
|
}
|
|
1773
|
-
|
|
1813
|
+
_context3.n = 3;
|
|
1774
1814
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1775
1815
|
case 3:
|
|
1776
1816
|
// Update the segment in the selectedObjects array with the refreshed reference
|
|
@@ -1789,34 +1829,38 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1789
1829
|
_this9.selectedObjects[selectedIndex] = segment;
|
|
1790
1830
|
console.log("\u2705 Updated selectedObjects[".concat(selectedIndex, "] with refreshed segment reference"));
|
|
1791
1831
|
}
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1832
|
+
if (segment) {
|
|
1833
|
+
console.log("\uD83D\uDCE6 Segment ".concat(segment.name, " translated (").concat(_i + 1, "/").concat(segments.length, "):"), {
|
|
1834
|
+
deltaX: deltaX,
|
|
1835
|
+
deltaY: deltaY,
|
|
1836
|
+
deltaZ: deltaZ
|
|
1837
|
+
});
|
|
1838
|
+
} else {
|
|
1839
|
+
console.warn("\u26A0\uFE0F Segment reference became null after translation (".concat(_i + 1, "/").concat(segments.length, ")"));
|
|
1840
|
+
}
|
|
1797
1841
|
|
|
1798
1842
|
// Delay between segments
|
|
1799
1843
|
if (!(_i < segments.length - 1)) {
|
|
1800
|
-
|
|
1844
|
+
_context3.n = 4;
|
|
1801
1845
|
break;
|
|
1802
1846
|
}
|
|
1803
|
-
|
|
1847
|
+
_context3.n = 4;
|
|
1804
1848
|
return _throttleDelay2(_SEGMENT_DELAY);
|
|
1805
1849
|
case 4:
|
|
1806
|
-
return
|
|
1850
|
+
return _context3.a(2);
|
|
1807
1851
|
}
|
|
1808
1852
|
}, _loop2);
|
|
1809
1853
|
});
|
|
1810
1854
|
_i = 0;
|
|
1811
1855
|
case 6:
|
|
1812
1856
|
if (!(_i < segments.length)) {
|
|
1813
|
-
|
|
1857
|
+
_context4.n = 8;
|
|
1814
1858
|
break;
|
|
1815
1859
|
}
|
|
1816
|
-
return
|
|
1860
|
+
return _context4.d(_rollupPluginBabelHelpers.regeneratorValues(_loop2(_i)), 7);
|
|
1817
1861
|
case 7:
|
|
1818
1862
|
_i++;
|
|
1819
|
-
|
|
1863
|
+
_context4.n = 6;
|
|
1820
1864
|
break;
|
|
1821
1865
|
case 8:
|
|
1822
1866
|
// Throttle delays for gateways and components
|
|
@@ -1832,33 +1876,33 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1832
1876
|
_i2 = 0;
|
|
1833
1877
|
case 9:
|
|
1834
1878
|
if (!(_i2 < gateways.length)) {
|
|
1835
|
-
|
|
1879
|
+
_context4.n = 14;
|
|
1836
1880
|
break;
|
|
1837
1881
|
}
|
|
1838
1882
|
gateway = gateways[_i2];
|
|
1839
1883
|
gatewayId = gateway.uuid || ((_gateway$userData = gateway.userData) === null || _gateway$userData === void 0 ? void 0 : _gateway$userData.originalUuid);
|
|
1840
1884
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1841
|
-
|
|
1885
|
+
_context4.n = 10;
|
|
1842
1886
|
break;
|
|
1843
1887
|
}
|
|
1844
1888
|
this.centralPlant.translateGateway(gatewayId, 'x', deltaX);
|
|
1845
|
-
|
|
1889
|
+
_context4.n = 10;
|
|
1846
1890
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1847
1891
|
case 10:
|
|
1848
1892
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1849
|
-
|
|
1893
|
+
_context4.n = 11;
|
|
1850
1894
|
break;
|
|
1851
1895
|
}
|
|
1852
1896
|
this.centralPlant.translateGateway(gatewayId, 'y', deltaY);
|
|
1853
|
-
|
|
1897
|
+
_context4.n = 11;
|
|
1854
1898
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1855
1899
|
case 11:
|
|
1856
1900
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1857
|
-
|
|
1901
|
+
_context4.n = 12;
|
|
1858
1902
|
break;
|
|
1859
1903
|
}
|
|
1860
1904
|
this.centralPlant.translateGateway(gatewayId, 'z', deltaZ);
|
|
1861
|
-
|
|
1905
|
+
_context4.n = 12;
|
|
1862
1906
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1863
1907
|
case 12:
|
|
1864
1908
|
console.log("\uD83D\uDEAA Gateway ".concat(gateway.name, " translated (").concat(_i2 + 1, "/").concat(gateways.length, "):"), {
|
|
@@ -1869,46 +1913,46 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1869
1913
|
|
|
1870
1914
|
// Delay between gateways
|
|
1871
1915
|
if (!(_i2 < gateways.length - 1)) {
|
|
1872
|
-
|
|
1916
|
+
_context4.n = 13;
|
|
1873
1917
|
break;
|
|
1874
1918
|
}
|
|
1875
|
-
|
|
1919
|
+
_context4.n = 13;
|
|
1876
1920
|
return throttleDelay(GATEWAY_DELAY);
|
|
1877
1921
|
case 13:
|
|
1878
1922
|
_i2++;
|
|
1879
|
-
|
|
1923
|
+
_context4.n = 9;
|
|
1880
1924
|
break;
|
|
1881
1925
|
case 14:
|
|
1882
1926
|
_i3 = 0;
|
|
1883
1927
|
case 15:
|
|
1884
1928
|
if (!(_i3 < components.length)) {
|
|
1885
|
-
|
|
1929
|
+
_context4.n = 20;
|
|
1886
1930
|
break;
|
|
1887
1931
|
}
|
|
1888
1932
|
component = components[_i3];
|
|
1889
1933
|
componentId = component.uuid || ((_component$userData = component.userData) === null || _component$userData === void 0 ? void 0 : _component$userData.originalUuid);
|
|
1890
1934
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1891
|
-
|
|
1935
|
+
_context4.n = 16;
|
|
1892
1936
|
break;
|
|
1893
1937
|
}
|
|
1894
1938
|
this.centralPlant.translate(componentId, 'x', deltaX);
|
|
1895
|
-
|
|
1939
|
+
_context4.n = 16;
|
|
1896
1940
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1897
1941
|
case 16:
|
|
1898
1942
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1899
|
-
|
|
1943
|
+
_context4.n = 17;
|
|
1900
1944
|
break;
|
|
1901
1945
|
}
|
|
1902
1946
|
this.centralPlant.translate(componentId, 'y', deltaY);
|
|
1903
|
-
|
|
1947
|
+
_context4.n = 17;
|
|
1904
1948
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1905
1949
|
case 17:
|
|
1906
1950
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1907
|
-
|
|
1951
|
+
_context4.n = 18;
|
|
1908
1952
|
break;
|
|
1909
1953
|
}
|
|
1910
1954
|
this.centralPlant.translate(componentId, 'z', deltaZ);
|
|
1911
|
-
|
|
1955
|
+
_context4.n = 18;
|
|
1912
1956
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1913
1957
|
case 18:
|
|
1914
1958
|
console.log("\uD83D\uDD27 Component ".concat(component.name, " translated (").concat(_i3 + 1, "/").concat(components.length, "):"), {
|
|
@@ -1919,14 +1963,14 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1919
1963
|
|
|
1920
1964
|
// Delay between components
|
|
1921
1965
|
if (!(_i3 < components.length - 1)) {
|
|
1922
|
-
|
|
1966
|
+
_context4.n = 19;
|
|
1923
1967
|
break;
|
|
1924
1968
|
}
|
|
1925
|
-
|
|
1969
|
+
_context4.n = 19;
|
|
1926
1970
|
return throttleDelay(COMPONENT_DELAY);
|
|
1927
1971
|
case 19:
|
|
1928
1972
|
_i3++;
|
|
1929
|
-
|
|
1973
|
+
_context4.n = 15;
|
|
1930
1974
|
break;
|
|
1931
1975
|
case 20:
|
|
1932
1976
|
console.log("\u2705 All ".concat(this.selectedObjects.length, " objects translated with delta:"), {
|
|
@@ -1935,22 +1979,29 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1935
1979
|
deltaZ: deltaZ
|
|
1936
1980
|
});
|
|
1937
1981
|
case 21:
|
|
1938
|
-
// Reset the multi-selection group transform
|
|
1939
|
-
|
|
1940
|
-
this.multiSelectionGroup
|
|
1941
|
-
|
|
1982
|
+
// Reset the multi-selection group transform (if it still exists)
|
|
1983
|
+
// Note: The group might have been cleared during async operations
|
|
1984
|
+
if (this.multiSelectionGroup) {
|
|
1985
|
+
this.multiSelectionGroup.position.set(0, 0, 0);
|
|
1986
|
+
this.multiSelectionGroup.rotation.set(0, 0, 0);
|
|
1987
|
+
this.multiSelectionGroup.scale.set(1, 1, 1);
|
|
1988
|
+
} else {
|
|
1989
|
+
console.warn('â ī¸ Multi-selection group was cleared during transformation');
|
|
1990
|
+
}
|
|
1942
1991
|
|
|
1943
1992
|
// CRITICAL: Clear bounding box cache after manualization
|
|
1944
1993
|
// Manualization changes object references, making cached boxes invalid
|
|
1945
1994
|
this.clearBoundingBoxCache();
|
|
1946
1995
|
|
|
1947
|
-
// Update the multi-selection display with new positions
|
|
1948
|
-
this.
|
|
1996
|
+
// Update the multi-selection display with new positions (only if we still have selected objects)
|
|
1997
|
+
if (this.selectedObjects.length > 0) {
|
|
1998
|
+
this.updateMultiSelection();
|
|
1999
|
+
}
|
|
1949
2000
|
console.log("\u2705 Multi-selection transform applied");
|
|
1950
2001
|
case 22:
|
|
1951
|
-
return
|
|
2002
|
+
return _context4.a(2);
|
|
1952
2003
|
}
|
|
1953
|
-
},
|
|
2004
|
+
}, _callee2, this);
|
|
1954
2005
|
}));
|
|
1955
2006
|
function applyMultiSelectionTransform() {
|
|
1956
2007
|
return _applyMultiSelectionTransform.apply(this, arguments);
|