@2112-lab/central-plant 0.3.28 → 0.3.30

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.
@@ -469,6 +469,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
469
469
  raycaster.setFromCamera(mouse, _this4.camera);
470
470
  var allIntersects = raycaster.intersectObjects(_this4.scene.children, true);
471
471
  var ioDeviceObject = null;
472
+ var hitMesh = null;
472
473
  var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelper(allIntersects),
473
474
  _step;
474
475
  try {
@@ -483,7 +484,10 @@ var TransformControlsManager = /*#__PURE__*/function () {
483
484
  }
484
485
  obj = obj.parent;
485
486
  }
486
- if (ioDeviceObject) break;
487
+ if (ioDeviceObject) {
488
+ hitMesh = hit.object;
489
+ break;
490
+ }
487
491
  }
488
492
  } catch (err) {
489
493
  _iterator.e(err);
@@ -498,7 +502,7 @@ var TransformControlsManager = /*#__PURE__*/function () {
498
502
  _this4._ioDragStartY = event.clientY;
499
503
  _this4._ioDragMoved = false;
500
504
  if (_this4.orbitControls) _this4.orbitControls.enabled = false;
501
- _this4.callbacks.onIODeviceDrag(ioDeviceObject, 0, true);
505
+ _this4.callbacks.onIODeviceDrag(ioDeviceObject, 0, true, hitMesh);
502
506
  var onMove = function onMove(e) {
503
507
  var dx = e.clientX - _this4._ioDragStartX;
504
508
  var dy = e.clientY - _this4._ioDragStartY;
@@ -163,7 +163,7 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
163
163
  var currentVal = (_ref = storedVal !== null && storedVal !== void 0 ? storedVal : binaryState.defaultValue) !== null && _ref !== void 0 ? _ref : false;
164
164
  var newVal = !Boolean(currentVal);
165
165
  this._stateAdapter.setState(scopedAttachmentId, dpId, newVal);
166
- (_this$sceneViewer = this.sceneViewer) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.managers) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.ioAnimationManager) === null || _this$sceneViewer === void 0 || _this$sceneViewer.triggerState(attachmentId, dpId, newVal, parentUuid);
166
+ (_this$sceneViewer = this.sceneViewer) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.managers) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.ioBehaviorManager) === null || _this$sceneViewer === void 0 || _this$sceneViewer.triggerState(attachmentId, dpId, newVal, parentUuid);
167
167
  console.log("\uD83D\uDD04 [IODevice] Toggled ".concat(scopedAttachmentId, ".").concat(dpId, ": ").concat(currentVal, " \u2192 ").concat(newVal));
168
168
  }
169
169
 
@@ -178,7 +178,7 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
178
178
  */
