@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.
- package/dist/bundle/index.js +621 -95
- package/dist/cjs/src/core/centralPlant.js +40 -14
- package/dist/cjs/src/core/centralPlantInternals.js +6 -0
- package/dist/cjs/src/core/sceneViewer.js +6 -24
- package/dist/cjs/src/managers/behaviors/IoBehaviorManager.js +515 -41
- package/dist/cjs/src/managers/controls/transformControlsManager.js +32 -10
- package/dist/cjs/src/managers/scene/modelManager.js +11 -5
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +11 -1
- package/dist/esm/src/core/centralPlant.js +40 -14
- package/dist/esm/src/core/centralPlantInternals.js +6 -0
- package/dist/esm/src/core/sceneViewer.js +6 -24
- package/dist/esm/src/managers/behaviors/IoBehaviorManager.js +516 -42
- package/dist/esm/src/managers/controls/transformControlsManager.js +32 -10
- package/dist/esm/src/managers/scene/modelManager.js +11 -5
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +11 -1
- package/package.json +1 -1
|
@@ -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
|
|
455
|
-
while (
|
|
456
|
-
var _obj$
|
|
457
|
-
if (((_obj$
|
|
458
|
-
ioDeviceObject =
|
|
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
|
-
|
|
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$
|
|
538
|
-
if (((_obj$
|
|
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$
|
|
2199
|
-
return obj.uuid === oldSegment.uuid || ((_obj$
|
|
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 =
|
|
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 =
|
|
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
|
|
170
|
-
_context2.p =
|
|
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,
|
|
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
|