@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createClass as _createClass,
|
|
1
|
+
import { createClass as _createClass, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, createForOfIteratorHelper as _createForOfIteratorHelper, classCallCheck as _classCallCheck, regeneratorValues as _regeneratorValues } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { transformControls } from './transformControls.js';
|
|
4
4
|
import { isSegment, isGateway } from '../../utils/objectTypes.js';
|
|
@@ -239,58 +239,74 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
239
239
|
};
|
|
240
240
|
|
|
241
241
|
// Transform end event
|
|
242
|
-
this.eventHandlers.transformEnd = function () {
|
|
243
|
-
_this2
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
242
|
+
this.eventHandlers.transformEnd = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
243
|
+
var hasComponents, _this2$selectedObject, sceneCompleteEvent;
|
|
244
|
+
return _regenerator().w(function (_context) {
|
|
245
|
+
while (1) switch (_context.n) {
|
|
246
|
+
case 0:
|
|
247
|
+
_this2.transformState.isTransforming = false;
|
|
249
248
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
console.error('â Error in applyMultiSelectionTransform:', error);
|
|
255
|
-
});
|
|
256
|
-
}
|
|
249
|
+
// Re-enable orbit controls
|
|
250
|
+
if (_this2.orbitControls) {
|
|
251
|
+
_this2.orbitControls.enabled = true;
|
|
252
|
+
}
|
|
257
253
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
console.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
254
|
+
// Apply multi-selection transforms (works for single or multiple objects)
|
|
255
|
+
// IMPORTANT: We await this to prevent race conditions with updatePaths()
|
|
256
|
+
if (!(_this2.selectedObjects.length > 0 && _this2.multiSelectionGroup)) {
|
|
257
|
+
_context.n = 2;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
_context.n = 1;
|
|
261
|
+
return _this2.applyMultiSelectionTransform().catch(function (error) {
|
|
262
|
+
console.error('â Error in applyMultiSelectionTransform:', error);
|
|
263
|
+
});
|
|
264
|
+
case 1:
|
|
265
|
+
// applyMultiSelectionTransform() already calls updatePaths() once at the end
|
|
266
|
+
// so we skip the additional updatePaths() call below
|
|
267
|
+
console.log('â
Multi-selection transform complete (updatePaths already called)');
|
|
268
|
+
_context.n = 3;
|
|
269
|
+
break;
|
|
270
|
+
case 2:
|
|
271
|
+
if (_this2.currentMode === 'translate' && _this2.sceneViewer && typeof _this2.sceneViewer.updatePaths === 'function') {
|
|
272
|
+
// Update paths after translation is complete
|
|
273
|
+
// Only if we translated components (not segments/gateways - they handle paths internally)
|
|
274
|
+
// This branch only executes when NOT in multi-selection mode
|
|
275
|
+
hasComponents = _this2.selectedObjects.some(function (obj) {
|
|
276
|
+
return !isSegment(obj) && !isGateway(obj);
|
|
277
|
+
});
|
|
278
|
+
if (hasComponents) {
|
|
279
|
+
console.log('đ Updating paths after component translation...');
|
|
280
|
+
try {
|
|
281
|
+
_this2.sceneViewer.updatePaths();
|
|
282
|
+
console.log('â
Paths updated successfully after translation');
|
|
283
|
+
} catch (error) {
|
|
284
|
+
console.error('â Error updating paths after translation:', error);
|
|
285
|
+
}
|
|
286
|
+
} else {
|
|
287
|
+
console.log('âšī¸ Skipping updatePaths - segments/gateways handle their own path updates');
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
case 3:
|
|
291
|
+
// Dispatch custom scene update event after transform completes
|
|
292
|
+
if (typeof window !== 'undefined') {
|
|
293
|
+
console.log('đĄ Dispatching sceneUpdateComplete event after transform');
|
|
294
|
+
sceneCompleteEvent = new CustomEvent('sceneUpdateComplete', {
|
|
295
|
+
detail: {
|
|
296
|
+
timestamp: Date.now(),
|
|
297
|
+
transformType: _this2.currentMode,
|
|
298
|
+
objectName: ((_this2$selectedObject = _this2.selectedObjects[0]) === null || _this2$selectedObject === void 0 ? void 0 : _this2$selectedObject.name) || 'unknown',
|
|
299
|
+
objectCount: _this2.selectedObjects.length
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
window.dispatchEvent(sceneCompleteEvent);
|
|
303
|
+
}
|
|
304
|
+
console.log("\u2705 Transform completed: ".concat(_this2.currentMode, " mode"));
|
|
305
|
+
case 4:
|
|
306
|
+
return _context.a(2);
|
|
275
307
|
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Dispatch custom scene update event after transform completes
|
|
279
|
-
if (typeof window !== 'undefined') {
|
|
280
|
-
var _this2$selectedObject;
|
|
281
|
-
console.log('đĄ Dispatching sceneUpdateComplete event after transform');
|
|
282
|
-
var sceneCompleteEvent = new CustomEvent('sceneUpdateComplete', {
|
|
283
|
-
detail: {
|
|
284
|
-
timestamp: Date.now(),
|
|
285
|
-
transformType: _this2.currentMode,
|
|
286
|
-
objectName: ((_this2$selectedObject = _this2.selectedObjects[0]) === null || _this2$selectedObject === void 0 ? void 0 : _this2$selectedObject.name) || 'unknown',
|
|
287
|
-
objectCount: _this2.selectedObjects.length
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
window.dispatchEvent(sceneCompleteEvent);
|
|
291
|
-
}
|
|
292
|
-
console.log("\u2705 Transform completed: ".concat(_this2.currentMode, " mode"));
|
|
293
|
-
};
|
|
308
|
+
}, _callee);
|
|
309
|
+
}));
|
|
294
310
|
// Transform changing event
|
|
295
311
|
this.eventHandlers.transforming = function () {
|
|
296
312
|
// Apply real-time visual transformation to objects during drag
|
|
@@ -522,7 +538,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
522
538
|
}, {
|
|
523
539
|
key: "_isValidSelectableObject",
|
|
524
540
|
value: function _isValidSelectableObject(object) {
|
|
525
|
-
var _object$userData;
|
|
541
|
+
var _object$userData, _object$userData2;
|
|
526
542
|
// Safety check: ensure object is still valid and in the scene
|
|
527
543
|
if (!object || !object.parent) {
|
|
528
544
|
console.warn('â ī¸ Selected object is no longer valid or in scene');
|
|
@@ -540,6 +556,12 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
540
556
|
console.warn('â ī¸ Object is marked as non-selectable (stub segment)');
|
|
541
557
|
return false;
|
|
542
558
|
}
|
|
559
|
+
|
|
560
|
+
// Check if object is marked as immutable (computed segments/elbows from pathfinder)
|
|
561
|
+
if (((_object$userData2 = object.userData) === null || _object$userData2 === void 0 ? void 0 : _object$userData2.immutable) === true) {
|
|
562
|
+
console.warn('â ī¸ Object is immutable (computed from pathfinder)');
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
543
565
|
return true;
|
|
544
566
|
}
|
|
545
567
|
|
|
@@ -579,7 +601,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
579
601
|
}, {
|
|
580
602
|
key: "isSelectableObject",
|
|
581
603
|
value: function isSelectableObject(object) {
|
|
582
|
-
var _object$
|
|
604
|
+
var _object$userData3, _object$userData4, _object$userData5, _object$userData6, _object$userData7, _object$userData8, _object$userData9, _object$userData0;
|
|
583
605
|
// Basic safety checks
|
|
584
606
|
if (!object || !object.isObject3D) {
|
|
585
607
|
return false;
|
|
@@ -591,25 +613,30 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
591
613
|
}
|
|
592
614
|
|
|
593
615
|
// Skip helpers and special objects
|
|
594
|
-
var isHelper = object.isHelper || ((_object$
|
|
595
|
-
var isBaseGround = (_object$
|
|
596
|
-
var isBrickWall = (_object$
|
|
616
|
+
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);
|
|
617
|
+
var isBaseGround = (_object$userData5 = object.userData) === null || _object$userData5 === void 0 ? void 0 : _object$userData5.isBaseGround;
|
|
618
|
+
var isBrickWall = (_object$userData6 = object.userData) === null || _object$userData6 === void 0 ? void 0 : _object$userData6.isBrickWall;
|
|
597
619
|
if (isHelper || isBaseGround || isBrickWall || !object.visible) {
|
|
598
620
|
return false;
|
|
599
621
|
}
|
|
600
622
|
|
|
601
623
|
// Skip segment connectors - they should not be selectable for transformation
|
|
602
|
-
if (((_object$
|
|
624
|
+
if (((_object$userData7 = object.userData) === null || _object$userData7 === void 0 ? void 0 : _object$userData7.objectType) === 'segment-connector') {
|
|
603
625
|
return false;
|
|
604
626
|
}
|
|
605
627
|
|
|
606
628
|
// Check if object has explicit selectable flag set to false
|
|
607
|
-
if (((_object$
|
|
629
|
+
if (((_object$userData8 = object.userData) === null || _object$userData8 === void 0 ? void 0 : _object$userData8.selectable) === false) {
|
|
630
|
+
return false;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// Check if object is marked as immutable (computed segments/elbows from pathfinder)
|
|
634
|
+
if (((_object$userData9 = object.userData) === null || _object$userData9 === void 0 ? void 0 : _object$userData9.immutable) === true) {
|
|
608
635
|
return false;
|
|
609
636
|
}
|
|
610
637
|
|
|
611
638
|
// Allow components, gateways, and segments to be selected
|
|
612
|
-
var objectType = (_object$
|
|
639
|
+
var objectType = (_object$userData0 = object.userData) === null || _object$userData0 === void 0 ? void 0 : _object$userData0.objectType;
|
|
613
640
|
return objectType === 'component' || objectType === 'gateway' || isSegment(object);
|
|
614
641
|
}
|
|
615
642
|
/**
|
|
@@ -1284,7 +1311,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1284
1311
|
|
|
1285
1312
|
// Traverse scene to find selectable objects
|
|
1286
1313
|
this.scene.traverse(function (object) {
|
|
1287
|
-
var _object$
|
|
1314
|
+
var _object$userData1, _object$userData10;
|
|
1288
1315
|
// Skip invalid objects and helpers early
|
|
1289
1316
|
if (!object || !object.isObject3D) {
|
|
1290
1317
|
return;
|
|
@@ -1296,7 +1323,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1296
1323
|
}
|
|
1297
1324
|
|
|
1298
1325
|
// Skip other helpers and special objects
|
|
1299
|
-
if (object.isHelper || (_object$
|
|
1326
|
+
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) {
|
|
1300
1327
|
return;
|
|
1301
1328
|
}
|
|
1302
1329
|
try {
|
|
@@ -1468,17 +1495,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1468
1495
|
}, {
|
|
1469
1496
|
key: "applyMultiSelectionTransform",
|
|
1470
1497
|
value: (function () {
|
|
1471
|
-
var _applyMultiSelectionTransform = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
1498
|
+
var _applyMultiSelectionTransform = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
|
|
1472
1499
|
var _this9 = this;
|
|
1473
|
-
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;
|
|
1474
|
-
return _regenerator().w(function (
|
|
1475
|
-
while (1) switch (
|
|
1500
|
+
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;
|
|
1501
|
+
return _regenerator().w(function (_context4) {
|
|
1502
|
+
while (1) switch (_context4.n) {
|
|
1476
1503
|
case 0:
|
|
1477
1504
|
if (!(!this.multiSelectionGroup || this.selectedObjects.length === 0)) {
|
|
1478
|
-
|
|
1505
|
+
_context4.n = 1;
|
|
1479
1506
|
break;
|
|
1480
1507
|
}
|
|
1481
|
-
return
|
|
1508
|
+
return _context4.a(2);
|
|
1482
1509
|
case 1:
|
|
1483
1510
|
console.log("\uD83D\uDD27 Applying multi-selection transform to ".concat(this.selectedObjects.length, " objects"));
|
|
1484
1511
|
|
|
@@ -1507,7 +1534,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1507
1534
|
// Only process if there's a meaningful translation
|
|
1508
1535
|
threshold = 0.001;
|
|
1509
1536
|
if (!(this.currentMode === 'translate' && positionDelta.length() > threshold)) {
|
|
1510
|
-
|
|
1537
|
+
_context4.n = 21;
|
|
1511
1538
|
break;
|
|
1512
1539
|
}
|
|
1513
1540
|
// FIRST: Reset all objects to their original positions
|
|
@@ -1530,14 +1557,23 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1530
1557
|
});
|
|
1531
1558
|
components = this.selectedObjects.filter(function (obj) {
|
|
1532
1559
|
return !isSegment(obj) && !isGateway(obj);
|
|
1533
|
-
}); //
|
|
1560
|
+
}); // Debug: Check availability of managers
|
|
1561
|
+
console.log('đ Debug - sceneViewer available:', !!this.sceneViewer);
|
|
1562
|
+
console.log('đ Debug - sceneViewer.managers available:', !!((_this$sceneViewer = this.sceneViewer) !== null && _this$sceneViewer !== void 0 && _this$sceneViewer.managers));
|
|
1563
|
+
console.log('đ Debug - Available managers:', (_this$sceneViewer2 = this.sceneViewer) !== null && _this$sceneViewer2 !== void 0 && _this$sceneViewer2.managers ? Object.keys(this.sceneViewer.managers) : 'none');
|
|
1564
|
+
console.log('đ Debug - transformOperationsManager (direct):', !!((_this$sceneViewer3 = this.sceneViewer) !== null && _this$sceneViewer3 !== void 0 && _this$sceneViewer3.transformOperationsManager));
|
|
1565
|
+
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));
|
|
1566
|
+
console.log('đ Debug - Segments to translate:', segments.length);
|
|
1567
|
+
|
|
1568
|
+
// BATCH SEGMENT TRANSLATIONS: Call translateSegment with skipPathUpdate=true
|
|
1534
1569
|
// Process segments SEQUENTIALLY with throttling for maximum stability
|
|
1535
|
-
|
|
1536
|
-
|
|
1570
|
+
// Access transformOperationsManager directly from sceneViewer (it's attached in attachToComponent)
|
|
1571
|
+
if (!(segments.length > 0 && (_this$sceneViewer5 = this.sceneViewer) !== null && _this$sceneViewer5 !== void 0 && _this$sceneViewer5.transformOperationsManager)) {
|
|
1572
|
+
_context4.n = 5;
|
|
1537
1573
|
break;
|
|
1538
1574
|
}
|
|
1539
1575
|
console.log("\uD83D\uDD27 Batch translating ".concat(segments.length, " segments (sequential with throttling)..."));
|
|
1540
|
-
transformOpsManager = this.sceneViewer.
|
|
1576
|
+
transformOpsManager = this.sceneViewer.transformOperationsManager; // Throttle delay in milliseconds (adjust as needed for stability)
|
|
1541
1577
|
THROTTLE_DELAY = 10; // 10ms between axis operations
|
|
1542
1578
|
SEGMENT_DELAY = 20; // 20ms between segments
|
|
1543
1579
|
// Helper function for throttled delay
|
|
@@ -1548,13 +1584,13 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1548
1584
|
}; // Process each segment sequentially with throttling for stability
|
|
1549
1585
|
_loop = /*#__PURE__*/_regenerator().m(function _loop(i) {
|
|
1550
1586
|
var segment, _segment$userData, _segment$userData2, segmentId, success, newSegmentId, _segment$userData3, _segment$userData4, _segmentId, _success, _newSegmentId, _segment$userData5, _segment$userData6, _segmentId2, _success2, _newSegmentId2, selectedIndex;
|
|
1551
|
-
return _regenerator().w(function (
|
|
1552
|
-
while (1) switch (
|
|
1587
|
+
return _regenerator().w(function (_context2) {
|
|
1588
|
+
while (1) switch (_context2.n) {
|
|
1553
1589
|
case 0:
|
|
1554
1590
|
segment = segments[i]; // Call translateSegment API with skipPathUpdate=true to defer path updates
|
|
1555
1591
|
// IMPORTANT: Refresh segment reference after each axis to handle UUID changes from manualization
|
|
1556
1592
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1557
|
-
|
|
1593
|
+
_context2.n = 1;
|
|
1558
1594
|
break;
|
|
1559
1595
|
}
|
|
1560
1596
|
segmentId = segment.uuid || ((_segment$userData = segment.userData) === null || _segment$userData === void 0 ? void 0 : _segment$userData.originalUuid);
|
|
@@ -1564,7 +1600,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1564
1600
|
}
|
|
1565
1601
|
// Refresh segment reference by searching for the new UUID or by segmentIndex
|
|
1566
1602
|
// After manualization, UUID changes from SEGMENT-X to Segment-X
|
|
1567
|
-
newSegmentId = (_segment$userData2 = segment.userData) !== null && _segment$userData2 !== void 0 && _segment$userData2.segmentIndex ? "
|
|
1603
|
+
newSegmentId = (_segment$userData2 = segment.userData) !== null && _segment$userData2 !== void 0 && _segment$userData2.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : segmentId;
|
|
1568
1604
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', newSegmentId) || segment;
|
|
1569
1605
|
|
|
1570
1606
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1572,11 +1608,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1572
1608
|
segment.updateMatrix();
|
|
1573
1609
|
segment.updateMatrixWorld(true);
|
|
1574
1610
|
}
|
|
1575
|
-
|
|
1611
|
+
_context2.n = 1;
|
|
1576
1612
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1577
1613
|
case 1:
|
|
1578
1614
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1579
|
-
|
|
1615
|
+
_context2.n = 2;
|
|
1580
1616
|
break;
|
|
1581
1617
|
}
|
|
1582
1618
|
_segmentId = segment.uuid || ((_segment$userData3 = segment.userData) === null || _segment$userData3 === void 0 ? void 0 : _segment$userData3.originalUuid);
|
|
@@ -1585,7 +1621,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1585
1621
|
console.warn("\u26A0\uFE0F Failed to translate segment ".concat(_segmentId, " on Y axis"));
|
|
1586
1622
|
}
|
|
1587
1623
|
// Refresh segment reference by searching for the new UUID
|
|
1588
|
-
_newSegmentId = (_segment$userData4 = segment.userData) !== null && _segment$userData4 !== void 0 && _segment$userData4.segmentIndex ? "
|
|
1624
|
+
_newSegmentId = (_segment$userData4 = segment.userData) !== null && _segment$userData4 !== void 0 && _segment$userData4.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId;
|
|
1589
1625
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId) || segment;
|
|
1590
1626
|
|
|
1591
1627
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1593,11 +1629,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1593
1629
|
segment.updateMatrix();
|
|
1594
1630
|
segment.updateMatrixWorld(true);
|
|
1595
1631
|
}
|
|
1596
|
-
|
|
1632
|
+
_context2.n = 2;
|
|
1597
1633
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1598
1634
|
case 2:
|
|
1599
1635
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1600
|
-
|
|
1636
|
+
_context2.n = 3;
|
|
1601
1637
|
break;
|
|
1602
1638
|
}
|
|
1603
1639
|
_segmentId2 = segment.uuid || ((_segment$userData5 = segment.userData) === null || _segment$userData5 === void 0 ? void 0 : _segment$userData5.originalUuid);
|
|
@@ -1606,7 +1642,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1606
1642
|
console.warn("\u26A0\uFE0F Failed to translate segment ".concat(_segmentId2, " on Z axis"));
|
|
1607
1643
|
}
|
|
1608
1644
|
// Refresh segment reference by searching for the new UUID
|
|
1609
|
-
_newSegmentId2 = (_segment$userData6 = segment.userData) !== null && _segment$userData6 !== void 0 && _segment$userData6.segmentIndex ? "
|
|
1645
|
+
_newSegmentId2 = (_segment$userData6 = segment.userData) !== null && _segment$userData6 !== void 0 && _segment$userData6.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId2;
|
|
1610
1646
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId2) || segment;
|
|
1611
1647
|
|
|
1612
1648
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1614,7 +1650,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1614
1650
|
segment.updateMatrix();
|
|
1615
1651
|
segment.updateMatrixWorld(true);
|
|
1616
1652
|
}
|
|
1617
|
-
|
|
1653
|
+
_context2.n = 3;
|
|
1618
1654
|
return _throttleDelay(THROTTLE_DELAY);
|
|
1619
1655
|
case 3:
|
|
1620
1656
|
// Update the segment in the selectedObjects array with the refreshed reference
|
|
@@ -1634,34 +1670,38 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1634
1670
|
_this9.selectedObjects[selectedIndex] = segment;
|
|
1635
1671
|
console.log("\u2705 Updated selectedObjects[".concat(selectedIndex, "] with refreshed segment reference"));
|
|
1636
1672
|
}
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1673
|
+
if (segment) {
|
|
1674
|
+
console.log("\uD83D\uDCE6 Segment ".concat(segment.name, " translated (").concat(i + 1, "/").concat(segments.length, "):"), {
|
|
1675
|
+
deltaX: deltaX,
|
|
1676
|
+
deltaY: deltaY,
|
|
1677
|
+
deltaZ: deltaZ
|
|
1678
|
+
});
|
|
1679
|
+
} else {
|
|
1680
|
+
console.warn("\u26A0\uFE0F Segment reference became null after translation (".concat(i + 1, "/").concat(segments.length, ")"));
|
|
1681
|
+
}
|
|
1642
1682
|
|
|
1643
1683
|
// Delay between segments to ensure all updates propagate
|
|
1644
1684
|
if (!(i < segments.length - 1)) {
|
|
1645
|
-
|
|
1685
|
+
_context2.n = 4;
|
|
1646
1686
|
break;
|
|
1647
1687
|
}
|
|
1648
|
-
|
|
1688
|
+
_context2.n = 4;
|
|
1649
1689
|
return _throttleDelay(SEGMENT_DELAY);
|
|
1650
1690
|
case 4:
|
|
1651
|
-
return
|
|
1691
|
+
return _context2.a(2);
|
|
1652
1692
|
}
|
|
1653
1693
|
}, _loop);
|
|
1654
1694
|
});
|
|
1655
1695
|
i = 0;
|
|
1656
1696
|
case 2:
|
|
1657
1697
|
if (!(i < segments.length)) {
|
|
1658
|
-
|
|
1698
|
+
_context4.n = 4;
|
|
1659
1699
|
break;
|
|
1660
1700
|
}
|
|
1661
|
-
return
|
|
1701
|
+
return _context4.d(_regeneratorValues(_loop(i)), 3);
|
|
1662
1702
|
case 3:
|
|
1663
1703
|
i++;
|
|
1664
|
-
|
|
1704
|
+
_context4.n = 2;
|
|
1665
1705
|
break;
|
|
1666
1706
|
case 4:
|
|
1667
1707
|
// Only call updatePaths ONCE after all segments are translated
|
|
@@ -1670,11 +1710,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1670
1710
|
this.sceneViewer.updatePaths();
|
|
1671
1711
|
console.log('â
Paths regenerated successfully for all segments');
|
|
1672
1712
|
}
|
|
1673
|
-
|
|
1713
|
+
_context4.n = 8;
|
|
1674
1714
|
break;
|
|
1675
1715
|
case 5:
|
|
1676
1716
|
if (!(segments.length > 0)) {
|
|
1677
|
-
|
|
1717
|
+
_context4.n = 8;
|
|
1678
1718
|
break;
|
|
1679
1719
|
}
|
|
1680
1720
|
// Fallback to individual API calls if manager not available
|
|
@@ -1691,18 +1731,18 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1691
1731
|
};
|
|
1692
1732
|
_loop2 = /*#__PURE__*/_regenerator().m(function _loop2(_i) {
|
|
1693
1733
|
var segment, _segment$userData7, _segment$userData8, segmentId, newSegmentId, _segment$userData9, _segment$userData0, _segmentId3, _newSegmentId3, _segment$userData1, _segment$userData10, _segmentId4, _newSegmentId4, selectedIndex;
|
|
1694
|
-
return _regenerator().w(function (
|
|
1695
|
-
while (1) switch (
|
|
1734
|
+
return _regenerator().w(function (_context3) {
|
|
1735
|
+
while (1) switch (_context3.n) {
|
|
1696
1736
|
case 0:
|
|
1697
1737
|
segment = segments[_i];
|
|
1698
1738
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1699
|
-
|
|
1739
|
+
_context3.n = 1;
|
|
1700
1740
|
break;
|
|
1701
1741
|
}
|
|
1702
1742
|
segmentId = segment.uuid || ((_segment$userData7 = segment.userData) === null || _segment$userData7 === void 0 ? void 0 : _segment$userData7.originalUuid);
|
|
1703
1743
|
_this9.centralPlant.translateSegment(segmentId, 'x', deltaX);
|
|
1704
1744
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1705
|
-
newSegmentId = (_segment$userData8 = segment.userData) !== null && _segment$userData8 !== void 0 && _segment$userData8.segmentIndex ? "
|
|
1745
|
+
newSegmentId = (_segment$userData8 = segment.userData) !== null && _segment$userData8 !== void 0 && _segment$userData8.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : segmentId;
|
|
1706
1746
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', newSegmentId) || segment;
|
|
1707
1747
|
|
|
1708
1748
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1710,17 +1750,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1710
1750
|
segment.updateMatrix();
|
|
1711
1751
|
segment.updateMatrixWorld(true);
|
|
1712
1752
|
}
|
|
1713
|
-
|
|
1753
|
+
_context3.n = 1;
|
|
1714
1754
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1715
1755
|
case 1:
|
|
1716
1756
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1717
|
-
|
|
1757
|
+
_context3.n = 2;
|
|
1718
1758
|
break;
|
|
1719
1759
|
}
|
|
1720
1760
|
_segmentId3 = segment.uuid || ((_segment$userData9 = segment.userData) === null || _segment$userData9 === void 0 ? void 0 : _segment$userData9.originalUuid);
|
|
1721
1761
|
_this9.centralPlant.translateSegment(_segmentId3, 'y', deltaY);
|
|
1722
1762
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1723
|
-
_newSegmentId3 = (_segment$userData0 = segment.userData) !== null && _segment$userData0 !== void 0 && _segment$userData0.segmentIndex ? "
|
|
1763
|
+
_newSegmentId3 = (_segment$userData0 = segment.userData) !== null && _segment$userData0 !== void 0 && _segment$userData0.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId3;
|
|
1724
1764
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId3) || segment;
|
|
1725
1765
|
|
|
1726
1766
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1728,17 +1768,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1728
1768
|
segment.updateMatrix();
|
|
1729
1769
|
segment.updateMatrixWorld(true);
|
|
1730
1770
|
}
|
|
1731
|
-
|
|
1771
|
+
_context3.n = 2;
|
|
1732
1772
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1733
1773
|
case 2:
|
|
1734
1774
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1735
|
-
|
|
1775
|
+
_context3.n = 3;
|
|
1736
1776
|
break;
|
|
1737
1777
|
}
|
|
1738
1778
|
_segmentId4 = segment.uuid || ((_segment$userData1 = segment.userData) === null || _segment$userData1 === void 0 ? void 0 : _segment$userData1.originalUuid);
|
|
1739
1779
|
_this9.centralPlant.translateSegment(_segmentId4, 'z', deltaZ);
|
|
1740
1780
|
// Refresh segment reference by searching for the new UUID after manualization
|
|
1741
|
-
_newSegmentId4 = (_segment$userData10 = segment.userData) !== null && _segment$userData10 !== void 0 && _segment$userData10.segmentIndex ? "
|
|
1781
|
+
_newSegmentId4 = (_segment$userData10 = segment.userData) !== null && _segment$userData10 !== void 0 && _segment$userData10.segmentIndex ? "SEGMENT-".concat(segment.userData.segmentIndex) : _segmentId4;
|
|
1742
1782
|
segment = _this9.sceneViewer.scene.getObjectByProperty('uuid', _newSegmentId4) || segment;
|
|
1743
1783
|
|
|
1744
1784
|
// Update matrix to ensure geometry is current for next operation
|
|
@@ -1746,7 +1786,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1746
1786
|
segment.updateMatrix();
|
|
1747
1787
|
segment.updateMatrixWorld(true);
|
|
1748
1788
|
}
|
|
1749
|
-
|
|
1789
|
+
_context3.n = 3;
|
|
1750
1790
|
return _throttleDelay2(_THROTTLE_DELAY);
|
|
1751
1791
|
case 3:
|
|
1752
1792
|
// Update the segment in the selectedObjects array with the refreshed reference
|
|
@@ -1765,34 +1805,38 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1765
1805
|
_this9.selectedObjects[selectedIndex] = segment;
|
|
1766
1806
|
console.log("\u2705 Updated selectedObjects[".concat(selectedIndex, "] with refreshed segment reference"));
|
|
1767
1807
|
}
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1808
|
+
if (segment) {
|
|
1809
|
+
console.log("\uD83D\uDCE6 Segment ".concat(segment.name, " translated (").concat(_i + 1, "/").concat(segments.length, "):"), {
|
|
1810
|
+
deltaX: deltaX,
|
|
1811
|
+
deltaY: deltaY,
|
|
1812
|
+
deltaZ: deltaZ
|
|
1813
|
+
});
|
|
1814
|
+
} else {
|
|
1815
|
+
console.warn("\u26A0\uFE0F Segment reference became null after translation (".concat(_i + 1, "/").concat(segments.length, ")"));
|
|
1816
|
+
}
|
|
1773
1817
|
|
|
1774
1818
|
// Delay between segments
|
|
1775
1819
|
if (!(_i < segments.length - 1)) {
|
|
1776
|
-
|
|
1820
|
+
_context3.n = 4;
|
|
1777
1821
|
break;
|
|
1778
1822
|
}
|
|
1779
|
-
|
|
1823
|
+
_context3.n = 4;
|
|
1780
1824
|
return _throttleDelay2(_SEGMENT_DELAY);
|
|
1781
1825
|
case 4:
|
|
1782
|
-
return
|
|
1826
|
+
return _context3.a(2);
|
|
1783
1827
|
}
|
|
1784
1828
|
}, _loop2);
|
|
1785
1829
|
});
|
|
1786
1830
|
_i = 0;
|
|
1787
1831
|
case 6:
|
|
1788
1832
|
if (!(_i < segments.length)) {
|
|
1789
|
-
|
|
1833
|
+
_context4.n = 8;
|
|
1790
1834
|
break;
|
|
1791
1835
|
}
|
|
1792
|
-
return
|
|
1836
|
+
return _context4.d(_regeneratorValues(_loop2(_i)), 7);
|
|
1793
1837
|
case 7:
|
|
1794
1838
|
_i++;
|
|
1795
|
-
|
|
1839
|
+
_context4.n = 6;
|
|
1796
1840
|
break;
|
|
1797
1841
|
case 8:
|
|
1798
1842
|
// Throttle delays for gateways and components
|
|
@@ -1808,33 +1852,33 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1808
1852
|
_i2 = 0;
|
|
1809
1853
|
case 9:
|
|
1810
1854
|
if (!(_i2 < gateways.length)) {
|
|
1811
|
-
|
|
1855
|
+
_context4.n = 14;
|
|
1812
1856
|
break;
|
|
1813
1857
|
}
|
|
1814
1858
|
gateway = gateways[_i2];
|
|
1815
1859
|
gatewayId = gateway.uuid || ((_gateway$userData = gateway.userData) === null || _gateway$userData === void 0 ? void 0 : _gateway$userData.originalUuid);
|
|
1816
1860
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1817
|
-
|
|
1861
|
+
_context4.n = 10;
|
|
1818
1862
|
break;
|
|
1819
1863
|
}
|
|
1820
1864
|
this.centralPlant.translateGateway(gatewayId, 'x', deltaX);
|
|
1821
|
-
|
|
1865
|
+
_context4.n = 10;
|
|
1822
1866
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1823
1867
|
case 10:
|
|
1824
1868
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1825
|
-
|
|
1869
|
+
_context4.n = 11;
|
|
1826
1870
|
break;
|
|
1827
1871
|
}
|
|
1828
1872
|
this.centralPlant.translateGateway(gatewayId, 'y', deltaY);
|
|
1829
|
-
|
|
1873
|
+
_context4.n = 11;
|
|
1830
1874
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1831
1875
|
case 11:
|
|
1832
1876
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1833
|
-
|
|
1877
|
+
_context4.n = 12;
|
|
1834
1878
|
break;
|
|
1835
1879
|
}
|
|
1836
1880
|
this.centralPlant.translateGateway(gatewayId, 'z', deltaZ);
|
|
1837
|
-
|
|
1881
|
+
_context4.n = 12;
|
|
1838
1882
|
return throttleDelay(GATEWAY_THROTTLE);
|
|
1839
1883
|
case 12:
|
|
1840
1884
|
console.log("\uD83D\uDEAA Gateway ".concat(gateway.name, " translated (").concat(_i2 + 1, "/").concat(gateways.length, "):"), {
|
|
@@ -1845,46 +1889,46 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1845
1889
|
|
|
1846
1890
|
// Delay between gateways
|
|
1847
1891
|
if (!(_i2 < gateways.length - 1)) {
|
|
1848
|
-
|
|
1892
|
+
_context4.n = 13;
|
|
1849
1893
|
break;
|
|
1850
1894
|
}
|
|
1851
|
-
|
|
1895
|
+
_context4.n = 13;
|
|
1852
1896
|
return throttleDelay(GATEWAY_DELAY);
|
|
1853
1897
|
case 13:
|
|
1854
1898
|
_i2++;
|
|
1855
|
-
|
|
1899
|
+
_context4.n = 9;
|
|
1856
1900
|
break;
|
|
1857
1901
|
case 14:
|
|
1858
1902
|
_i3 = 0;
|
|
1859
1903
|
case 15:
|
|
1860
1904
|
if (!(_i3 < components.length)) {
|
|
1861
|
-
|
|
1905
|
+
_context4.n = 20;
|
|
1862
1906
|
break;
|
|
1863
1907
|
}
|
|
1864
1908
|
component = components[_i3];
|
|
1865
1909
|
componentId = component.uuid || ((_component$userData = component.userData) === null || _component$userData === void 0 ? void 0 : _component$userData.originalUuid);
|
|
1866
1910
|
if (!(Math.abs(deltaX) > threshold)) {
|
|
1867
|
-
|
|
1911
|
+
_context4.n = 16;
|
|
1868
1912
|
break;
|
|
1869
1913
|
}
|
|
1870
1914
|
this.centralPlant.translate(componentId, 'x', deltaX);
|
|
1871
|
-
|
|
1915
|
+
_context4.n = 16;
|
|
1872
1916
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1873
1917
|
case 16:
|
|
1874
1918
|
if (!(Math.abs(deltaY) > threshold)) {
|
|
1875
|
-
|
|
1919
|
+
_context4.n = 17;
|
|
1876
1920
|
break;
|
|
1877
1921
|
}
|
|
1878
1922
|
this.centralPlant.translate(componentId, 'y', deltaY);
|
|
1879
|
-
|
|
1923
|
+
_context4.n = 17;
|
|
1880
1924
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1881
1925
|
case 17:
|
|
1882
1926
|
if (!(Math.abs(deltaZ) > threshold)) {
|
|
1883
|
-
|
|
1927
|
+
_context4.n = 18;
|
|
1884
1928
|
break;
|
|
1885
1929
|
}
|
|
1886
1930
|
this.centralPlant.translate(componentId, 'z', deltaZ);
|
|
1887
|
-
|
|
1931
|
+
_context4.n = 18;
|
|
1888
1932
|
return throttleDelay(COMPONENT_THROTTLE);
|
|
1889
1933
|
case 18:
|
|
1890
1934
|
console.log("\uD83D\uDD27 Component ".concat(component.name, " translated (").concat(_i3 + 1, "/").concat(components.length, "):"), {
|
|
@@ -1895,14 +1939,14 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1895
1939
|
|
|
1896
1940
|
// Delay between components
|
|
1897
1941
|
if (!(_i3 < components.length - 1)) {
|
|
1898
|
-
|
|
1942
|
+
_context4.n = 19;
|
|
1899
1943
|
break;
|
|
1900
1944
|
}
|
|
1901
|
-
|
|
1945
|
+
_context4.n = 19;
|
|
1902
1946
|
return throttleDelay(COMPONENT_DELAY);
|
|
1903
1947
|
case 19:
|
|
1904
1948
|
_i3++;
|
|
1905
|
-
|
|
1949
|
+
_context4.n = 15;
|
|
1906
1950
|
break;
|
|
1907
1951
|
case 20:
|
|
1908
1952
|
console.log("\u2705 All ".concat(this.selectedObjects.length, " objects translated with delta:"), {
|
|
@@ -1911,22 +1955,29 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1911
1955
|
deltaZ: deltaZ
|
|
1912
1956
|
});
|
|
1913
1957
|
case 21:
|
|
1914
|
-
// Reset the multi-selection group transform
|
|
1915
|
-
|
|
1916
|
-
this.multiSelectionGroup
|
|
1917
|
-
|
|
1958
|
+
// Reset the multi-selection group transform (if it still exists)
|
|
1959
|
+
// Note: The group might have been cleared during async operations
|
|
1960
|
+
if (this.multiSelectionGroup) {
|
|
1961
|
+
this.multiSelectionGroup.position.set(0, 0, 0);
|
|
1962
|
+
this.multiSelectionGroup.rotation.set(0, 0, 0);
|
|
1963
|
+
this.multiSelectionGroup.scale.set(1, 1, 1);
|
|
1964
|
+
} else {
|
|
1965
|
+
console.warn('â ī¸ Multi-selection group was cleared during transformation');
|
|
1966
|
+
}
|
|
1918
1967
|
|
|
1919
1968
|
// CRITICAL: Clear bounding box cache after manualization
|
|
1920
1969
|
// Manualization changes object references, making cached boxes invalid
|
|
1921
1970
|
this.clearBoundingBoxCache();
|
|
1922
1971
|
|
|
1923
|
-
// Update the multi-selection display with new positions
|
|
1924
|
-
this.
|
|
1972
|
+
// Update the multi-selection display with new positions (only if we still have selected objects)
|
|
1973
|
+
if (this.selectedObjects.length > 0) {
|
|
1974
|
+
this.updateMultiSelection();
|
|
1975
|
+
}
|
|
1925
1976
|
console.log("\u2705 Multi-selection transform applied");
|
|
1926
1977
|
case 22:
|
|
1927
|
-
return
|
|
1978
|
+
return _context4.a(2);
|
|
1928
1979
|
}
|
|
1929
|
-
},
|
|
1980
|
+
}, _callee2, this);
|
|
1930
1981
|
}));
|
|
1931
1982
|
function applyMultiSelectionTransform() {
|
|
1932
1983
|
return _applyMultiSelectionTransform.apply(this, arguments);
|