179
179
  }, {
180
180
  key: "startIODeviceDrag",
181
- value: function startIODeviceDrag(ioDeviceObject) {
181
+ value: function startIODeviceDrag(ioDeviceObject, hitMesh) {
182
182
  var _this$sceneViewer2,
183
183
  _this2 = this;
184
184
  if (!ioDeviceObject || !this._stateAdapter) return;
@@ -196,8 +196,8 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
196
196
  obj = obj.parent;
197
197
  }
198
198
  var scopedAttachmentId = this._getScopedAttachmentKey(attachmentId, parentUuid);
199
- var ioAnimMgr = (_this$sceneViewer2 = this.sceneViewer) === null || _this$sceneViewer2 === void 0 || (_this$sceneViewer2 = _this$sceneViewer2.managers) === null || _this$sceneViewer2 === void 0 ? void 0 : _this$sceneViewer2.ioAnimationManager;
200
- var dataPoints = ((ioAnimMgr === null || ioAnimMgr === void 0 ? void 0 : ioAnimMgr.getAnimationDataPoints(parentUuid, attachmentId)) || []).concat((ud === null || ud === void 0 ? void 0 : ud.dataPoints) || [])
199
+ var ioBehavMgr = (_this$sceneViewer2 = this.sceneViewer) === null || _this$sceneViewer2 === void 0 || (_this$sceneViewer2 = _this$sceneViewer2.managers) === null || _this$sceneViewer2 === void 0 ? void 0 : _this$sceneViewer2.ioBehaviorManager;
200
+ var dataPoints = ((ioBehavMgr === null || ioBehavMgr === void 0 ? void 0 : ioBehavMgr.getAnimationDataPoints(parentUuid, attachmentId, hitMesh)) || []).concat((ud === null || ud === void 0 ? void 0 : ud.dataPoints) || [])
201
201
  // deduplicate by id
202
202
  .filter(function (dp, i, arr) {
203
203
  return arr.findIndex(function (d) {
@@ -326,7 +326,7 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
326
326
  dp = _ref2.dp;
327
327
  var dpId = dp.id;
328
328
  (_this$_stateAdapter = this._stateAdapter) === null || _this$_stateAdapter === void 0 || _this$_stateAdapter.setState(scopedAttachmentId, dpId, newVal);
329
- (_this$sceneViewer3 = this.sceneViewer) === null || _this$sceneViewer3 === void 0 || (_this$sceneViewer3 = _this$sceneViewer3.managers) === null || _this$sceneViewer3 === void 0 || (_this$sceneViewer3 = _this$sceneViewer3.ioAnimationManager) === null || _this$sceneViewer3 === void 0 || _this$sceneViewer3.triggerState(attachmentId, dpId, newVal, parentUuid);
329
+ (_this$sceneViewer3 = this.sceneViewer) === null || _this$sceneViewer3 === void 0 || (_this$sceneViewer3 = _this$sceneViewer3.managers) === null || _this$sceneViewer3 === void 0 || (_this$sceneViewer3 = _this$sceneViewer3.ioBehaviorManager) === null || _this$sceneViewer3 === void 0 || _this$sceneViewer3.triggerState(attachmentId, dpId, newVal, parentUuid);
330
330
  }
331
331
 
332
332
  /**
@@ -451,11 +451,11 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
451
451
  var _this3$sceneViewer$ma, _this3$sceneViewer;
452
452
  var attachmentId = child.userData.attachmentId || '';
453
453
 
454
- // Use only data points from the animate window (animationConfig).
454
+ // Use only data points from the animate window (behaviorConfig).
455
455
  // The static ioConfig.states[] snapshot on userData is intentionally ignored.
456
- var dataPoints = (_this3$sceneViewer$ma = (_this3$sceneViewer = _this3.sceneViewer) === null || _this3$sceneViewer === void 0 || (_this3$sceneViewer = _this3$sceneViewer.managers) === null || _this3$sceneViewer === void 0 || (_this3$sceneViewer = _this3$sceneViewer.ioAnimationManager) === null || _this3$sceneViewer === void 0 ? void 0 : _this3$sceneViewer.getAnimationDataPoints(parentUuid, attachmentId)) !== null && _this3$sceneViewer$ma !== void 0 ? _this3$sceneViewer$ma : [];
456
+ var dataPoints = (_this3$sceneViewer$ma = (_this3$sceneViewer = _this3.sceneViewer) === null || _this3$sceneViewer === void 0 || (_this3$sceneViewer = _this3$sceneViewer.managers) === null || _this3$sceneViewer === void 0 || (_this3$sceneViewer = _this3$sceneViewer.ioBehaviorManager) === null || _this3$sceneViewer === void 0 ? void 0 : _this3$sceneViewer.getAnimationDataPoints(parentUuid, attachmentId)) !== null && _this3$sceneViewer$ma !== void 0 ? _this3$sceneViewer$ma : [];
457
457
 
458
- // When data points come from animationConfig they already carry direction:'input'.
458
+ // When data points come from behaviorConfig they already carry direction:'input'.
459
459
  // Pass null so _buildDataPointRow uses the per-dp direction instead of the
460
460
  // device-level ioDirection (which may be 'output' and would hide controls).
461
461
  var deviceDirection = dataPoints.length > 0 ? null : child.userData.ioDirection || 'output';
@@ -694,7 +694,7 @@ var ComponentTooltipManager = /*#__PURE__*/function (_BaseDisposable) {
694
694
  var _this5$_stateAdapter, _this5$selectedObject, _this5$sceneViewer;
695
695
  (_this5$_stateAdapter = _this5._stateAdapter) === null || _this5$_stateAdapter === void 0 || _this5$_stateAdapter.setState(scopedAttachmentId, dpId, newVal);
696
696
  var parentUuid = ((_this5$selectedObject = _this5.selectedObject) === null || _this5$selectedObject === void 0 ? void 0 : _this5$selectedObject.uuid) || null;
697
- (_this5$sceneViewer = _this5.sceneViewer) === null || _this5$sceneViewer === void 0 || (_this5$sceneViewer = _this5$sceneViewer.managers) === null || _this5$sceneViewer === void 0 || (_this5$sceneViewer = _this5$sceneViewer.ioAnimationManager) === null || _this5$sceneViewer === void 0 || _this5$sceneViewer.triggerState(originalAttachmentId || scopedAttachmentId, dpId, newVal, parentUuid);
697
+ (_this5$sceneViewer = _this5.sceneViewer) === null || _this5$sceneViewer === void 0 || (_this5$sceneViewer = _this5$sceneViewer.managers) === null || _this5$sceneViewer === void 0 || (_this5$sceneViewer = _this5$sceneViewer.ioBehaviorManager) === null || _this5$sceneViewer === void 0 || _this5$sceneViewer.triggerState(originalAttachmentId || scopedAttachmentId, dpId, newVal, parentUuid);
698
698
  });
699
699
  row.appendChild(ctrl);
700
700
  this._stateElements.set(key, {
@@ -77,7 +77,7 @@ var ModelManager = /*#__PURE__*/function () {
77
77
  key: "loadLibraryModel",
78
78
  value: function () {
79
79
  var _loadLibraryModel = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee(targetMesh, jsonEntry, componentData) {
80
- var component, _jsonEntry$userData, _jsonEntry$userData2, _jsonEntry$userData3, originalProps, connectorChildren, gltfScene, libraryModel, _this$sceneViewer, ioAnimMgr, _loop, _i, _Object$entries, warmFn, _jsonEntry$userData4, _t;
80
+ var component, _jsonEntry$userData, _jsonEntry$userData2, _jsonEntry$userData3, originalProps, connectorChildren, gltfScene, libraryModel, _this$sceneViewer, ioBehavMgr, _loop, _i, _Object$entries, warmFn, _jsonEntry$userData4, _t;
81
81
  return _rollupPluginBabelHelpers.regenerator().w(function (_context2) {
82
82
  while (1) switch (_context2.n) {
83
83
  case 0:
@@ -120,22 +120,22 @@ var ModelManager = /*#__PURE__*/function () {
120
120
  _context2.n = 4;
121
121
  return ioDeviceUtils.attachIODevicesToComponent(libraryModel, componentData, modelPreloader["default"], originalProps.uuid);
122
122
  case 4:
123
- // Register animation configs for each attached device
124
- ioAnimMgr = (_this$sceneViewer = this.sceneViewer) === null || _this$sceneViewer === void 0 || (_this$sceneViewer = _this$sceneViewer.managers) === null || _this$sceneViewer === void 0 ? void 0 : _this$sceneViewer.ioAnimationManager;
125
- if (!ioAnimMgr) {
123
+ // Register behavior configs for each attached device
124
+ 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;
125
+ if (!ioBehavMgr) {
126
126
  _context2.n = 8;
127
127
  break;
128
128
  }
129
129
  _loop = /*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _loop() {
130
- var _modelPreloader$compo, _deviceData$animation;
130
+ var _modelPreloader$compo, _deviceData$behaviorC;
131
131
  var _Object$entries$_i, attachmentId, attachment, deviceData, deviceRoot;
132
132
  return _rollupPluginBabelHelpers.regenerator().w(function (_context) {
133
133
  while (1) switch (_context.n) {
134
134
  case 0:
135
135
  _Object$entries$_i = _rollupPluginBabelHelpers.slicedToArray(_Object$entries[_i], 2), attachmentId = _Object$entries$_i[0], attachment = _Object$entries$_i[1];
136
136
  deviceData = (_modelPreloader$compo = modelPreloader["default"].componentDictionary) === null || _modelPreloader$compo === void 0 ? void 0 : _modelPreloader$compo[attachment.deviceId];
137
- console.log("[ModelManager] attachment \"".concat(attachmentId, "\" \u2192 deviceId \"").concat(attachment.deviceId, "\" \u2192 animationConfig:"), (_deviceData$animation = deviceData === null || deviceData === void 0 ? void 0 : deviceData.animationConfig) !== null && _deviceData$animation !== void 0 ? _deviceData$animation : 'NONE');
138
- if (deviceData !== null && deviceData !== void 0 && deviceData.animationConfig) {
137
+ console.log("[ModelManager] attachment \"".concat(attachmentId, "\" \u2192 deviceId \"").concat(attachment.deviceId, "\" \u2192 behaviorConfig:"), (_deviceData$behaviorC = deviceData === null || deviceData === void 0 ? void 0 : deviceData.behaviorConfig) !== null && _deviceData$behaviorC !== void 0 ? _deviceData$behaviorC : 'NONE');
138
+ if (deviceData !== null && deviceData !== void 0 && deviceData.behaviorConfig) {
139
139
  _context.n = 1;
140
140
  break;
141
141
  }
@@ -147,7 +147,7 @@ var ModelManager = /*#__PURE__*/function () {
147
147
  if (!deviceRoot && ((_obj$userData = obj.userData) === null || _obj$userData === void 0 ? void 0 : _obj$userData.attachmentId) === attachmentId) deviceRoot = obj;
148
148
  });
149
149
  if (deviceRoot) {
150
- ioAnimMgr.loadAnimations(attachmentId, deviceData.animationConfig, deviceRoot, originalProps.uuid);
150
+ ioBehavMgr.loadBehaviors(attachmentId, deviceData.behaviorConfig, deviceRoot, originalProps.uuid);
151
151
  }
152
152
  case 2:
153
153
  return _context.a(2);
@@ -31,7 +31,7 @@ var CentralPlant = /*#__PURE__*/function (_BaseDisposable) {
31
31
  * Initialize the CentralPlant manager
32
32
  *
33
33
  * @constructor
34
- * @version 0.3.28
34
+ * @version 0.3.30
35
35
  * @updated 2025-10-22
36
36
  *
37
37
  * @description Creates a new CentralPlant instance and initializes internal managers and utilities.
@@ -1109,8 +1109,8 @@ var CentralPlant = /*#__PURE__*/function (_BaseDisposable) {
1109
1109
  }
1110
1110
  }
1111
1111
 
1112
- // 2. Apply io-animation changes
1113
- (_this$sceneViewer5 = this.sceneViewer) === null || _this$sceneViewer5 === void 0 || (_this$sceneViewer5 = _this$sceneViewer5.managers) === null || _this$sceneViewer5 === void 0 || (_this$sceneViewer5 = _this$sceneViewer5.ioAnimationManager) === null || _this$sceneViewer5 === void 0 || _this$sceneViewer5.triggerState(attachmentId, stateId, value, parentUuid);
1112
+ // 2. Apply io-behavior changes
1113
+ (_this$sceneViewer5 = this.sceneViewer) === null || _this$sceneViewer5 === void 0 || (_this$sceneViewer5 = _this$sceneViewer5.managers) === null || _this$sceneViewer5 === void 0 || (_this$sceneViewer5 = _this$sceneViewer5.ioBehaviorManager) === null || _this$sceneViewer5 === void 0 || _this$sceneViewer5.triggerState(attachmentId, stateId, value, parentUuid);
1114
1114
 
1115
1115
  // 3. Emit event for host apps that don't use the state adapter (e.g. cp3d-viewer)
1116
1116
  (_this$sceneViewer6 = this.sceneViewer) === null || _this$sceneViewer6 === void 0 || _this$sceneViewer6.emit('io-device-state-changed', {
@@ -22,7 +22,7 @@ import { ComponentDragManager } from '../managers/controls/componentDragManager.
22
22
  import { SceneTooltipsManager } from '../managers/scene/sceneTooltipsManager.js';
23
23
  import { ComponentTooltipManager } from '../managers/scene/componentTooltipManager.js';
24
24
  import { Viewport2DManager } from '../managers/scene/viewport2DManager.js';
25
- import { IoAnimationManager } from '../managers/behaviors/IoAnimationManager.js';
25
+ import { IoBehaviorManager } from '../managers/behaviors/IoBehaviorManager.js';
26
26
  import { IoOutlineManager } from '../managers/behaviors/IoOutlineManager.js';
27
27
  import { generateUuidFromName, getHardcodedUuid, findObjectByHardcodedUuid, generateUniqueComponentId } from '../utils/nameUtils.js';
28
28
  import { attachIODevicesToComponent } from '../utils/ioDeviceUtils.js';
@@ -149,7 +149,7 @@ var CentralPlantInternals = /*#__PURE__*/function () {
149
149
  this.centralPlant.managers.cameraControlsManager = new CameraControlsManager(this.centralPlant.sceneViewer);
150
150
  this.centralPlant.managers.componentDragManager = new ComponentDragManager(this.centralPlant.sceneViewer);
151
151
  this.centralPlant.managers.viewport2DManager = new Viewport2DManager(this.centralPlant.sceneViewer);
152
- this.centralPlant.managers.ioAnimationManager = new IoAnimationManager(this.centralPlant.sceneViewer);
152
+ this.centralPlant.managers.ioBehaviorManager = new IoBehaviorManager(this.centralPlant.sceneViewer);
153
153
  this.centralPlant.managers.ioOutlineManager = new IoOutlineManager(this.centralPlant.sceneViewer);
154
154
 
155
155
  // All managers are now stored in the managers collection and will be attached via attachToComponent()
@@ -1128,23 +1128,23 @@ var CentralPlantInternals = /*#__PURE__*/function () {
1128
1128
  var _this$centralPlant$sc8;
1129
1129
  attachIODevicesToComponent(componentModel, componentData, modelPreloader, componentId);
1130
1130
 
1131
- // Register animation configs so IoAnimationManager can respond to state changes
1132
- var ioAnimMgr = (_this$centralPlant$sc8 = this.centralPlant.sceneViewer) === null || _this$centralPlant$sc8 === void 0 || (_this$centralPlant$sc8 = _this$centralPlant$sc8.managers) === null || _this$centralPlant$sc8 === void 0 ? void 0 : _this$centralPlant$sc8.ioAnimationManager;
1133
- if (ioAnimMgr) {
1131
+ // Register behavior configs so IoBehaviorManager can respond to state changes
1132
+ var ioBehavMgr = (_this$centralPlant$sc8 = this.centralPlant.sceneViewer) === null || _this$centralPlant$sc8 === void 0 || (_this$centralPlant$sc8 = _this$centralPlant$sc8.managers) === null || _this$centralPlant$sc8 === void 0 ? void 0 : _this$centralPlant$sc8.ioBehaviorManager;
1133
+ if (ioBehavMgr) {
1134
1134
  var _loop = function _loop() {
1135
1135
  var _modelPreloader$compo;
1136
1136
  var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
1137
1137
  attachmentId = _Object$entries$_i[0],
1138
1138
  attachment = _Object$entries$_i[1];
1139
1139
  var deviceData = (_modelPreloader$compo = modelPreloader.componentDictionary) === null || _modelPreloader$compo === void 0 ? void 0 : _modelPreloader$compo[attachment.deviceId];
1140
- if (!(deviceData !== null && deviceData !== void 0 && deviceData.animationConfig)) return 1; // continue
1140
+ if (!(deviceData !== null && deviceData !== void 0 && deviceData.behaviorConfig)) return 1; // continue
1141
1141
  var deviceRoot = null;
1142
1142
  componentModel.traverse(function (obj) {
1143
1143
  var _obj$userData2;
1144
1144
  if (!deviceRoot && ((_obj$userData2 = obj.userData) === null || _obj$userData2 === void 0 ? void 0 : _obj$userData2.attachmentId) === attachmentId) deviceRoot = obj;
1145
1145
  });
1146
1146
  if (deviceRoot) {
1147
- ioAnimMgr.loadAnimations(attachmentId, deviceData.animationConfig, deviceRoot, componentId);
1147
+ ioBehavMgr.loadBehaviors(attachmentId, deviceData.behaviorConfig, deviceRoot, componentId);
1148
1148
  }
1149
1149
  };
1150
1150
  for (var _i = 0, _Object$entries = Object.entries(componentData.attachedDevices); _i < _Object$entries.length; _i++) {
@@ -98,7 +98,7 @@ var sceneViewer = /*#__PURE__*/function (_BaseDisposable) {
98
98
  this.centralPlant.attachToComponent();
99
99
 
100
100
  // Sync our managers tracking object after attachment
101
- managerKeys = ['threeJSResourceManager', 'performanceMonitorManager', 'settingsManager', 'sceneExportManager', 'componentManager', 'sceneInitializationManager', 'environmentManager', 'keyboardControlsManager', 'pathfindingManager', 'pathFlowManager', 'ioAnimationManager', 'ioOutlineManager', 'sceneOperationsManager', 'animationManager', 'cameraControlsManager', 'componentDragManager', 'tooltipsManager', 'componentTooltipManager']; // Populate our managers tracking object
101
+ managerKeys = ['threeJSResourceManager', 'performanceMonitorManager', 'settingsManager', 'sceneExportManager', 'componentManager', 'sceneInitializationManager', 'environmentManager', 'keyboardControlsManager', 'pathfindingManager', 'pathFlowManager', 'ioBehaviorManager', 'ioOutlineManager', 'sceneOperationsManager', 'animationManager', 'cameraControlsManager', 'componentDragManager', 'tooltipsManager', 'componentTooltipManager']; // Populate our managers tracking object
102
102
  managerKeys.forEach(function (key) {
103
103
  if (_this2[key]) {
104
104
  _this2.managers[key] = _this2[key];
@@ -428,12 +428,12 @@ var sceneViewer = /*#__PURE__*/function (_BaseDisposable) {
428
428
  _this4.componentTooltipManager.toggleIODeviceBinaryState(ioDeviceObject);
429
429
  }
430
430
  },
431
- onIODeviceDrag: function onIODeviceDrag(ioDeviceObject, signedDelta, isStart) {
431
+ onIODeviceDrag: function onIODeviceDrag(ioDeviceObject, signedDelta, isStart, hitMesh) {
432
432
  if (isStart) {
433
- var _ioDeviceObject$userD, _this4$managers$ioAni, _this4$managers, _this4$managers2;
433
+ var _ioDeviceObject$userD, _this4$managers$ioBeh, _this4$managers, _this4$managers2;
434
434
  // Resolve parentUuid by walking up to the host component.
435
435
  // Use userData.originalUuid (the custom componentId) because that
436
- // is what IoAnimationManager uses as the map key — NOT obj.uuid.
436
+ // is what IoBehaviorManager uses as the map key — NOT obj.uuid.
437
437
  var parentUuid = null;
438
438
  var obj = ioDeviceObject.parent;
439
439
  while (obj) {
@@ -449,13 +449,13 @@ var sceneViewer = /*#__PURE__*/function (_BaseDisposable) {
449
449
  // silhouette is isolated and the outline ring is visible around
450
450
  // them specifically (not swallowed by the larger device body).
451
451
  // Fall back to the whole device group when none are registered.
452
- var animatedMeshes = attachmentId && parentUuid ? (_this4$managers$ioAni = (_this4$managers = _this4.managers) === null || _this4$managers === void 0 || (_this4$managers = _this4$managers.ioAnimationManager) === null || _this4$managers === void 0 ? void 0 : _this4$managers.getAnimatedMeshes(parentUuid, attachmentId)) !== null && _this4$managers$ioAni !== void 0 ? _this4$managers$ioAni : [] : [];
452
+ var animatedMeshes = attachmentId && parentUuid ? (_this4$managers$ioBeh = (_this4$managers = _this4.managers) === null || _this4$managers === void 0 || (_this4$managers = _this4$managers.ioBehaviorManager) === null || _this4$managers === void 0 ? void 0 : _this4$managers.getAnimatedMeshes(parentUuid, attachmentId)) !== null && _this4$managers$ioBeh !== void 0 ? _this4$managers$ioBeh : [] : [];
453
453
  var targets = animatedMeshes.length > 0 ? animatedMeshes : [ioDeviceObject];
454
454
  (_this4$managers2 = _this4.managers) === null || _this4$managers2 === void 0 || (_this4$managers2 = _this4$managers2.ioOutlineManager) === null || _this4$managers2 === void 0 || _this4$managers2.setTargets(targets);
455
455
  }
456
456
  if (!_this4.componentTooltipManager) return;
457
457
  if (isStart) {
458
- _this4.componentTooltipManager.startIODeviceDrag(ioDeviceObject);
458
+ _this4.componentTooltipManager.startIODeviceDrag(ioDeviceObject, hitMesh);
459
459
  } else {
460
460
  _this4.componentTooltipManager.updateIODeviceDrag(signedDelta);
461
461
  }
@@ -9,7 +9,7 @@ export { SceneExportManager } from './managers/scene/sceneExportManager.js';
9
9
  export { SceneTooltipsManager } from './managers/scene/sceneTooltipsManager.js';
10
10
  export { ComponentTooltipManager } from './managers/scene/componentTooltipManager.js';
11
11
  export { SceneHierarchyManager } from './managers/scene/sceneHierarchyManager.js';
12
- export { IoAnimationManager } from './managers/behaviors/IoAnimationManager.js';
12
+ export { IoBehaviorManager } from './managers/behaviors/IoBehaviorManager.js';
13
13
  export { ComponentManager } from './managers/components/componentManager.js';
14
14
  export { AnimationManager } from './managers/scene/animationManager.js';
15
15
  export { PathfindingManager } from './managers/pathfinding/pathfindingManager.js';