@2112-lab/central-plant 0.3.33 → 0.3.35

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.
@@ -439,6 +439,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
439
439
  // Detect pointerdown on an IO device mesh and convert a drag gesture into
440
440
  // state changes. Up/right = positive direction, down/left = negative.
441
441
  this.eventHandlers.pointerdown = function (event) {
442
+ var _ioDeviceObject$userD, _this4$sceneViewer;
442
443
  if (_this4.transformState.isTransforming) return;
443
444
  if (!_this4.callbacks.onIODeviceDrag) return;
444
445
  _this4._calculateMousePosition(event, mouse);
@@ -451,14 +452,14 @@ var TransformControlsManager = /*#__PURE__*/function () {
451
452
  try {
452
453
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
453
454
  var hit = _step.value;
454
- var obj = hit.object;
455
- while (obj) {
456
- var _obj$userData;
457
- if (((_obj$userData = obj.userData) === null || _obj$userData === void 0 ? void 0 : _obj$userData.objectType) === 'io-device') {
458
- ioDeviceObject = obj;
455
+ var _obj = hit.object;
456
+ while (_obj) {
457
+ var _obj$userData2;
458
+ if (((_obj$userData2 = _obj.userData) === null || _obj$userData2 === void 0 ? void 0 : _obj$userData2.objectType) === 'io-device') {
459
+ ioDeviceObject = _obj;
459
460
  break;
460
461
  }
461
- obj = obj.parent;
462
+ _obj = _obj.parent;
462
463
  }
463
464
  if (ioDeviceObject) {
464
465
  hitMesh = hit.object;
@@ -472,6 +473,27 @@ var TransformControlsManager = /*#__PURE__*/function () {
472
473
  }
473
474
  if (!ioDeviceObject) return;
474
475
 
476
+ // Only allow drag if the clicked mesh is animated (not the parent io-device group)
477
+ // Resolve parentUuid and attachmentId
478
+ var parentUuid = null;
479
+ var obj = ioDeviceObject.parent;
480
+ while (obj) {
481
+ var _obj$userData;
482
+ if (((_obj$userData = obj.userData) === null || _obj$userData === void 0 ? void 0 : _obj$userData.objectType) === 'component') {
483
+ parentUuid = obj.userData.originalUuid || obj.uuid;
484
+ break;
485
+ }
486
+ obj = obj.parent;
487
+ }
488
+ var attachmentId = (_ioDeviceObject$userD = ioDeviceObject.userData) === null || _ioDeviceObject$userD === void 0 ? void 0 : _ioDeviceObject$userD.attachmentId;
489
+ if (parentUuid && attachmentId && (_this4$sceneViewer = _this4.sceneViewer) !== null && _this4$sceneViewer !== void 0 && (_this4$sceneViewer = _this4$sceneViewer.managers) !== null && _this4$sceneViewer !== void 0 && _this4$sceneViewer.ioBehaviorManager) {
490
+ var animatedMeshes = _this4.sceneViewer.managers.ioBehaviorManager.getAnimatedMeshes(parentUuid, attachmentId);
491
+ // If there are animated meshes registered, only allow drag if hitMesh is one of them
492
+ if (animatedMeshes.length > 0 && !animatedMeshes.includes(hitMesh)) {
493
+ return; // Clicked on non-draggable part of the io-device
494
+ }
495
+ }
496
+
475
497
  // Begin session
476
498
  _this4._ioDragMesh = ioDeviceObject;
477
499
  _this4._ioDragStartX = event.clientX;
@@ -534,8 +556,8 @@ var TransformControlsManager = /*#__PURE__*/function () {
534
556
  var hit = _step2.value;
535
557
  var obj = hit.object;
536
558
  while (obj) {
537
- var _obj$userData2;
538
- if (((_obj$userData2 = obj.userData) === null || _obj$userData2 === void 0 ? void 0 : _obj$userData2.objectType) === 'io-device') {
559
+ var _obj$userData3;
560
+ if (((_obj$userData3 = obj.userData) === null || _obj$userData3 === void 0 ? void 0 : _obj$userData3.objectType) === 'io-device') {
539
561
  _this4.callbacks.onIODeviceClick(obj);
540
562
  return;
541
563
  }
@@ -2195,8 +2217,8 @@ var TransformControlsManager = /*#__PURE__*/function () {
2195
2217
  key: "_updateSegmentReference",
2196
2218
  value: function _updateSegmentReference(oldSegment, newSegment, index) {
2197
2219
  var selectedIndex = this.selectedObjects.findIndex(function (obj) {
2198
- var _obj$userData3;
2199
- return obj.uuid === oldSegment.uuid || ((_obj$userData3 = obj.userData) === null || _obj$userData3 === void 0 ? void 0 : _obj$userData3.originalUuid) === oldSegment.uuid;
2220
+ var _obj$userData4;
2221
+ return obj.uuid === oldSegment.uuid || ((_obj$userData4 = obj.userData) === null || _obj$userData4 === void 0 ? void 0 : _obj$userData4.originalUuid) === oldSegment.uuid;
2200
2222
  });
2201
2223
  if (selectedIndex !== -1 && newSegment) {
2202
2224
  // Clear bounding box cache
@@ -90,7 +90,7 @@ var ModelManager = /*#__PURE__*/function () {
90
90
 
91
91
  // Attach IO devices for smart components (import flow)
92
92
  if (!(componentData.isSmart && componentData.attachedDevices)) {
93
- _context2.n = 8;
93
+ _context2.n = 9;
94
94
  break;
95
95
  }
96
96
  _context2.n = 4;
@@ -99,7 +99,7 @@ var ModelManager = /*#__PURE__*/function () {
99
99
  // Register behavior configs for each attached device
100
100
  ioBehavMgr = (_this$sceneViewer = this.sceneViewer) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.managers) === null || _this$sceneViewer === void 0 ? void 0 : _this$sceneViewer.ioBehaviorManager;
101
101
  if (!ioBehavMgr) {
102
- _context2.n = 8;
102
+ _context2.n = 9;
103
103
  break;
104
104
  }
105
105
  _loop = /*#__PURE__*/_regenerator().m(function _loop() {
@@ -148,6 +148,12 @@ var ModelManager = /*#__PURE__*/function () {
148
148
  _context2.n = 5;
149
149
  break;
150
150
  case 8:
151
+ // Register component-level behaviors (intra-component io-device linking)
152
+ if (componentData.behaviors && componentData.behaviors.length > 0) {
153
+ console.log("[ModelManager] Registering ".concat(componentData.behaviors.length, " component-level behavior(s) for ").concat(originalProps.uuid));
154
+ ioBehavMgr.registerComponentBehaviors(originalProps.uuid, componentData.behaviors);
155
+ }
156
+ case 9:
151
157
  // Replace mesh in scene
152
158
  this._replaceMeshInScene(targetMesh, libraryModel, originalProps.parent, component);
153
159
 
@@ -166,13 +172,13 @@ var ModelManager = /*#__PURE__*/function () {
166
172
  }
167
173
  console.log("\uD83C\uDF89 ".concat((_jsonEntry$userData3 = jsonEntry.userData) === null || _jsonEntry$userData3 === void 0 ? void 0 : _jsonEntry$userData3.libraryId, " GLB model successfully rendered in scene"));
168
174
  return _context2.a(2, libraryModel);
169
- case 9:
170
- _context2.p = 9;
175
+ case 10:
176
+ _context2.p = 10;
171
177
  _t = _context2.v;
172
178
  console.error("\u274C Error loading ".concat((_jsonEntry$userData4 = jsonEntry.userData) === null || _jsonEntry$userData4 === void 0 ? void 0 : _jsonEntry$userData4.libraryId, " GLB model:"), _t);
173
179
  return _context2.a(2, targetMesh);
174
180
  }
175
- }, _callee, this, [[1, 9]]);
181
+ }, _callee, this, [[1, 10]]);
176
182
  }));
177
183
  function loadLibraryModel(_x, _x2, _x3) {
178
184
  return _loadLibraryModel.apply(this, arguments);
@@ -768,7 +768,7 @@ var SceneOperationsManager = /*#__PURE__*/function () {
768
768
  key: "_prepareSceneForLoading",
769
769
  value: (function () {
770
770
  var _prepareSceneForLoading2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(data, isImported) {
771
- var component, _component$managers;
771
+ var component, _component$managers, _component$managers2, ioBehavMgr;
772
772
  return _regenerator().w(function (_context5) {
773
773
  while (1) switch (_context5.n) {
774
774
  case 0:
@@ -785,6 +785,16 @@ var SceneOperationsManager = /*#__PURE__*/function () {
785
785
  if ((_component$managers = component.managers) !== null && _component$managers !== void 0 && (_component$managers = _component$managers.pathfinding) !== null && _component$managers !== void 0 && _component$managers.snapshotManager) {
786
786
  component.managers.pathfinding.snapshotManager.reset();
787
787
  }
788
+
789
+ // Register behaviors with IoBehaviorManager
790
+ ioBehavMgr = (_component$managers2 = component.managers) === null || _component$managers2 === void 0 ? void 0 : _component$managers2.ioBehaviorManager;
791
+ if (ioBehavMgr && data.behaviors) {
792
+ console.log("[Behavior] Registering ".concat(data.behaviors.length, " behavior(s) from scene data"));
793
+ ioBehavMgr.setCrossComponentBehaviors(data.behaviors);
794
+ } else if (ioBehavMgr) {
795
+ console.log('[Behavior] No behaviors in scene data, clearing cross-component behaviors');
796
+ ioBehavMgr.setCrossComponentBehaviors([]);
797
+ }
788
798
  case 2:
789
799
  // Mark all imported objects as declared in the scene data
790
800
  // This ensures manual segment connectors and other objects are recognized as declared
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2112-lab/central-plant",
3
- "version": "0.3.33",
3
+ "version": "0.3.35",
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",