@2112-lab/central-plant 0.1.94 → 0.1.95
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 +41 -19
- package/dist/cjs/src/core/centralPlant.js +1 -1
- package/dist/cjs/src/managers/scene/modelManager.js +7 -3
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +33 -15
- package/dist/esm/src/core/centralPlant.js +1 -1
- package/dist/esm/src/managers/scene/modelManager.js +7 -3
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +33 -15
- package/package.json +1 -1
package/dist/bundle/index.js
CHANGED
|
@@ -28897,9 +28897,13 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
28897
28897
|
var _this = this;
|
|
28898
28898
|
var connectorChildren = [];
|
|
28899
28899
|
targetMesh.children.forEach(function (child, index) {
|
|
28900
|
+
var _child$userData;
|
|
28900
28901
|
var isConnectorGeometry = child.geometry && (child.geometry.uuid === 'CONNECTOR-GEO' || child.geometry.type === 'SphereGeometry' && child.geometry.parameters);
|
|
28901
28902
|
var isConnectorByName = child.name && child.name.toLowerCase().includes('connector');
|
|
28902
|
-
|
|
28903
|
+
// Also recognise connectors declared via userData (e.g. inline connectors from SAMPLE_1.json
|
|
28904
|
+
// whose geometry may be a fallback BufferGeometry rather than a SphereGeometry).
|
|
28905
|
+
var isConnectorByUserData = ((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.objectType) === 'connector';
|
|
28906
|
+
if (isConnectorGeometry && isConnectorByName || isConnectorByUserData) {
|
|
28903
28907
|
// Ensure userData exists and has worldBoundingBox
|
|
28904
28908
|
if (!child.userData) child.userData = {};
|
|
28905
28909
|
if (!child.userData.worldBoundingBox) {
|
|
@@ -29183,8 +29187,8 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
29183
29187
|
requiredModels = new Set();
|
|
29184
29188
|
console.log("\uD83D\uDD0D Checking ".concat(data.scene.children.length, " scene objects for required models..."));
|
|
29185
29189
|
data.scene.children.forEach(function (child) {
|
|
29186
|
-
var _child$
|
|
29187
|
-
var libraryId = (_child$
|
|
29190
|
+
var _child$userData2;
|
|
29191
|
+
var libraryId = (_child$userData2 = child.userData) === null || _child$userData2 === void 0 ? void 0 : _child$userData2.libraryId;
|
|
29188
29192
|
if (libraryId) {
|
|
29189
29193
|
if (componentDictionary[libraryId]) {
|
|
29190
29194
|
var modelKey = componentDictionary[libraryId].modelKey;
|
|
@@ -30239,6 +30243,24 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
30239
30243
|
}
|
|
30240
30244
|
}
|
|
30241
30245
|
});
|
|
30246
|
+
|
|
30247
|
+
// Ensure CONNECTOR_GATEWAY_SPHERE exists even when all connectors are nested inside
|
|
30248
|
+
// component children (e.g. SAMPLE_1.json inline connector definitions). Without
|
|
30249
|
+
// this geometry the connector meshes fall back to empty BufferGeometry, which then
|
|
30250
|
+
// causes _preserveConnectorChildren to drop them during GLB model replacement.
|
|
30251
|
+
if (!geometries['CONNECTOR_GATEWAY_SPHERE']) {
|
|
30252
|
+
var hasNestedConnectors = data.scene.children.some(function (child) {
|
|
30253
|
+
var _child$userData3;
|
|
30254
|
+
return ((_child$userData3 = child.userData) === null || _child$userData3 === void 0 ? void 0 : _child$userData3.objectType) === 'component' && Array.isArray(child.children) && child.children.some(function (nestedChild) {
|
|
30255
|
+
var _nestedChild$userData;
|
|
30256
|
+
return ((_nestedChild$userData = nestedChild.userData) === null || _nestedChild$userData === void 0 ? void 0 : _nestedChild$userData.objectType) === 'connector';
|
|
30257
|
+
});
|
|
30258
|
+
});
|
|
30259
|
+
if (hasNestedConnectors) {
|
|
30260
|
+
geometries['CONNECTOR_GATEWAY_SPHERE'] = new THREE__namespace.SphereGeometry(0.1, 16, 16);
|
|
30261
|
+
console.log('🔮 Created shared sphere geometry for nested inline connectors (radius: 0.1)');
|
|
30262
|
+
}
|
|
30263
|
+
}
|
|
30242
30264
|
return geometries;
|
|
30243
30265
|
}
|
|
30244
30266
|
|
|
@@ -30624,12 +30646,12 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
30624
30646
|
_step;
|
|
30625
30647
|
try {
|
|
30626
30648
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30627
|
-
var _object$userData, _child$
|
|
30649
|
+
var _object$userData, _child$userData4;
|
|
30628
30650
|
var child = _step.value;
|
|
30629
30651
|
// Enhanced matching logic with hardcoded UUID priority
|
|
30630
30652
|
|
|
30631
30653
|
// Strategy 1: Direct hardcoded UUID match (HIGHEST PRIORITY)
|
|
30632
|
-
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$
|
|
30654
|
+
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$userData4 = child.userData) === null || _child$userData4 === void 0 ? void 0 : _child$userData4.originalUuid)) {
|
|
30633
30655
|
return child;
|
|
30634
30656
|
}
|
|
30635
30657
|
|
|
@@ -30888,10 +30910,10 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
30888
30910
|
var componentsProcessed = 0;
|
|
30889
30911
|
var connectorsInjected = 0;
|
|
30890
30912
|
data.scene.children.forEach(function (child) {
|
|
30891
|
-
var _child$
|
|
30892
|
-
var childType = ((_child$
|
|
30913
|
+
var _child$userData5, _child$userData6, _child$userData7;
|
|
30914
|
+
var childType = ((_child$userData5 = child.userData) === null || _child$userData5 === void 0 ? void 0 : _child$userData5.objectType) || ((_child$userData6 = child.userData) === null || _child$userData6 === void 0 ? void 0 : _child$userData6.objectType);
|
|
30893
30915
|
// Only process components with libraryId
|
|
30894
|
-
if (childType === 'component' && (_child$
|
|
30916
|
+
if (childType === 'component' && (_child$userData7 = child.userData) !== null && _child$userData7 !== void 0 && _child$userData7.libraryId) {
|
|
30895
30917
|
var libraryId = child.userData.libraryId;
|
|
30896
30918
|
var dictEntry = componentDictionary[libraryId];
|
|
30897
30919
|
|
|
@@ -31048,17 +31070,17 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
31048
31070
|
geometries = this.createSceneGeometries(data, componentDictionary); // Create basic objects and track GLB replacements
|
|
31049
31071
|
libraryObjectsToReplace = [];
|
|
31050
31072
|
data.scene.children.forEach(function (child, index) {
|
|
31051
|
-
var _child$
|
|
31073
|
+
var _child$userData8, _child$userData9;
|
|
31052
31074
|
var createdObject = _this4.createSceneObject(child, geometries, materials, componentDictionary);
|
|
31053
31075
|
_this4.sceneViewer.scene.add(createdObject);
|
|
31054
31076
|
|
|
31055
31077
|
// Track objects that need GLB model replacement
|
|
31056
|
-
if ((_child$
|
|
31057
|
-
var _child$
|
|
31078
|
+
if ((_child$userData8 = child.userData) !== null && _child$userData8 !== void 0 && _child$userData8.libraryId && componentDictionary[(_child$userData9 = child.userData) === null || _child$userData9 === void 0 ? void 0 : _child$userData9.libraryId]) {
|
|
31079
|
+
var _child$userData0;
|
|
31058
31080
|
libraryObjectsToReplace.push({
|
|
31059
31081
|
basicObject: createdObject,
|
|
31060
31082
|
jsonData: child,
|
|
31061
|
-
componentData: componentDictionary[(_child$
|
|
31083
|
+
componentData: componentDictionary[(_child$userData0 = child.userData) === null || _child$userData0 === void 0 ? void 0 : _child$userData0.libraryId]
|
|
31062
31084
|
});
|
|
31063
31085
|
}
|
|
31064
31086
|
});
|
|
@@ -31197,8 +31219,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
31197
31219
|
var instanceBehaviors = [];
|
|
31198
31220
|
if (Array.isArray(data === null || data === void 0 || (_data$scene3 = data.scene) === null || _data$scene3 === void 0 ? void 0 : _data$scene3.children)) {
|
|
31199
31221
|
data.scene.children.forEach(function (child) {
|
|
31200
|
-
var _child$
|
|
31201
|
-
var libraryId = (_child$
|
|
31222
|
+
var _child$userData1, _compData$defaultBeha;
|
|
31223
|
+
var libraryId = (_child$userData1 = child.userData) === null || _child$userData1 === void 0 ? void 0 : _child$userData1.libraryId;
|
|
31202
31224
|
if (!libraryId) return;
|
|
31203
31225
|
var instanceUuid = child.uuid;
|
|
31204
31226
|
// Skip instances whose defaults were already resolved by Step A
|
|
@@ -31589,8 +31611,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
31589
31611
|
// Process children (connectors, etc.) if they exist
|
|
31590
31612
|
if (componentModel.children && componentModel.children.length > 0) {
|
|
31591
31613
|
componentModel.children.forEach(function (child) {
|
|
31592
|
-
var _child$
|
|
31593
|
-
var childType = ((_child$
|
|
31614
|
+
var _child$userData10, _child$userData11;
|
|
31615
|
+
var childType = ((_child$userData10 = child.userData) === null || _child$userData10 === void 0 ? void 0 : _child$userData10.objectType) || ((_child$userData11 = child.userData) === null || _child$userData11 === void 0 ? void 0 : _child$userData11.objectType);
|
|
31594
31616
|
if (childType === 'connector') {
|
|
31595
31617
|
var _child$geometry;
|
|
31596
31618
|
var childBoundingBox = new THREE__namespace.Box3().setFromObject(child);
|
|
@@ -31675,8 +31697,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
31675
31697
|
if (segment.children && segment.children.length > 0) {
|
|
31676
31698
|
var childrenToRemove = _toConsumableArray(segment.children);
|
|
31677
31699
|
childrenToRemove.forEach(function (child) {
|
|
31678
|
-
var _child$
|
|
31679
|
-
if ((_child$
|
|
31700
|
+
var _child$userData12;
|
|
31701
|
+
if ((_child$userData12 = child.userData) !== null && _child$userData12 !== void 0 && _child$userData12.isPipeElbow) {
|
|
31680
31702
|
console.log("\uD83D\uDDD1\uFE0F Removing elbow child from segment before manualization: ".concat(child.uuid));
|
|
31681
31703
|
segment.remove(child);
|
|
31682
31704
|
if (child.geometry) child.geometry.dispose();
|
|
@@ -37181,7 +37203,7 @@ var CentralPlant = /*#__PURE__*/function (_BaseDisposable) {
|
|
|
37181
37203
|
* Initialize the CentralPlant manager
|
|
37182
37204
|
*
|
|
37183
37205
|
* @constructor
|
|
37184
|
-
* @version 0.1.
|
|
37206
|
+
* @version 0.1.95
|
|
37185
37207
|
* @updated 2025-10-22
|
|
37186
37208
|
*
|
|
37187
37209
|
* @description Creates a new CentralPlant instance and initializes internal managers and utilities.
|
|
@@ -19,7 +19,7 @@ var CentralPlant = /*#__PURE__*/function (_BaseDisposable) {
|
|
|
19
19
|
* Initialize the CentralPlant manager
|
|
20
20
|
*
|
|
21
21
|
* @constructor
|
|
22
|
-
* @version 0.1.
|
|
22
|
+
* @version 0.1.95
|
|
23
23
|
* @updated 2025-10-22
|
|
24
24
|
*
|
|
25
25
|
* @description Creates a new CentralPlant instance and initializes internal managers and utilities.
|
|
@@ -146,9 +146,13 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
146
146
|
var _this = this;
|
|
147
147
|
var connectorChildren = [];
|
|
148
148
|
targetMesh.children.forEach(function (child, index) {
|
|
149
|
+
var _child$userData;
|
|
149
150
|
var isConnectorGeometry = child.geometry && (child.geometry.uuid === 'CONNECTOR-GEO' || child.geometry.type === 'SphereGeometry' && child.geometry.parameters);
|
|
150
151
|
var isConnectorByName = child.name && child.name.toLowerCase().includes('connector');
|
|
151
|
-
|
|
152
|
+
// Also recognise connectors declared via userData (e.g. inline connectors from SAMPLE_1.json
|
|
153
|
+
// whose geometry may be a fallback BufferGeometry rather than a SphereGeometry).
|
|
154
|
+
var isConnectorByUserData = ((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.objectType) === 'connector';
|
|
155
|
+
if (isConnectorGeometry && isConnectorByName || isConnectorByUserData) {
|
|
152
156
|
// Ensure userData exists and has worldBoundingBox
|
|
153
157
|
if (!child.userData) child.userData = {};
|
|
154
158
|
if (!child.userData.worldBoundingBox) {
|
|
@@ -432,8 +436,8 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
432
436
|
requiredModels = new Set();
|
|
433
437
|
console.log("\uD83D\uDD0D Checking ".concat(data.scene.children.length, " scene objects for required models..."));
|
|
434
438
|
data.scene.children.forEach(function (child) {
|
|
435
|
-
var _child$
|
|
436
|
-
var libraryId = (_child$
|
|
439
|
+
var _child$userData2;
|
|
440
|
+
var libraryId = (_child$userData2 = child.userData) === null || _child$userData2 === void 0 ? void 0 : _child$userData2.libraryId;
|
|
437
441
|
if (libraryId) {
|
|
438
442
|
if (componentDictionary[libraryId]) {
|
|
439
443
|
var modelKey = componentDictionary[libraryId].modelKey;
|
|
@@ -261,6 +261,24 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
|
+
|
|
265
|
+
// Ensure CONNECTOR_GATEWAY_SPHERE exists even when all connectors are nested inside
|
|
266
|
+
// component children (e.g. SAMPLE_1.json inline connector definitions). Without
|
|
267
|
+
// this geometry the connector meshes fall back to empty BufferGeometry, which then
|
|
268
|
+
// causes _preserveConnectorChildren to drop them during GLB model replacement.
|
|
269
|
+
if (!geometries['CONNECTOR_GATEWAY_SPHERE']) {
|
|
270
|
+
var hasNestedConnectors = data.scene.children.some(function (child) {
|
|
271
|
+
var _child$userData3;
|
|
272
|
+
return ((_child$userData3 = child.userData) === null || _child$userData3 === void 0 ? void 0 : _child$userData3.objectType) === 'component' && Array.isArray(child.children) && child.children.some(function (nestedChild) {
|
|
273
|
+
var _nestedChild$userData;
|
|
274
|
+
return ((_nestedChild$userData = nestedChild.userData) === null || _nestedChild$userData === void 0 ? void 0 : _nestedChild$userData.objectType) === 'connector';
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
if (hasNestedConnectors) {
|
|
278
|
+
geometries['CONNECTOR_GATEWAY_SPHERE'] = new THREE__namespace.SphereGeometry(0.1, 16, 16);
|
|
279
|
+
console.log('🔮 Created shared sphere geometry for nested inline connectors (radius: 0.1)');
|
|
280
|
+
}
|
|
281
|
+
}
|
|
264
282
|
return geometries;
|
|
265
283
|
}
|
|
266
284
|
|
|
@@ -646,12 +664,12 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
646
664
|
_step;
|
|
647
665
|
try {
|
|
648
666
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
649
|
-
var _object$userData, _child$
|
|
667
|
+
var _object$userData, _child$userData4;
|
|
650
668
|
var child = _step.value;
|
|
651
669
|
// Enhanced matching logic with hardcoded UUID priority
|
|
652
670
|
|
|
653
671
|
// Strategy 1: Direct hardcoded UUID match (HIGHEST PRIORITY)
|
|
654
|
-
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$
|
|
672
|
+
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$userData4 = child.userData) === null || _child$userData4 === void 0 ? void 0 : _child$userData4.originalUuid)) {
|
|
655
673
|
return child;
|
|
656
674
|
}
|
|
657
675
|
|
|
@@ -910,10 +928,10 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
910
928
|
var componentsProcessed = 0;
|
|
911
929
|
var connectorsInjected = 0;
|
|
912
930
|
data.scene.children.forEach(function (child) {
|
|
913
|
-
var _child$
|
|
914
|
-
var childType = ((_child$
|
|
931
|
+
var _child$userData5, _child$userData6, _child$userData7;
|
|
932
|
+
var childType = ((_child$userData5 = child.userData) === null || _child$userData5 === void 0 ? void 0 : _child$userData5.objectType) || ((_child$userData6 = child.userData) === null || _child$userData6 === void 0 ? void 0 : _child$userData6.objectType);
|
|
915
933
|
// Only process components with libraryId
|
|
916
|
-
if (childType === 'component' && (_child$
|
|
934
|
+
if (childType === 'component' && (_child$userData7 = child.userData) !== null && _child$userData7 !== void 0 && _child$userData7.libraryId) {
|
|
917
935
|
var libraryId = child.userData.libraryId;
|
|
918
936
|
var dictEntry = componentDictionary[libraryId];
|
|
919
937
|
|
|
@@ -1070,17 +1088,17 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1070
1088
|
geometries = this.createSceneGeometries(data, componentDictionary); // Create basic objects and track GLB replacements
|
|
1071
1089
|
libraryObjectsToReplace = [];
|
|
1072
1090
|
data.scene.children.forEach(function (child, index) {
|
|
1073
|
-
var _child$
|
|
1091
|
+
var _child$userData8, _child$userData9;
|
|
1074
1092
|
var createdObject = _this4.createSceneObject(child, geometries, materials, componentDictionary);
|
|
1075
1093
|
_this4.sceneViewer.scene.add(createdObject);
|
|
1076
1094
|
|
|
1077
1095
|
// Track objects that need GLB model replacement
|
|
1078
|
-
if ((_child$
|
|
1079
|
-
var _child$
|
|
1096
|
+
if ((_child$userData8 = child.userData) !== null && _child$userData8 !== void 0 && _child$userData8.libraryId && componentDictionary[(_child$userData9 = child.userData) === null || _child$userData9 === void 0 ? void 0 : _child$userData9.libraryId]) {
|
|
1097
|
+
var _child$userData0;
|
|
1080
1098
|
libraryObjectsToReplace.push({
|
|
1081
1099
|
basicObject: createdObject,
|
|
1082
1100
|
jsonData: child,
|
|
1083
|
-
componentData: componentDictionary[(_child$
|
|
1101
|
+
componentData: componentDictionary[(_child$userData0 = child.userData) === null || _child$userData0 === void 0 ? void 0 : _child$userData0.libraryId]
|
|
1084
1102
|
});
|
|
1085
1103
|
}
|
|
1086
1104
|
});
|
|
@@ -1219,8 +1237,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1219
1237
|
var instanceBehaviors = [];
|
|
1220
1238
|
if (Array.isArray(data === null || data === void 0 || (_data$scene3 = data.scene) === null || _data$scene3 === void 0 ? void 0 : _data$scene3.children)) {
|
|
1221
1239
|
data.scene.children.forEach(function (child) {
|
|
1222
|
-
var _child$
|
|
1223
|
-
var libraryId = (_child$
|
|
1240
|
+
var _child$userData1, _compData$defaultBeha;
|
|
1241
|
+
var libraryId = (_child$userData1 = child.userData) === null || _child$userData1 === void 0 ? void 0 : _child$userData1.libraryId;
|
|
1224
1242
|
if (!libraryId) return;
|
|
1225
1243
|
var instanceUuid = child.uuid;
|
|
1226
1244
|
// Skip instances whose defaults were already resolved by Step A
|
|
@@ -1611,8 +1629,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1611
1629
|
// Process children (connectors, etc.) if they exist
|
|
1612
1630
|
if (componentModel.children && componentModel.children.length > 0) {
|
|
1613
1631
|
componentModel.children.forEach(function (child) {
|
|
1614
|
-
var _child$
|
|
1615
|
-
var childType = ((_child$
|
|
1632
|
+
var _child$userData10, _child$userData11;
|
|
1633
|
+
var childType = ((_child$userData10 = child.userData) === null || _child$userData10 === void 0 ? void 0 : _child$userData10.objectType) || ((_child$userData11 = child.userData) === null || _child$userData11 === void 0 ? void 0 : _child$userData11.objectType);
|
|
1616
1634
|
if (childType === 'connector') {
|
|
1617
1635
|
var _child$geometry;
|
|
1618
1636
|
var childBoundingBox = new THREE__namespace.Box3().setFromObject(child);
|
|
@@ -1697,8 +1715,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1697
1715
|
if (segment.children && segment.children.length > 0) {
|
|
1698
1716
|
var childrenToRemove = _rollupPluginBabelHelpers.toConsumableArray(segment.children);
|
|
1699
1717
|
childrenToRemove.forEach(function (child) {
|
|
1700
|
-
var _child$
|
|
1701
|
-
if ((_child$
|
|
1718
|
+
var _child$userData12;
|
|
1719
|
+
if ((_child$userData12 = child.userData) !== null && _child$userData12 !== void 0 && _child$userData12.isPipeElbow) {
|
|
1702
1720
|
console.log("\uD83D\uDDD1\uFE0F Removing elbow child from segment before manualization: ".concat(child.uuid));
|
|
1703
1721
|
segment.remove(child);
|
|
1704
1722
|
if (child.geometry) child.geometry.dispose();
|
|
@@ -15,7 +15,7 @@ var CentralPlant = /*#__PURE__*/function (_BaseDisposable) {
|
|
|
15
15
|
* Initialize the CentralPlant manager
|
|
16
16
|
*
|
|
17
17
|
* @constructor
|
|
18
|
-
* @version 0.1.
|
|
18
|
+
* @version 0.1.95
|
|
19
19
|
* @updated 2025-10-22
|
|
20
20
|
*
|
|
21
21
|
* @description Creates a new CentralPlant instance and initializes internal managers and utilities.
|
|
@@ -122,9 +122,13 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
122
122
|
var _this = this;
|
|
123
123
|
var connectorChildren = [];
|
|
124
124
|
targetMesh.children.forEach(function (child, index) {
|
|
125
|
+
var _child$userData;
|
|
125
126
|
var isConnectorGeometry = child.geometry && (child.geometry.uuid === 'CONNECTOR-GEO' || child.geometry.type === 'SphereGeometry' && child.geometry.parameters);
|
|
126
127
|
var isConnectorByName = child.name && child.name.toLowerCase().includes('connector');
|
|
127
|
-
|
|
128
|
+
// Also recognise connectors declared via userData (e.g. inline connectors from SAMPLE_1.json
|
|
129
|
+
// whose geometry may be a fallback BufferGeometry rather than a SphereGeometry).
|
|
130
|
+
var isConnectorByUserData = ((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.objectType) === 'connector';
|
|
131
|
+
if (isConnectorGeometry && isConnectorByName || isConnectorByUserData) {
|
|
128
132
|
// Ensure userData exists and has worldBoundingBox
|
|
129
133
|
if (!child.userData) child.userData = {};
|
|
130
134
|
if (!child.userData.worldBoundingBox) {
|
|
@@ -408,8 +412,8 @@ var ModelManager = /*#__PURE__*/function () {
|
|
|
408
412
|
requiredModels = new Set();
|
|
409
413
|
console.log("\uD83D\uDD0D Checking ".concat(data.scene.children.length, " scene objects for required models..."));
|
|
410
414
|
data.scene.children.forEach(function (child) {
|
|
411
|
-
var _child$
|
|
412
|
-
var libraryId = (_child$
|
|
415
|
+
var _child$userData2;
|
|
416
|
+
var libraryId = (_child$userData2 = child.userData) === null || _child$userData2 === void 0 ? void 0 : _child$userData2.libraryId;
|
|
413
417
|
if (libraryId) {
|
|
414
418
|
if (componentDictionary[libraryId]) {
|
|
415
419
|
var modelKey = componentDictionary[libraryId].modelKey;
|
|
@@ -237,6 +237,24 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
});
|
|
240
|
+
|
|
241
|
+
// Ensure CONNECTOR_GATEWAY_SPHERE exists even when all connectors are nested inside
|
|
242
|
+
// component children (e.g. SAMPLE_1.json inline connector definitions). Without
|
|
243
|
+
// this geometry the connector meshes fall back to empty BufferGeometry, which then
|
|
244
|
+
// causes _preserveConnectorChildren to drop them during GLB model replacement.
|
|
245
|
+
if (!geometries['CONNECTOR_GATEWAY_SPHERE']) {
|
|
246
|
+
var hasNestedConnectors = data.scene.children.some(function (child) {
|
|
247
|
+
var _child$userData3;
|
|
248
|
+
return ((_child$userData3 = child.userData) === null || _child$userData3 === void 0 ? void 0 : _child$userData3.objectType) === 'component' && Array.isArray(child.children) && child.children.some(function (nestedChild) {
|
|
249
|
+
var _nestedChild$userData;
|
|
250
|
+
return ((_nestedChild$userData = nestedChild.userData) === null || _nestedChild$userData === void 0 ? void 0 : _nestedChild$userData.objectType) === 'connector';
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
if (hasNestedConnectors) {
|
|
254
|
+
geometries['CONNECTOR_GATEWAY_SPHERE'] = new THREE.SphereGeometry(0.1, 16, 16);
|
|
255
|
+
console.log('🔮 Created shared sphere geometry for nested inline connectors (radius: 0.1)');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
240
258
|
return geometries;
|
|
241
259
|
}
|
|
242
260
|
|
|
@@ -622,12 +640,12 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
622
640
|
_step;
|
|
623
641
|
try {
|
|
624
642
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
625
|
-
var _object$userData, _child$
|
|
643
|
+
var _object$userData, _child$userData4;
|
|
626
644
|
var child = _step.value;
|
|
627
645
|
// Enhanced matching logic with hardcoded UUID priority
|
|
628
646
|
|
|
629
647
|
// Strategy 1: Direct hardcoded UUID match (HIGHEST PRIORITY)
|
|
630
|
-
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$
|
|
648
|
+
if (child.uuid === object.uuid || child.uuid === ((_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.originalUuid) || object.uuid === ((_child$userData4 = child.userData) === null || _child$userData4 === void 0 ? void 0 : _child$userData4.originalUuid)) {
|
|
631
649
|
return child;
|
|
632
650
|
}
|
|
633
651
|
|
|
@@ -886,10 +904,10 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
886
904
|
var componentsProcessed = 0;
|
|
887
905
|
var connectorsInjected = 0;
|
|
888
906
|
data.scene.children.forEach(function (child) {
|
|
889
|
-
var _child$
|
|
890
|
-
var childType = ((_child$
|
|
907
|
+
var _child$userData5, _child$userData6, _child$userData7;
|
|
908
|
+
var childType = ((_child$userData5 = child.userData) === null || _child$userData5 === void 0 ? void 0 : _child$userData5.objectType) || ((_child$userData6 = child.userData) === null || _child$userData6 === void 0 ? void 0 : _child$userData6.objectType);
|
|
891
909
|
// Only process components with libraryId
|
|
892
|
-
if (childType === 'component' && (_child$
|
|
910
|
+
if (childType === 'component' && (_child$userData7 = child.userData) !== null && _child$userData7 !== void 0 && _child$userData7.libraryId) {
|
|
893
911
|
var libraryId = child.userData.libraryId;
|
|
894
912
|
var dictEntry = componentDictionary[libraryId];
|
|
895
913
|
|
|
@@ -1046,17 +1064,17 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1046
1064
|
geometries = this.createSceneGeometries(data, componentDictionary); // Create basic objects and track GLB replacements
|
|
1047
1065
|
libraryObjectsToReplace = [];
|
|
1048
1066
|
data.scene.children.forEach(function (child, index) {
|
|
1049
|
-
var _child$
|
|
1067
|
+
var _child$userData8, _child$userData9;
|
|
1050
1068
|
var createdObject = _this4.createSceneObject(child, geometries, materials, componentDictionary);
|
|
1051
1069
|
_this4.sceneViewer.scene.add(createdObject);
|
|
1052
1070
|
|
|
1053
1071
|
// Track objects that need GLB model replacement
|
|
1054
|
-
if ((_child$
|
|
1055
|
-
var _child$
|
|
1072
|
+
if ((_child$userData8 = child.userData) !== null && _child$userData8 !== void 0 && _child$userData8.libraryId && componentDictionary[(_child$userData9 = child.userData) === null || _child$userData9 === void 0 ? void 0 : _child$userData9.libraryId]) {
|
|
1073
|
+
var _child$userData0;
|
|
1056
1074
|
libraryObjectsToReplace.push({
|
|
1057
1075
|
basicObject: createdObject,
|
|
1058
1076
|
jsonData: child,
|
|
1059
|
-
componentData: componentDictionary[(_child$
|
|
1077
|
+
componentData: componentDictionary[(_child$userData0 = child.userData) === null || _child$userData0 === void 0 ? void 0 : _child$userData0.libraryId]
|
|
1060
1078
|
});
|
|
1061
1079
|
}
|
|
1062
1080
|
});
|
|
@@ -1195,8 +1213,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1195
1213
|
var instanceBehaviors = [];
|
|
1196
1214
|
if (Array.isArray(data === null || data === void 0 || (_data$scene3 = data.scene) === null || _data$scene3 === void 0 ? void 0 : _data$scene3.children)) {
|
|
1197
1215
|
data.scene.children.forEach(function (child) {
|
|
1198
|
-
var _child$
|
|
1199
|
-
var libraryId = (_child$
|
|
1216
|
+
var _child$userData1, _compData$defaultBeha;
|
|
1217
|
+
var libraryId = (_child$userData1 = child.userData) === null || _child$userData1 === void 0 ? void 0 : _child$userData1.libraryId;
|
|
1200
1218
|
if (!libraryId) return;
|
|
1201
1219
|
var instanceUuid = child.uuid;
|
|
1202
1220
|
// Skip instances whose defaults were already resolved by Step A
|
|
@@ -1587,8 +1605,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1587
1605
|
// Process children (connectors, etc.) if they exist
|
|
1588
1606
|
if (componentModel.children && componentModel.children.length > 0) {
|
|
1589
1607
|
componentModel.children.forEach(function (child) {
|
|
1590
|
-
var _child$
|
|
1591
|
-
var childType = ((_child$
|
|
1608
|
+
var _child$userData10, _child$userData11;
|
|
1609
|
+
var childType = ((_child$userData10 = child.userData) === null || _child$userData10 === void 0 ? void 0 : _child$userData10.objectType) || ((_child$userData11 = child.userData) === null || _child$userData11 === void 0 ? void 0 : _child$userData11.objectType);
|
|
1592
1610
|
if (childType === 'connector') {
|
|
1593
1611
|
var _child$geometry;
|
|
1594
1612
|
var childBoundingBox = new THREE.Box3().setFromObject(child);
|
|
@@ -1673,8 +1691,8 @@ var SceneOperationsManager = /*#__PURE__*/function () {
|
|
|
1673
1691
|
if (segment.children && segment.children.length > 0) {
|
|
1674
1692
|
var childrenToRemove = _toConsumableArray(segment.children);
|
|
1675
1693
|
childrenToRemove.forEach(function (child) {
|
|
1676
|
-
var _child$
|
|
1677
|
-
if ((_child$
|
|
1694
|
+
var _child$userData12;
|
|
1695
|
+
if ((_child$userData12 = child.userData) !== null && _child$userData12 !== void 0 && _child$userData12.isPipeElbow) {
|
|
1678
1696
|
console.log("\uD83D\uDDD1\uFE0F Removing elbow child from segment before manualization: ".concat(child.uuid));
|
|
1679
1697
|
segment.remove(child);
|
|
1680
1698
|
if (child.geometry) child.geometry.dispose();
|