@2112-lab/central-plant 0.3.50 → 0.3.52
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 +337 -119
- package/dist/cjs/src/core/centralPlant.js +1 -1
- package/dist/cjs/src/managers/controls/transformControls.js +68 -30
- package/dist/cjs/src/managers/controls/transformControlsManager.js +265 -87
- package/dist/cjs/src/managers/pathfinding/pathfindingManager.js +3 -1
- package/dist/esm/src/core/centralPlant.js +1 -1
- package/dist/esm/src/managers/controls/transformControls.js +69 -31
- package/dist/esm/src/managers/controls/transformControlsManager.js +265 -87
- package/dist/esm/src/managers/pathfinding/pathfindingManager.js +3 -1
- package/package.json +2 -2
|
@@ -240,6 +240,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
240
240
|
this.eventHandlers.transformStart = function () {
|
|
241
241
|
console.log("transformControls transformStart");
|
|
242
242
|
_this2.transformState.isTransforming = true;
|
|
243
|
+
_this2._suppressNextClick = true;
|
|
243
244
|
|
|
244
245
|
// Store initial transforms for all selected objects
|
|
245
246
|
if (_this2.selectedObjects.length > 0) {
|
|
@@ -443,6 +444,10 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
443
444
|
// Translate mode
|
|
444
445
|
_this3.setMode('translate');
|
|
445
446
|
break;
|
|
447
|
+
case 'KeyR':
|
|
448
|
+
// Rotate mode
|
|
449
|
+
_this3.setMode('rotate');
|
|
450
|
+
break;
|
|
446
451
|
}
|
|
447
452
|
};
|
|
448
453
|
window.addEventListener('keydown', this.eventHandlers.keydown);
|
|
@@ -627,8 +632,16 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
627
632
|
}
|
|
628
633
|
|
|
629
634
|
// Left-click: select for transform only (bounding box, no tooltip)
|
|
635
|
+
var isComponent = objectType === 'component';
|
|
636
|
+
var isSameSingleSelection = isComponent && _this4.selectedObjects.length === 1 && _this4.selectedObjects[0] === targetObject;
|
|
637
|
+
if (isSameSingleSelection) {
|
|
638
|
+
_this4.toggleTransformMode();
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
630
641
|
if (!_this4.selectedObjects.includes(targetObject)) {
|
|
631
642
|
_this4.deselectObject();
|
|
643
|
+
} else if (!isComponent) {
|
|
644
|
+
_this4.setMode('translate');
|
|
632
645
|
}
|
|
633
646
|
_this4.selectObjectForTransformOnly(targetObject);
|
|
634
647
|
};
|
|
@@ -1300,6 +1313,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1300
1313
|
this._hideTransformControls();
|
|
1301
1314
|
console.log("\uD83D\uDD12 Transform controls hidden after deselection");
|
|
1302
1315
|
}
|
|
1316
|
+
this.setMode('translate');
|
|
1303
1317
|
|
|
1304
1318
|
// Execute callback
|
|
1305
1319
|
if (this.callbacks.onObjectSelect) {
|
|
@@ -1462,14 +1476,14 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1462
1476
|
}, {
|
|
1463
1477
|
key: "setMode",
|
|
1464
1478
|
value: function setMode(mode) {
|
|
1465
|
-
|
|
1466
|
-
if (mode !== 'translate') {
|
|
1479
|
+
if (mode !== 'translate' && mode !== 'rotate') {
|
|
1467
1480
|
console.warn("\u26A0\uFE0F Transform mode ".concat(mode, " is disabled. Locking to translate."));
|
|
1468
1481
|
mode = 'translate';
|
|
1469
1482
|
}
|
|
1470
1483
|
var previousMode = this.currentMode;
|
|
1471
1484
|
this.currentMode = mode;
|
|
1472
1485
|
this.transformControls.setMode(mode);
|
|
1486
|
+
this._updateAxisVisibilityForMode(mode);
|
|
1473
1487
|
|
|
1474
1488
|
// Execute callback
|
|
1475
1489
|
if (this.callbacks.onModeChange) {
|
|
@@ -1478,6 +1492,47 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1478
1492
|
console.log("\uD83D\uDD27 Transform mode changed: ".concat(previousMode, " \u2192 ").concat(mode));
|
|
1479
1493
|
}
|
|
1480
1494
|
|
|
1495
|
+
/**
|
|
1496
|
+
* Update gizmo axis visibility based on transform mode.
|
|
1497
|
+
* Rotation shows all rings but only Z-axis is interactive.
|
|
1498
|
+
* @param {'translate' | 'rotate'} mode
|
|
1499
|
+
* @private
|
|
1500
|
+
*/
|
|
1501
|
+
}, {
|
|
1502
|
+
key: "_updateAxisVisibilityForMode",
|
|
1503
|
+
value: function _updateAxisVisibilityForMode(mode) {
|
|
1504
|
+
if (!this.transformControls) return;
|
|
1505
|
+
if (mode === 'rotate') {
|
|
1506
|
+
this.transformControls.showX = true;
|
|
1507
|
+
this.transformControls.showY = true;
|
|
1508
|
+
this.transformControls.showZ = true;
|
|
1509
|
+
this.transformControls.pickX = false;
|
|
1510
|
+
this.transformControls.pickY = false;
|
|
1511
|
+
this.transformControls.pickZ = true;
|
|
1512
|
+
return;
|
|
1513
|
+
}
|
|
1514
|
+
this.transformControls.showX = this.config.showX;
|
|
1515
|
+
this.transformControls.showY = this.config.showY;
|
|
1516
|
+
this.transformControls.showZ = this.config.showZ;
|
|
1517
|
+
this.transformControls.pickX = true;
|
|
1518
|
+
this.transformControls.pickY = true;
|
|
1519
|
+
this.transformControls.pickZ = true;
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
/**
|
|
1523
|
+
* Toggle between translate and rotate transform modes
|
|
1524
|
+
*/
|
|
1525
|
+
}, {
|
|
1526
|
+
key: "toggleTransformMode",
|
|
1527
|
+
value: function toggleTransformMode() {
|
|
1528
|
+
var _this$transformContro;
|
|
1529
|
+
var newMode = this.currentMode === 'translate' ? 'rotate' : 'translate';
|
|
1530
|
+
this.setMode(newMode);
|
|
1531
|
+
if ((_this$transformContro = this.transformControls) !== null && _this$transformContro !== void 0 && _this$transformContro.object) {
|
|
1532
|
+
this.transformControls.updateMatrixWorld(true);
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1481
1536
|
/**
|
|
1482
1537
|
* Set the transformation space
|
|
1483
1538
|
* @param {'world' | 'local'} space - The transformation space
|
|
@@ -1916,12 +1971,10 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1916
1971
|
obj.position.copy(newWorldPos);
|
|
1917
1972
|
obj.updateMatrix();
|
|
1918
1973
|
} else if (_this8.currentMode === 'rotate') {
|
|
1919
|
-
// Calculate offset from centroid
|
|
1974
|
+
// Calculate offset from centroid (Z-axis rotation only)
|
|
1920
1975
|
var offsetFromCentroid = originalWorldPos.clone().sub(originalCentroid);
|
|
1921
|
-
|
|
1922
|
-
// Rotate the offset vector
|
|
1923
1976
|
var rotatedOffset = offsetFromCentroid.clone();
|
|
1924
|
-
var rotationQuat = new THREE.Quaternion().
|
|
1977
|
+
var rotationQuat = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 0, 1), rotationDelta.z);
|
|
1925
1978
|
rotatedOffset.applyQuaternion(rotationQuat);
|
|
1926
1979
|
|
|
1927
1980
|
// Calculate new world position
|
|
@@ -1937,9 +1990,9 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1937
1990
|
}
|
|
1938
1991
|
obj.position.copy(_newWorldPos);
|
|
1939
1992
|
|
|
1940
|
-
// Apply rotation
|
|
1941
|
-
obj.rotation.x = originalRot.x
|
|
1942
|
-
obj.rotation.y = originalRot.y
|
|
1993
|
+
// Apply Z-axis rotation only
|
|
1994
|
+
obj.rotation.x = originalRot.x;
|
|
1995
|
+
obj.rotation.y = originalRot.y;
|
|
1943
1996
|
obj.rotation.z = originalRot.z + rotationDelta.z;
|
|
1944
1997
|
obj.updateMatrix();
|
|
1945
1998
|
}
|
|
@@ -1969,7 +2022,15 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1969
2022
|
return _context2.a(2);
|
|
1970
2023
|
case 1:
|
|
1971
2024
|
console.log("\uD83D\uDD27 Applying multi-selection transform to ".concat(this.selectedObjects.length, " objects"));
|
|
1972
|
-
|
|
2025
|
+
if (!(this.currentMode === 'rotate')) {
|
|
2026
|
+
_context2.n = 3;
|
|
2027
|
+
break;
|
|
2028
|
+
}
|
|
2029
|
+
_context2.n = 2;
|
|
2030
|
+
return this._applyMultiSelectionRotation();
|
|
2031
|
+
case 2:
|
|
2032
|
+
return _context2.a(2);
|
|
2033
|
+
case 3:
|
|
1973
2034
|
// Calculate transformation deltas
|
|
1974
2035
|
_this$_calculateTrans = this._calculateTransformDeltas(), deltaX = _this$_calculateTrans.deltaX, deltaY = _this$_calculateTrans.deltaY, deltaZ = _this$_calculateTrans.deltaZ, threshold = _this$_calculateTrans.threshold;
|
|
1975
2036
|
console.log('🔧 Transform delta:', {
|
|
@@ -1979,12 +2040,12 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1979
2040
|
});
|
|
1980
2041
|
|
|
1981
2042
|
// Only process if there's a meaningful translation
|
|
1982
|
-
if (!(
|
|
1983
|
-
_context2.n =
|
|
2043
|
+
if (!(Math.abs(deltaX) < threshold && Math.abs(deltaY) < threshold && Math.abs(deltaZ) < threshold)) {
|
|
2044
|
+
_context2.n = 4;
|
|
1984
2045
|
break;
|
|
1985
2046
|
}
|
|
1986
2047
|
return _context2.a(2);
|
|
1987
|
-
case
|
|
2048
|
+
case 4:
|
|
1988
2049
|
// Reset all objects to original positions
|
|
1989
2050
|
this._resetObjectsToOriginalPositions();
|
|
1990
2051
|
|
|
@@ -1998,20 +2059,20 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
1998
2059
|
components = this.selectedObjects.filter(function (obj) {
|
|
1999
2060
|
return !isSegment(obj) && !isGateway(obj);
|
|
2000
2061
|
}); // Translate each object type
|
|
2001
|
-
_context2.n =
|
|
2062
|
+
_context2.n = 5;
|
|
2002
2063
|
return this._translateSegments(segments, deltaX, deltaY, deltaZ, threshold);
|
|
2003
|
-
case
|
|
2004
|
-
_context2.n =
|
|
2064
|
+
case 5:
|
|
2065
|
+
_context2.n = 6;
|
|
2005
2066
|
return this._translateGateways(gateways, deltaX, deltaY, deltaZ, threshold);
|
|
2006
|
-
case
|
|
2007
|
-
_context2.n =
|
|
2067
|
+
case 6:
|
|
2068
|
+
_context2.n = 7;
|
|
2008
2069
|
return this._translateComponents(components, deltaX, deltaY, deltaZ, threshold);
|
|
2009
|
-
case
|
|
2070
|
+
case 7:
|
|
2010
2071
|
console.log("\u2705 All ".concat(this.selectedObjects.length, " objects translated"));
|
|
2011
2072
|
|
|
2012
2073
|
// Cleanup and refresh
|
|
2013
2074
|
this._finalizeMultiSelectionTransform();
|
|
2014
|
-
case
|
|
2075
|
+
case 8:
|
|
2015
2076
|
return _context2.a(2);
|
|
2016
2077
|
}
|
|
2017
2078
|
}, _callee2, this);
|
|
@@ -2021,6 +2082,123 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2021
2082
|
}
|
|
2022
2083
|
return applyMultiSelectionTransform;
|
|
2023
2084
|
}()
|
|
2085
|
+
/**
|
|
2086
|
+
* Apply rotation from multi-selection group to selected components via API
|
|
2087
|
+
* @private
|
|
2088
|
+
*/
|
|
2089
|
+
)
|
|
2090
|
+
}, {
|
|
2091
|
+
key: "_applyMultiSelectionRotation",
|
|
2092
|
+
value: (function () {
|
|
2093
|
+
var _applyMultiSelectionRotation2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
2094
|
+
var threshold, rotationDeltas, _iterator6, _step6, _obj2, originalRot, originalPos, _deltaRad, _i, _rotationDeltas, _obj$userData5, _obj$userData6, _obj$userData7, _this$centralPlant, _rotationDeltas$_i, obj, deltaRad, componentId, deltaDeg, snappedDeg, _t;
|
|
2095
|
+
return _regenerator().w(function (_context3) {
|
|
2096
|
+
while (1) switch (_context3.n) {
|
|
2097
|
+
case 0:
|
|
2098
|
+
threshold = 0.001;
|
|
2099
|
+
rotationDeltas = [];
|
|
2100
|
+
_iterator6 = _createForOfIteratorHelper(this.selectedObjects);
|
|
2101
|
+
_context3.p = 1;
|
|
2102
|
+
_iterator6.s();
|
|
2103
|
+
case 2:
|
|
2104
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
2105
|
+
_context3.n = 6;
|
|
2106
|
+
break;
|
|
2107
|
+
}
|
|
2108
|
+
_obj2 = _step6.value;
|
|
2109
|
+
originalRot = _obj2.userData._multiSelectOriginalRotation;
|
|
2110
|
+
originalPos = _obj2.userData._multiSelectOriginalPosition;
|
|
2111
|
+
if (originalRot) {
|
|
2112
|
+
_context3.n = 3;
|
|
2113
|
+
break;
|
|
2114
|
+
}
|
|
2115
|
+
return _context3.a(3, 5);
|
|
2116
|
+
case 3:
|
|
2117
|
+
_deltaRad = _obj2.rotation.z - originalRot.z;
|
|
2118
|
+
if (!(Math.abs(_deltaRad) < threshold)) {
|
|
2119
|
+
_context3.n = 4;
|
|
2120
|
+
break;
|
|
2121
|
+
}
|
|
2122
|
+
return _context3.a(3, 5);
|
|
2123
|
+
case 4:
|
|
2124
|
+
rotationDeltas.push({
|
|
2125
|
+
obj: _obj2,
|
|
2126
|
+
originalPos: originalPos === null || originalPos === void 0 ? void 0 : originalPos.clone(),
|
|
2127
|
+
originalRot: originalRot.clone(),
|
|
2128
|
+
deltaRad: _deltaRad
|
|
2129
|
+
});
|
|
2130
|
+
case 5:
|
|
2131
|
+
_context3.n = 2;
|
|
2132
|
+
break;
|
|
2133
|
+
case 6:
|
|
2134
|
+
_context3.n = 8;
|
|
2135
|
+
break;
|
|
2136
|
+
case 7:
|
|
2137
|
+
_context3.p = 7;
|
|
2138
|
+
_t = _context3.v;
|
|
2139
|
+
_iterator6.e(_t);
|
|
2140
|
+
case 8:
|
|
2141
|
+
_context3.p = 8;
|
|
2142
|
+
_iterator6.f();
|
|
2143
|
+
return _context3.f(8);
|
|
2144
|
+
case 9:
|
|
2145
|
+
if (!(rotationDeltas.length === 0)) {
|
|
2146
|
+
_context3.n = 10;
|
|
2147
|
+
break;
|
|
2148
|
+
}
|
|
2149
|
+
return _context3.a(2);
|
|
2150
|
+
case 10:
|
|
2151
|
+
rotationDeltas.forEach(function (_ref2) {
|
|
2152
|
+
var obj = _ref2.obj,
|
|
2153
|
+
originalPos = _ref2.originalPos,
|
|
2154
|
+
originalRot = _ref2.originalRot;
|
|
2155
|
+
if (originalPos) {
|
|
2156
|
+
obj.position.copy(originalPos);
|
|
2157
|
+
}
|
|
2158
|
+
obj.rotation.copy(originalRot);
|
|
2159
|
+
obj.updateMatrixWorld(true);
|
|
2160
|
+
});
|
|
2161
|
+
_i = 0, _rotationDeltas = rotationDeltas;
|
|
2162
|
+
case 11:
|
|
2163
|
+
if (!(_i < _rotationDeltas.length)) {
|
|
2164
|
+
_context3.n = 15;
|
|
2165
|
+
break;
|
|
2166
|
+
}
|
|
2167
|
+
_rotationDeltas$_i = _rotationDeltas[_i], obj = _rotationDeltas$_i.obj, deltaRad = _rotationDeltas$_i.deltaRad;
|
|
2168
|
+
if (!(((_obj$userData5 = obj.userData) === null || _obj$userData5 === void 0 ? void 0 : _obj$userData5.objectType) !== 'component' || !((_obj$userData6 = obj.userData) !== null && _obj$userData6 !== void 0 && _obj$userData6.libraryId))) {
|
|
2169
|
+
_context3.n = 12;
|
|
2170
|
+
break;
|
|
2171
|
+
}
|
|
2172
|
+
return _context3.a(3, 14);
|
|
2173
|
+
case 12:
|
|
2174
|
+
componentId = obj.uuid || ((_obj$userData7 = obj.userData) === null || _obj$userData7 === void 0 ? void 0 : _obj$userData7.originalUuid);
|
|
2175
|
+
if (!(!componentId || !((_this$centralPlant = this.centralPlant) !== null && _this$centralPlant !== void 0 && _this$centralPlant.rotate))) {
|
|
2176
|
+
_context3.n = 13;
|
|
2177
|
+
break;
|
|
2178
|
+
}
|
|
2179
|
+
return _context3.a(3, 14);
|
|
2180
|
+
case 13:
|
|
2181
|
+
deltaDeg = THREE.MathUtils.radToDeg(deltaRad);
|
|
2182
|
+
snappedDeg = Math.round(deltaDeg / 90) * 90;
|
|
2183
|
+
if (Math.abs(snappedDeg) >= 90) {
|
|
2184
|
+
this.centralPlant.rotate(componentId, 'z', snappedDeg);
|
|
2185
|
+
}
|
|
2186
|
+
case 14:
|
|
2187
|
+
_i++;
|
|
2188
|
+
_context3.n = 11;
|
|
2189
|
+
break;
|
|
2190
|
+
case 15:
|
|
2191
|
+
this._finalizeMultiSelectionTransform();
|
|
2192
|
+
case 16:
|
|
2193
|
+
return _context3.a(2);
|
|
2194
|
+
}
|
|
2195
|
+
}, _callee3, this, [[1, 7, 8, 9]]);
|
|
2196
|
+
}));
|
|
2197
|
+
function _applyMultiSelectionRotation() {
|
|
2198
|
+
return _applyMultiSelectionRotation2.apply(this, arguments);
|
|
2199
|
+
}
|
|
2200
|
+
return _applyMultiSelectionRotation;
|
|
2201
|
+
}()
|
|
2024
2202
|
/**
|
|
2025
2203
|
* Calculate transformation deltas from multi-selection group
|
|
2026
2204
|
* @returns {Object} Delta values and threshold
|
|
@@ -2076,17 +2254,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2076
2254
|
}, {
|
|
2077
2255
|
key: "_translateSegments",
|
|
2078
2256
|
value: (function () {
|
|
2079
|
-
var _translateSegments2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
2257
|
+
var _translateSegments2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(segments, deltaX, deltaY, deltaZ, threshold) {
|
|
2080
2258
|
var _this$sceneViewer, _this$sceneViewer2;
|
|
2081
|
-
var transformOpsManager, useOptimizedPath, throttleDelay, AXIS_THROTTLE, OBJECT_DELAY, i, segment, axes,
|
|
2082
|
-
return _regenerator().w(function (
|
|
2083
|
-
while (1) switch (
|
|
2259
|
+
var transformOpsManager, useOptimizedPath, throttleDelay, AXIS_THROTTLE, OBJECT_DELAY, i, segment, axes, _i2, _axes, _axes$_i, axis, delta;
|
|
2260
|
+
return _regenerator().w(function (_context4) {
|
|
2261
|
+
while (1) switch (_context4.n) {
|
|
2084
2262
|
case 0:
|
|
2085
2263
|
if (!(segments.length === 0)) {
|
|
2086
|
-
|
|
2264
|
+
_context4.n = 1;
|
|
2087
2265
|
break;
|
|
2088
2266
|
}
|
|
2089
|
-
return
|
|
2267
|
+
return _context4.a(2);
|
|
2090
2268
|
case 1:
|
|
2091
2269
|
transformOpsManager = (_this$sceneViewer = this.sceneViewer) === null || _this$sceneViewer === void 0 ? void 0 : _this$sceneViewer.transformOperationsManager;
|
|
2092
2270
|
useOptimizedPath = transformOpsManager != null;
|
|
@@ -2105,7 +2283,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2105
2283
|
i = 0;
|
|
2106
2284
|
case 2:
|
|
2107
2285
|
if (!(i < segments.length)) {
|
|
2108
|
-
|
|
2286
|
+
_context4.n = 8;
|
|
2109
2287
|
break;
|
|
2110
2288
|
}
|
|
2111
2289
|
segment = segments[i];
|
|
@@ -2119,26 +2297,26 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2119
2297
|
axis: 'z',
|
|
2120
2298
|
delta: deltaZ
|
|
2121
2299
|
}]; // Translate on each axis
|
|
2122
|
-
|
|
2300
|
+
_i2 = 0, _axes = axes;
|
|
2123
2301
|
case 3:
|
|
2124
|
-
if (!(
|
|
2125
|
-
|
|
2302
|
+
if (!(_i2 < _axes.length)) {
|
|
2303
|
+
_context4.n = 6;
|
|
2126
2304
|
break;
|
|
2127
2305
|
}
|
|
2128
|
-
_axes$_i = _axes[
|
|
2306
|
+
_axes$_i = _axes[_i2], axis = _axes$_i.axis, delta = _axes$_i.delta;
|
|
2129
2307
|
if (!(Math.abs(delta) > threshold)) {
|
|
2130
|
-
|
|
2308
|
+
_context4.n = 5;
|
|
2131
2309
|
break;
|
|
2132
2310
|
}
|
|
2133
|
-
|
|
2311
|
+
_context4.n = 4;
|
|
2134
2312
|
return this._translateSegmentOnAxis(segment, axis, delta, useOptimizedPath, i);
|
|
2135
2313
|
case 4:
|
|
2136
|
-
segment =
|
|
2137
|
-
|
|
2314
|
+
segment = _context4.v;
|
|
2315
|
+
_context4.n = 5;
|
|
2138
2316
|
return throttleDelay(AXIS_THROTTLE);
|
|
2139
2317
|
case 5:
|
|
2140
|
-
|
|
2141
|
-
|
|
2318
|
+
_i2++;
|
|
2319
|
+
_context4.n = 3;
|
|
2142
2320
|
break;
|
|
2143
2321
|
case 6:
|
|
2144
2322
|
// Update selected objects array with refreshed reference
|
|
@@ -2149,14 +2327,14 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2149
2327
|
console.warn("\u26A0\uFE0F Segment reference became null (".concat(i + 1, "/").concat(segments.length, ")"));
|
|
2150
2328
|
}
|
|
2151
2329
|
if (!(i < segments.length - 1)) {
|
|
2152
|
-
|
|
2330
|
+
_context4.n = 7;
|
|
2153
2331
|
break;
|
|
2154
2332
|
}
|
|
2155
|
-
|
|
2333
|
+
_context4.n = 7;
|
|
2156
2334
|
return throttleDelay(OBJECT_DELAY);
|
|
2157
2335
|
case 7:
|
|
2158
2336
|
i++;
|
|
2159
|
-
|
|
2337
|
+
_context4.n = 2;
|
|
2160
2338
|
break;
|
|
2161
2339
|
case 8:
|
|
2162
2340
|
// Batch update paths for optimized path only
|
|
@@ -2166,9 +2344,9 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2166
2344
|
console.log('✅ Paths regenerated successfully');
|
|
2167
2345
|
}
|
|
2168
2346
|
case 9:
|
|
2169
|
-
return
|
|
2347
|
+
return _context4.a(2);
|
|
2170
2348
|
}
|
|
2171
|
-
},
|
|
2349
|
+
}, _callee4, this);
|
|
2172
2350
|
}));
|
|
2173
2351
|
function _translateSegments(_x, _x2, _x3, _x4, _x5) {
|
|
2174
2352
|
return _translateSegments2.apply(this, arguments);
|
|
@@ -2207,11 +2385,11 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2207
2385
|
}, {
|
|
2208
2386
|
key: "_translateSegmentOnAxis",
|
|
2209
2387
|
value: (function () {
|
|
2210
|
-
var _translateSegmentOnAxis2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
2388
|
+
var _translateSegmentOnAxis2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(segment, axis, delta, useOptimizedPath, index) {
|
|
2211
2389
|
var _segment$userData3;
|
|
2212
2390
|
var segmentId, success;
|
|
2213
|
-
return _regenerator().w(function (
|
|
2214
|
-
while (1) switch (
|
|
2391
|
+
return _regenerator().w(function (_context5) {
|
|
2392
|
+
while (1) switch (_context5.n) {
|
|
2215
2393
|
case 0:
|
|
2216
2394
|
segmentId = segment.uuid || ((_segment$userData3 = segment.userData) === null || _segment$userData3 === void 0 ? void 0 : _segment$userData3.originalUuid);
|
|
2217
2395
|
if (useOptimizedPath) {
|
|
@@ -2224,9 +2402,9 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2224
2402
|
}
|
|
2225
2403
|
|
|
2226
2404
|
// Refresh segment reference after manualization
|
|
2227
|
-
return
|
|
2405
|
+
return _context5.a(2, this._refreshSegmentReference(segment));
|
|
2228
2406
|
}
|
|
2229
|
-
},
|
|
2407
|
+
}, _callee5, this);
|
|
2230
2408
|
}));
|
|
2231
2409
|
function _translateSegmentOnAxis(_x6, _x7, _x8, _x9, _x0) {
|
|
2232
2410
|
return _translateSegmentOnAxis2.apply(this, arguments);
|
|
@@ -2242,8 +2420,8 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2242
2420
|
key: "_updateSegmentReference",
|
|
2243
2421
|
value: function _updateSegmentReference(oldSegment, newSegment, index) {
|
|
2244
2422
|
var selectedIndex = this.selectedObjects.findIndex(function (obj) {
|
|
2245
|
-
var _obj$
|
|
2246
|
-
return obj.uuid === oldSegment.uuid || ((_obj$
|
|
2423
|
+
var _obj$userData8;
|
|
2424
|
+
return obj.uuid === oldSegment.uuid || ((_obj$userData8 = obj.userData) === null || _obj$userData8 === void 0 ? void 0 : _obj$userData8.originalUuid) === oldSegment.uuid;
|
|
2247
2425
|
});
|
|
2248
2426
|
if (selectedIndex !== -1 && newSegment) {
|
|
2249
2427
|
// Clear bounding box cache
|
|
@@ -2261,17 +2439,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2261
2439
|
}, {
|
|
2262
2440
|
key: "_translateGateways",
|
|
2263
2441
|
value: (function () {
|
|
2264
|
-
var _translateGateways2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
2442
|
+
var _translateGateways2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(gateways, deltaX, deltaY, deltaZ, threshold) {
|
|
2265
2443
|
var _this9 = this;
|
|
2266
2444
|
var throttleDelay, AXIS_THROTTLE, OBJECT_DELAY, i, _gateway$userData, gateway, gatewayId;
|
|
2267
|
-
return _regenerator().w(function (
|
|
2268
|
-
while (1) switch (
|
|
2445
|
+
return _regenerator().w(function (_context6) {
|
|
2446
|
+
while (1) switch (_context6.n) {
|
|
2269
2447
|
case 0:
|
|
2270
2448
|
if (!(gateways.length === 0)) {
|
|
2271
|
-
|
|
2449
|
+
_context6.n = 1;
|
|
2272
2450
|
break;
|
|
2273
2451
|
}
|
|
2274
|
-
return
|
|
2452
|
+
return _context6.a(2);
|
|
2275
2453
|
case 1:
|
|
2276
2454
|
throttleDelay = function throttleDelay(ms) {
|
|
2277
2455
|
return new Promise(function (resolve) {
|
|
@@ -2283,31 +2461,31 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2283
2461
|
i = 0;
|
|
2284
2462
|
case 2:
|
|
2285
2463
|
if (!(i < gateways.length)) {
|
|
2286
|
-
|
|
2464
|
+
_context6.n = 5;
|
|
2287
2465
|
break;
|
|
2288
2466
|
}
|
|
2289
2467
|
gateway = gateways[i];
|
|
2290
2468
|
gatewayId = gateway.uuid || ((_gateway$userData = gateway.userData) === null || _gateway$userData === void 0 ? void 0 : _gateway$userData.originalUuid);
|
|
2291
|
-
|
|
2469
|
+
_context6.n = 3;
|
|
2292
2470
|
return this._translateObjectOnAxes(gatewayId, deltaX, deltaY, deltaZ, threshold, throttleDelay, AXIS_THROTTLE, function (id, axis, delta) {
|
|
2293
2471
|
return _this9.centralPlant.translateGateway(id, axis, delta);
|
|
2294
2472
|
});
|
|
2295
2473
|
case 3:
|
|
2296
2474
|
console.log("\uD83D\uDEAA Gateway ".concat(gateway.name, " translated (").concat(i + 1, "/").concat(gateways.length, ")"));
|
|
2297
2475
|
if (!(i < gateways.length - 1)) {
|
|
2298
|
-
|
|
2476
|
+
_context6.n = 4;
|
|
2299
2477
|
break;
|
|
2300
2478
|
}
|
|
2301
|
-
|
|
2479
|
+
_context6.n = 4;
|
|
2302
2480
|
return throttleDelay(OBJECT_DELAY);
|
|
2303
2481
|
case 4:
|
|
2304
2482
|
i++;
|
|
2305
|
-
|
|
2483
|
+
_context6.n = 2;
|
|
2306
2484
|
break;
|
|
2307
2485
|
case 5:
|
|
2308
|
-
return
|
|
2486
|
+
return _context6.a(2);
|
|
2309
2487
|
}
|
|
2310
|
-
},
|
|
2488
|
+
}, _callee6, this);
|
|
2311
2489
|
}));
|
|
2312
2490
|
function _translateGateways(_x1, _x10, _x11, _x12, _x13) {
|
|
2313
2491
|
return _translateGateways2.apply(this, arguments);
|
|
@@ -2322,17 +2500,17 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2322
2500
|
}, {
|
|
2323
2501
|
key: "_translateComponents",
|
|
2324
2502
|
value: (function () {
|
|
2325
|
-
var _translateComponents2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
2503
|
+
var _translateComponents2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(components, deltaX, deltaY, deltaZ, threshold) {
|
|
2326
2504
|
var _this0 = this;
|
|
2327
2505
|
var throttleDelay, AXIS_THROTTLE, OBJECT_DELAY, i, _component$userData, component, componentId;
|
|
2328
|
-
return _regenerator().w(function (
|
|
2329
|
-
while (1) switch (
|
|
2506
|
+
return _regenerator().w(function (_context7) {
|
|
2507
|
+
while (1) switch (_context7.n) {
|
|
2330
2508
|
case 0:
|
|
2331
2509
|
if (!(components.length === 0)) {
|
|
2332
|
-
|
|
2510
|
+
_context7.n = 1;
|
|
2333
2511
|
break;
|
|
2334
2512
|
}
|
|
2335
|
-
return
|
|
2513
|
+
return _context7.a(2);
|
|
2336
2514
|
case 1:
|
|
2337
2515
|
throttleDelay = function throttleDelay(ms) {
|
|
2338
2516
|
return new Promise(function (resolve) {
|
|
@@ -2344,31 +2522,31 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2344
2522
|
i = 0;
|
|
2345
2523
|
case 2:
|
|
2346
2524
|
if (!(i < components.length)) {
|
|
2347
|
-
|
|
2525
|
+
_context7.n = 5;
|
|
2348
2526
|
break;
|
|
2349
2527
|
}
|
|
2350
2528
|
component = components[i];
|
|
2351
2529
|
componentId = component.uuid || ((_component$userData = component.userData) === null || _component$userData === void 0 ? void 0 : _component$userData.originalUuid);
|
|
2352
|
-
|
|
2530
|
+
_context7.n = 3;
|
|
2353
2531
|
return this._translateObjectOnAxes(componentId, deltaX, deltaY, deltaZ, threshold, throttleDelay, AXIS_THROTTLE, function (id, axis, delta) {
|
|
2354
2532
|
return _this0.centralPlant.translate(id, axis, delta, true);
|
|
2355
2533
|
});
|
|
2356
2534
|
case 3:
|
|
2357
2535
|
console.log("\uD83D\uDD27 Component ".concat(component.name, " translated (").concat(i + 1, "/").concat(components.length, ")"));
|
|
2358
2536
|
if (!(i < components.length - 1)) {
|
|
2359
|
-
|
|
2537
|
+
_context7.n = 4;
|
|
2360
2538
|
break;
|
|
2361
2539
|
}
|
|
2362
|
-
|
|
2540
|
+
_context7.n = 4;
|
|
2363
2541
|
return throttleDelay(OBJECT_DELAY);
|
|
2364
2542
|
case 4:
|
|
2365
2543
|
i++;
|
|
2366
|
-
|
|
2544
|
+
_context7.n = 2;
|
|
2367
2545
|
break;
|
|
2368
2546
|
case 5:
|
|
2369
|
-
return
|
|
2547
|
+
return _context7.a(2);
|
|
2370
2548
|
}
|
|
2371
|
-
},
|
|
2549
|
+
}, _callee7, this);
|
|
2372
2550
|
}));
|
|
2373
2551
|
function _translateComponents(_x14, _x15, _x16, _x17, _x18) {
|
|
2374
2552
|
return _translateComponents2.apply(this, arguments);
|
|
@@ -2383,10 +2561,10 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2383
2561
|
}, {
|
|
2384
2562
|
key: "_translateObjectOnAxes",
|
|
2385
2563
|
value: (function () {
|
|
2386
|
-
var _translateObjectOnAxes2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function
|
|
2387
|
-
var axes,
|
|
2388
|
-
return _regenerator().w(function (
|
|
2389
|
-
while (1) switch (
|
|
2564
|
+
var _translateObjectOnAxes2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(objectId, deltaX, deltaY, deltaZ, threshold, throttleDelay, axisThrottle, translateFn) {
|
|
2565
|
+
var axes, _i3, _axes2, _axes2$_i, axis, delta;
|
|
2566
|
+
return _regenerator().w(function (_context8) {
|
|
2567
|
+
while (1) switch (_context8.n) {
|
|
2390
2568
|
case 0:
|
|
2391
2569
|
axes = [{
|
|
2392
2570
|
axis: 'x',
|
|
@@ -2398,28 +2576,28 @@ var TransformControlsManager = /*#__PURE__*/function () {
|
|
|
2398
2576
|
axis: 'z',
|
|
2399
2577
|
delta: deltaZ
|
|
2400
2578
|
}];
|
|
2401
|
-
|
|
2579
|
+
_i3 = 0, _axes2 = axes;
|
|
2402
2580
|
case 1:
|
|
2403
|
-
if (!(
|
|
2404
|
-
|
|
2581
|
+
if (!(_i3 < _axes2.length)) {
|
|
2582
|
+
_context8.n = 3;
|
|
2405
2583
|
break;
|
|
2406
2584
|
}
|
|
2407
|
-
_axes2$_i = _axes2[
|
|
2585
|
+
_axes2$_i = _axes2[_i3], axis = _axes2$_i.axis, delta = _axes2$_i.delta;
|
|
2408
2586
|
if (!(Math.abs(delta) > threshold)) {
|
|
2409
|
-
|
|
2587
|
+
_context8.n = 2;
|
|
2410
2588
|
break;
|
|
2411
2589
|
}
|
|
2412
2590
|
translateFn(objectId, axis, delta);
|
|
2413
|
-
|
|
2591
|
+
_context8.n = 2;
|
|
2414
2592
|
return throttleDelay(axisThrottle);
|
|
2415
2593
|
case 2:
|
|
2416
|
-
|
|
2417
|
-
|
|
2594
|
+
_i3++;
|
|
2595
|
+
_context8.n = 1;
|
|
2418
2596
|
break;
|
|
2419
2597
|
case 3:
|
|
2420
|
-
return
|
|
2598
|
+
return _context8.a(2);
|
|
2421
2599
|
}
|
|
2422
|
-
},
|
|
2600
|
+
}, _callee8);
|
|
2423
2601
|
}));
|
|
2424
2602
|
function _translateObjectOnAxes(_x19, _x20, _x21, _x22, _x23, _x24, _x25, _x26) {
|
|
2425
2603
|
return _translateObjectOnAxes2.apply(this, arguments);
|
|
@@ -55,7 +55,9 @@ var PathfindingManager = /*#__PURE__*/function (_BaseDisposable) {
|
|
|
55
55
|
size: 0.5,
|
|
56
56
|
safetyMargin: 0,
|
|
57
57
|
minSegmentLength: 0.5,
|
|
58
|
-
timeout: 1000
|
|
58
|
+
timeout: 1000,
|
|
59
|
+
groundZ: 0,
|
|
60
|
+
minPathElevation: 0.1
|
|
59
61
|
},
|
|
60
62
|
connectorBBoxSize: 0.1 // Default size for position-based connectors (Phase 2 Refactoring)
|
|
61
63
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@2112-lab/central-plant",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.52",
|
|
4
4
|
"description": "Utility modules for the Central Plant Application",
|
|
5
5
|
"main": "dist/bundle/index.js",
|
|
6
6
|
"module": "dist/esm/src/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"author": "CentralPlant Team",
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@2112-lab/pathfinder": "
|
|
34
|
+
"@2112-lab/pathfinder": "file:../pathfinder",
|
|
35
35
|
"stats.js": "^0.17.0",
|
|
36
36
|
"three": "^0.177.0"
|
|
37
37
|
},
|