@2112-lab/central-plant 0.3.17 → 0.3.19

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.
@@ -1,5 +1,6 @@
1
1
  import { createClass as _createClass, createForOfIteratorHelper as _createForOfIteratorHelper, construct as _construct, toConsumableArray as _toConsumableArray, slicedToArray as _slicedToArray, classCallCheck as _classCallCheck } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import * as THREE from 'three';
3
+ import { updateDirectionAfterRotation } from '../../helpers/directionUtils.js';
3
4
 
4
5
  var TransformOperationsManager = /*#__PURE__*/function () {
5
6
  /**
@@ -692,16 +693,9 @@ var TransformOperationsManager = /*#__PURE__*/function () {
692
693
  if (!component || degrees % 90 !== 0) {
693
694
  return;
694
695
  }
695
- console.log("\uD83D\uDD04 Updating connector directions after ".concat(degrees, "\xB0 rotation around ").concat(axis, " axis"));
696
696
 
697
- // Simple approach: just log that directions may need manual verification
698
- // In most cases, Three.js world matrices handle the actual positioning correctly
699
- component.traverse(function (child) {
700
- var _child$userData5, _child$userData6;
701
- if (((_child$userData5 = child.userData) === null || _child$userData5 === void 0 ? void 0 : _child$userData5.objectType) === 'connector' && (_child$userData6 = child.userData) !== null && _child$userData6 !== void 0 && _child$userData6.direction) {
702
- console.log("\uD83D\uDCCD Connector ".concat(child.uuid, " direction may need verification after rotation"));
703
- }
704
- });
697
+ // Use the direction utility to update direction vectors on Three.js connector objects
698
+ updateDirectionAfterRotation(component, axis, degrees);
705
699
  }
706
700
 
707
701
  /**
@@ -855,9 +849,9 @@ var TransformOperationsManager = /*#__PURE__*/function () {
855
849
 
856
850
  // Traverse scene to find all connectors
857
851
  this.sceneViewer.scene.traverse(function (child) {
858
- var _child$userData7;
852
+ var _child$userData5;
859
853
  // Check if this is a connector (component connector or manual segment connector)
860
- if (((_child$userData7 = child.userData) === null || _child$userData7 === void 0 ? void 0 : _child$userData7.objectType) === 'connector') {
854
+ if (((_child$userData5 = child.userData) === null || _child$userData5 === void 0 ? void 0 : _child$userData5.objectType) === 'connector') {
861
855
  // Get world position of connector
862
856
  var connectorWorldPos = new THREE.Vector3();
863
857
  child.getWorldPosition(connectorWorldPos);
@@ -908,8 +902,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
908
902
  // Find all child connectors of the segment in the Three.js scene
909
903
  var connectors = [];
910
904
  segment.traverse(function (child) {
911
- var _child$userData8;
912
- if (((_child$userData8 = child.userData) === null || _child$userData8 === void 0 ? void 0 : _child$userData8.objectType) === 'segment-connector') {
905
+ var _child$userData6;
906
+ if (((_child$userData6 = child.userData) === null || _child$userData6 === void 0 ? void 0 : _child$userData6.objectType) === 'segment-connector') {
913
907
  connectors.push(child);
914
908
  }
915
909
  });
@@ -973,17 +967,17 @@ var TransformOperationsManager = /*#__PURE__*/function () {
973
967
 
974
968
  // Check all segments in the scene
975
969
  this.sceneViewer.scene.traverse(function (child) {
976
- var _child$userData9, _child$userData0;
970
+ var _child$userData7, _child$userData8;
977
971
  // Skip the segment itself
978
972
  if (child.uuid === segment.uuid) {
979
973
  return;
980
974
  }
981
975
 
982
976
  // Only check computed segments in the scene
983
- if (((_child$userData9 = child.userData) === null || _child$userData9 === void 0 ? void 0 : _child$userData9.objectType) === 'segment' && (_child$userData0 = child.userData) !== null && _child$userData0 !== void 0 && _child$userData0.isDeclared) {
984
- var _segment$userData6, _child$userData1, _segment$userData7, _child$userData10;
977
+ if (((_child$userData7 = child.userData) === null || _child$userData7 === void 0 ? void 0 : _child$userData7.objectType) === 'segment' && (_child$userData8 = child.userData) !== null && _child$userData8 !== void 0 && _child$userData8.isDeclared) {
978
+ var _segment$userData6, _child$userData9, _segment$userData7, _child$userData0;
985
979
  // Check if segments are part of the same connection path
986
- var sameConnection = ((_segment$userData6 = segment.userData) === null || _segment$userData6 === void 0 ? void 0 : _segment$userData6.pathFrom) === ((_child$userData1 = child.userData) === null || _child$userData1 === void 0 ? void 0 : _child$userData1.pathFrom) && ((_segment$userData7 = segment.userData) === null || _segment$userData7 === void 0 ? void 0 : _segment$userData7.pathTo) === ((_child$userData10 = child.userData) === null || _child$userData10 === void 0 ? void 0 : _child$userData10.pathTo);
980
+ var sameConnection = ((_segment$userData6 = segment.userData) === null || _segment$userData6 === void 0 ? void 0 : _segment$userData6.pathFrom) === ((_child$userData9 = child.userData) === null || _child$userData9 === void 0 ? void 0 : _child$userData9.pathFrom) && ((_segment$userData7 = segment.userData) === null || _segment$userData7 === void 0 ? void 0 : _segment$userData7.pathTo) === ((_child$userData0 = child.userData) === null || _child$userData0 === void 0 ? void 0 : _child$userData0.pathTo);
987
981
 
988
982
  // Get endpoints of the other segment (use stored endpoints if available)
989
983
  var otherEndpoints = _this2.getSegmentEndpoints(child);
@@ -1204,11 +1198,11 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1204
1198
 
1205
1199
  // Traverse scene to find all component connectors
1206
1200
  this.sceneViewer.scene.traverse(function (child) {
1207
- var _child$userData11;
1201
+ var _child$userData1;
1208
1202
  if (collision) return; // Stop if collision already found
1209
1203
 
1210
1204
  // Check if this is a component connector (not a segment-connector)
1211
- if (((_child$userData11 = child.userData) === null || _child$userData11 === void 0 ? void 0 : _child$userData11.objectType) === 'connector') {
1205
+ if (((_child$userData1 = child.userData) === null || _child$userData1 === void 0 ? void 0 : _child$userData1.objectType) === 'connector') {
1212
1206
  var _segment$userData10, _segment$userData11;
1213
1207
  // Skip connectors that are connected to this segment (pathFrom or pathTo)
1214
1208
  var segmentPathFrom = (_segment$userData10 = segment.userData) === null || _segment$userData10 === void 0 ? void 0 : _segment$userData10.pathFrom;
@@ -1322,9 +1316,9 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1322
1316
 
1323
1317
  // Traverse scene to find all component connectors
1324
1318
  this.sceneViewer.scene.traverse(function (child) {
1325
- var _child$userData12;
1319
+ var _child$userData10;
1326
1320
  // Check if this is a component connector (not a segment-connector)
1327
- if (((_child$userData12 = child.userData) === null || _child$userData12 === void 0 ? void 0 : _child$userData12.objectType) === 'connector') {
1321
+ if (((_child$userData10 = child.userData) === null || _child$userData10 === void 0 ? void 0 : _child$userData10.objectType) === 'connector') {
1328
1322
  // Get world position of connector
1329
1323
  var connectorWorldPos = new THREE.Vector3();
1330
1324
  child.getWorldPosition(connectorWorldPos);
@@ -1381,11 +1375,11 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1381
1375
 
1382
1376
  // Traverse scene to find all components
1383
1377
  this.sceneViewer.scene.traverse(function (child) {
1384
- var _child$userData13, _child$userData14;
1378
+ var _child$userData11, _child$userData12;
1385
1379
  if (collision) return; // Stop if collision already found
1386
1380
 
1387
1381
  // Check if this is a component (equipment)
1388
- if (((_child$userData13 = child.userData) === null || _child$userData13 === void 0 ? void 0 : _child$userData13.objectType) === 'component' && (_child$userData14 = child.userData) !== null && _child$userData14 !== void 0 && _child$userData14.libraryId) {
1382
+ if (((_child$userData11 = child.userData) === null || _child$userData11 === void 0 ? void 0 : _child$userData11.objectType) === 'component' && (_child$userData12 = child.userData) !== null && _child$userData12 !== void 0 && _child$userData12.libraryId) {
1389
1383
  // Create bounding box for the component
1390
1384
  var componentBBox = new THREE.Box3().setFromObject(child);
1391
1385
 
@@ -1424,11 +1418,11 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1424
1418
 
1425
1419
  // Traverse scene to find all manual segments (isDeclared === true)
1426
1420
  this.sceneViewer.scene.traverse(function (child) {
1427
- var _child$userData15, _child$userData16;
1421
+ var _child$userData13, _child$userData14;
1428
1422
  if (collision) return; // Stop if collision already found
1429
1423
 
1430
1424
  // Only check manual segments (isDeclared === true)
1431
- if (((_child$userData15 = child.userData) === null || _child$userData15 === void 0 ? void 0 : _child$userData15.objectType) === 'segment' && ((_child$userData16 = child.userData) === null || _child$userData16 === void 0 ? void 0 : _child$userData16.isDeclared) === true) {
1425
+ if (((_child$userData13 = child.userData) === null || _child$userData13 === void 0 ? void 0 : _child$userData13.objectType) === 'segment' && ((_child$userData14 = child.userData) === null || _child$userData14 === void 0 ? void 0 : _child$userData14.isDeclared) === true) {
1432
1426
  // Get segment endpoints
1433
1427
  var segmentEndpoints = _this3.getSegmentEndpoints(child);
1434
1428
 
@@ -1517,11 +1511,11 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1517
1511
 
1518
1512
  // Traverse scene to find all manual segments (isDeclared === true)
1519
1513
  this.sceneViewer.scene.traverse(function (child) {
1520
- var _child$userData17, _child$userData18;
1514
+ var _child$userData15, _child$userData16;
1521
1515
  if (collision) return; // Stop if collision already found
1522
1516
 
1523
1517
  // Only check manual segments (isDeclared === true)
1524
- if (((_child$userData17 = child.userData) === null || _child$userData17 === void 0 ? void 0 : _child$userData17.objectType) === 'segment' && ((_child$userData18 = child.userData) === null || _child$userData18 === void 0 ? void 0 : _child$userData18.isDeclared) === true) {
1518
+ if (((_child$userData15 = child.userData) === null || _child$userData15 === void 0 ? void 0 : _child$userData15.objectType) === 'segment' && ((_child$userData16 = child.userData) === null || _child$userData16 === void 0 ? void 0 : _child$userData16.isDeclared) === true) {
1525
1519
  // Get segment endpoints
1526
1520
  var segmentEndpoints = _this4.getSegmentEndpoints(child);
1527
1521
 
@@ -1578,11 +1572,11 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1578
1572
 
1579
1573
  // Traverse scene to find all components
1580
1574
  this.sceneViewer.scene.traverse(function (child) {
1581
- var _child$userData19, _child$userData20;
1575
+ var _child$userData17, _child$userData18;
1582
1576
  if (collision) return; // Stop if collision already found
1583
1577
 
1584
1578
  // Check if this is a component (equipment)
1585
- if (((_child$userData19 = child.userData) === null || _child$userData19 === void 0 ? void 0 : _child$userData19.objectType) === 'component' && (_child$userData20 = child.userData) !== null && _child$userData20 !== void 0 && _child$userData20.libraryId) {
1579
+ if (((_child$userData17 = child.userData) === null || _child$userData17 === void 0 ? void 0 : _child$userData17.objectType) === 'component' && (_child$userData18 = child.userData) !== null && _child$userData18 !== void 0 && _child$userData18.libraryId) {
1586
1580
  // Try to get worldBoundingBox from userData first (most up-to-date)
1587
1581
  var bbox = null;
1588
1582
  if (child.userData.worldBoundingBox) {
@@ -1727,8 +1721,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1727
1721
  // Get the moved segment's connectors
1728
1722
  var movedConnectors = [];
1729
1723
  movedSegment.traverse(function (child) {
1730
- var _child$userData21;
1731
- if (((_child$userData21 = child.userData) === null || _child$userData21 === void 0 ? void 0 : _child$userData21.objectType) === 'segment-connector') {
1724
+ var _child$userData19;
1725
+ if (((_child$userData19 = child.userData) === null || _child$userData19 === void 0 ? void 0 : _child$userData19.objectType) === 'segment-connector') {
1732
1726
  movedConnectors.push(child);
1733
1727
  }
1734
1728
  });
@@ -1798,8 +1792,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1798
1792
  // Get all connectors of the adjacent segment
1799
1793
  var adjacentConnectors = [];
1800
1794
  adjacentSegment.traverse(function (child) {
1801
- var _child$userData22;
1802
- if (((_child$userData22 = child.userData) === null || _child$userData22 === void 0 ? void 0 : _child$userData22.objectType) === 'segment-connector') {
1795
+ var _child$userData20;
1796
+ if (((_child$userData20 = child.userData) === null || _child$userData20 === void 0 ? void 0 : _child$userData20.objectType) === 'segment-connector') {
1803
1797
  adjacentConnectors.push(child);
1804
1798
  }
1805
1799
  });
@@ -1922,8 +1916,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1922
1916
  // Also update child connectors' positions if they exist
1923
1917
  if (sceneDataComponent.children) {
1924
1918
  sceneDataComponent.children.forEach(function (child) {
1925
- var _child$userData23;
1926
- if (((_child$userData23 = child.userData) === null || _child$userData23 === void 0 ? void 0 : _child$userData23.objectType) === 'connector') {
1919
+ var _child$userData21;
1920
+ if (((_child$userData21 = child.userData) === null || _child$userData21 === void 0 ? void 0 : _child$userData21.objectType) === 'connector') {
1927
1921
  // Find the actual connector object in the scene
1928
1922
  var connectorObj = component.children.find(function (c) {
1929
1923
  var _c$userData;
@@ -1985,14 +1979,15 @@ var TransformOperationsManager = /*#__PURE__*/function () {
1985
1979
  // Also update child connectors' positions if they exist (rotation moves them in world space)
1986
1980
  if (sceneDataComponent.children) {
1987
1981
  sceneDataComponent.children.forEach(function (child) {
1988
- var _child$userData24;
1989
- if (((_child$userData24 = child.userData) === null || _child$userData24 === void 0 ? void 0 : _child$userData24.objectType) === 'connector') {
1982
+ var _child$userData22;
1983
+ if (((_child$userData22 = child.userData) === null || _child$userData22 === void 0 ? void 0 : _child$userData22.objectType) === 'connector') {
1990
1984
  // Find the actual connector object in the scene
1991
1985
  var connectorObj = component.children.find(function (c) {
1992
1986
  var _c$userData2;
1993
1987
  return c.uuid === child.uuid || ((_c$userData2 = c.userData) === null || _c$userData2 === void 0 ? void 0 : _c$userData2.originalUuid) === child.uuid;
1994
1988
  });
1995
1989
  if (connectorObj) {
1990
+ var _connectorObj$userDat;
1996
1991
  // Get world position of connector
1997
1992
  var worldPos = new THREE.Vector3();
1998
1993
  connectorObj.getWorldPosition(worldPos);
@@ -2003,6 +1998,12 @@ var TransformOperationsManager = /*#__PURE__*/function () {
2003
1998
  }
2004
1999
  child.userData.position = [cleanValue(worldPos.x), cleanValue(worldPos.y), cleanValue(worldPos.z)];
2005
2000
  console.log(" \u21B3 Updated child connector ".concat(child.uuid, " position to [").concat(child.userData.position.join(', '), "]"));
2001
+
2002
+ // Update connector's direction in scene data from the Three.js object
2003
+ if ((_connectorObj$userDat = connectorObj.userData) !== null && _connectorObj$userDat !== void 0 && _connectorObj$userDat.direction && Array.isArray(connectorObj.userData.direction)) {
2004
+ child.userData.direction = _toConsumableArray(connectorObj.userData.direction);
2005
+ console.log(" \u21B3 Updated child connector ".concat(child.uuid, " direction to [").concat(child.userData.direction.join(', '), "]"));
2006
+ }
2006
2007
  }
2007
2008
  }
2008
2009
  });
@@ -2315,8 +2316,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
2315
2316
  // Check if either external connector belongs to the active segment
2316
2317
  var activeSegmentConnectors = [];
2317
2318
  activeSegment.traverse(function (child) {
2318
- var _child$userData25;
2319
- if (((_child$userData25 = child.userData) === null || _child$userData25 === void 0 ? void 0 : _child$userData25.objectType) === 'segment-connector') {
2319
+ var _child$userData23;
2320
+ if (((_child$userData23 = child.userData) === null || _child$userData23 === void 0 ? void 0 : _child$userData23.objectType) === 'segment-connector') {
2320
2321
  activeSegmentConnectors.push(child.uuid);
2321
2322
  }
2322
2323
  });
@@ -2364,8 +2365,8 @@ var TransformOperationsManager = /*#__PURE__*/function () {
2364
2365
  // Get all connectors of the active segment
2365
2366
  var activeConnectors = [];
2366
2367
  activeSegment.traverse(function (child) {
2367
- var _child$userData26;
2368
- if (((_child$userData26 = child.userData) === null || _child$userData26 === void 0 ? void 0 : _child$userData26.objectType) === 'segment-connector') {
2368
+ var _child$userData24;
2369
+ if (((_child$userData24 = child.userData) === null || _child$userData24 === void 0 ? void 0 : _child$userData24.objectType) === 'segment-connector') {
2369
2370
  activeConnectors.push(child);
2370
2371
  }
2371
2372
  });
@@ -1,4 +1,4 @@
1
- import { createClass as _createClass, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray, classCallCheck as _classCallCheck, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, createForOfIteratorHelper as _createForOfIteratorHelper, typeof as _typeof } from '../../../_virtual/_rollupPluginBabelHelpers.js';
1
+ import { createClass as _createClass, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray, typeof as _typeof, classCallCheck as _classCallCheck, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, createForOfIteratorHelper as _createForOfIteratorHelper } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import * as THREE from 'three';
3
3
  import { attachIODevicesToComponent } from '../../utils/ioDeviceUtils.js';
4
4
  import modelPreloader from '../../rendering/modelPreloader.js';
@@ -147,15 +147,23 @@ var ModelManager = /*#__PURE__*/function () {
147
147
  if (child.userData) {
148
148
  clonedConnector.userData = _objectSpread2({}, child.userData);
149
149
 
150
- // Deep copy critical data
150
+ // Deep copy critical data - handle both array [x,y,z] and object {x,y,z} formats
151
151
  if (child.userData.worldBoundingBox) {
152
+ var wbb = child.userData.worldBoundingBox;
152
153
  clonedConnector.userData.worldBoundingBox = {
153
- min: _toConsumableArray(child.userData.worldBoundingBox.min),
154
- max: _toConsumableArray(child.userData.worldBoundingBox.max)
154
+ min: Array.isArray(wbb.min) ? _toConsumableArray(wbb.min) : _objectSpread2({}, wbb.min),
155
+ max: Array.isArray(wbb.max) ? _toConsumableArray(wbb.max) : _objectSpread2({}, wbb.max)
155
156
  };
156
157
  }
157
158
  if (child.userData.direction) {
158
- clonedConnector.userData.direction = _toConsumableArray(child.userData.direction);
159
+ // Handle both array [x,y,z] and object {x,y,z} formats
160
+ if (Array.isArray(child.userData.direction)) {
161
+ clonedConnector.userData.direction = _toConsumableArray(child.userData.direction);
162
+ } else if (_typeof(child.userData.direction) === 'object') {
163
+ clonedConnector.userData.direction = _objectSpread2({}, child.userData.direction);
164
+ } else {
165
+ clonedConnector.userData.direction = child.userData.direction;
166
+ }
159
167
  }
160
168
 
161
169
  // Set originalUuid to match the actual uuid (maintains consistency)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2112-lab/central-plant",
3
- "version": "0.3.17",
3
+ "version": "0.3.19",
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",