@2112-lab/central-plant 0.1.39 → 0.1.41
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 +7991 -7054
- package/dist/cjs/src/core/centralPlant.js +48 -3
- package/dist/cjs/src/core/centralPlantInternals.js +75 -566
- package/dist/cjs/src/core/sceneViewer.js +38 -13
- package/dist/cjs/src/index.js +6 -4
- package/dist/cjs/src/managers/components/pathfindingManager.js +75 -60
- package/dist/cjs/src/managers/components/transformOperationsManager.js +929 -0
- package/dist/cjs/src/managers/controls/keyboardControlsManager.js +57 -1
- package/dist/cjs/src/managers/controls/transformControls.js +11 -3
- package/dist/cjs/src/managers/controls/transformControlsManager.js +563 -263
- package/dist/cjs/src/managers/pathfinding/ConnectorManager.js +385 -0
- package/dist/cjs/src/managers/pathfinding/PathIntersectionDetector.js +387 -0
- package/dist/cjs/src/managers/pathfinding/PathRenderingManager.js +401 -0
- package/dist/cjs/src/managers/pathfinding/pathfindingManager.js +378 -0
- package/dist/cjs/src/managers/pathfinding/sceneDataManager.js +256 -0
- package/dist/cjs/src/managers/scene/animationManager.js +145 -0
- package/dist/cjs/src/managers/scene/sceneExportManager.js +14 -13
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +516 -21
- package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +1 -8
- package/dist/cjs/src/managers/system/operationHistoryManager.js +414 -0
- package/dist/cjs/src/managers/system/settingsManager.js +2 -1
- package/dist/cjs/src/utils/objectTypes.js +5 -7
- package/dist/esm/src/core/centralPlant.js +48 -3
- package/dist/esm/src/core/centralPlantInternals.js +76 -567
- package/dist/esm/src/core/sceneViewer.js +38 -13
- package/dist/esm/src/index.js +4 -3
- package/dist/esm/src/managers/components/pathfindingManager.js +75 -60
- package/dist/esm/src/managers/components/transformOperationsManager.js +904 -0
- package/dist/esm/src/managers/controls/keyboardControlsManager.js +57 -1
- package/dist/esm/src/managers/controls/transformControls.js +11 -3
- package/dist/esm/src/managers/controls/transformControlsManager.js +564 -264
- package/dist/esm/src/managers/pathfinding/ConnectorManager.js +361 -0
- package/dist/esm/src/managers/pathfinding/PathIntersectionDetector.js +363 -0
- package/dist/esm/src/managers/pathfinding/PathRenderingManager.js +377 -0
- package/dist/esm/src/managers/pathfinding/pathfindingManager.js +374 -0
- package/dist/esm/src/managers/pathfinding/sceneDataManager.js +232 -0
- package/dist/esm/src/managers/scene/animationManager.js +141 -0
- package/dist/esm/src/managers/scene/sceneExportManager.js +14 -13
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +516 -21
- package/dist/esm/src/managers/scene/sceneTooltipsManager.js +1 -8
- package/dist/esm/src/managers/system/operationHistoryManager.js +409 -0
- package/dist/esm/src/managers/system/settingsManager.js +2 -1
- package/dist/esm/src/utils/objectTypes.js +5 -7
- package/dist/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -14,12 +14,21 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
|
|
|
14
14
|
return _createClass(KeyboardControlsManager, [{
|
|
15
15
|
key: "setupKeyboardControls",
|
|
16
16
|
value: function setupKeyboardControls() {
|
|
17
|
+
var _this = this;
|
|
17
18
|
this.handleKeyDown = function (event) {
|
|
18
19
|
// Sample Ctrl+Z example
|
|
19
20
|
if (event.ctrlKey && (event.key.toLowerCase() === 'z' || event.code === 'KeyZ')) {
|
|
20
21
|
// method call here
|
|
21
22
|
return;
|
|
22
23
|
}
|
|
24
|
+
|
|
25
|
+
// Shift+D to split selected segment
|
|
26
|
+
if (event.shiftKey && (event.key.toLowerCase() === 'd' || event.code === 'KeyD')) {
|
|
27
|
+
_this.handleSegmentSplit();
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
event.stopPropagation();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
23
32
|
switch (event.key.toLowerCase()) {
|
|
24
33
|
}
|
|
25
34
|
};
|
|
@@ -30,7 +39,54 @@ var KeyboardControlsManager = /*#__PURE__*/function () {
|
|
|
30
39
|
|
|
31
40
|
// Override transform controls keyboard handling
|
|
32
41
|
this.overrideTransformControlsKeyboard();
|
|
33
|
-
console.log('Keyboard controls initialized with Ctrl+Z undo override');
|
|
42
|
+
console.log('Keyboard controls initialized with Ctrl+Z undo override and Shift+D segment split');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Handle segment split operation (Shift+D)
|
|
47
|
+
* Splits the currently selected segment in half if it's a pipe segment
|
|
48
|
+
*/
|
|
49
|
+
}, {
|
|
50
|
+
key: "handleSegmentSplit",
|
|
51
|
+
value: function handleSegmentSplit() {
|
|
52
|
+
var sceneViewer = this.sceneViewer;
|
|
53
|
+
|
|
54
|
+
// Check if transform controls are active with a selected object
|
|
55
|
+
if (!sceneViewer.transformManager || !sceneViewer.transformManager.selectedObjects || sceneViewer.transformManager.selectedObjects.length === 0) {
|
|
56
|
+
console.log('ℹ️ No object selected for segment split');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
var selectedObject = sceneViewer.transformManager.selectedObjects[0];
|
|
60
|
+
|
|
61
|
+
// Verify it's a segment
|
|
62
|
+
if (!selectedObject.userData || selectedObject.userData.objectType !== 'segment') {
|
|
63
|
+
console.log('ℹ️ Selected object is not a segment, cannot split');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
console.log('✂️ Shift+D pressed - splitting segment:', selectedObject.uuid);
|
|
67
|
+
|
|
68
|
+
// Access CentralPlant through sceneViewer
|
|
69
|
+
var centralPlant = sceneViewer.centralPlant;
|
|
70
|
+
if (!centralPlant || typeof centralPlant.splitSegment !== 'function') {
|
|
71
|
+
console.error('❌ CentralPlant or splitSegment method not available');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Call the public API to split the segment
|
|
76
|
+
var result = centralPlant.splitSegment(selectedObject.uuid);
|
|
77
|
+
if (result) {
|
|
78
|
+
console.log('✅ Segment split successful:', result);
|
|
79
|
+
|
|
80
|
+
// Deselect the original segment (now removed) and optionally select one of the new segments
|
|
81
|
+
sceneViewer.transformManager.deselectObject();
|
|
82
|
+
|
|
83
|
+
// Optionally select the first new segment
|
|
84
|
+
if (result.segment1) {
|
|
85
|
+
sceneViewer.transformManager.selectObject(result.segment1);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
console.error('❌ Segment split failed');
|
|
89
|
+
}
|
|
34
90
|
}
|
|
35
91
|
|
|
36
92
|
/**
|
|
@@ -153,6 +153,14 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
|
|
|
153
153
|
}, {
|
|
154
154
|
key: "_getBoundingBoxCenter",
|
|
155
155
|
value: function _getBoundingBoxCenter(object) {
|
|
156
|
+
var _object$userData;
|
|
157
|
+
// Special case: if this is a multi-selection group, use its position directly
|
|
158
|
+
// (it's an empty group positioned at the centroid, so no need to calculate bounding box)
|
|
159
|
+
if ((_object$userData = object.userData) !== null && _object$userData !== void 0 && _object$userData.isMultiSelectionGroup) {
|
|
160
|
+
var worldPos = new THREE.Vector3();
|
|
161
|
+
object.getWorldPosition(worldPos);
|
|
162
|
+
return worldPos;
|
|
163
|
+
}
|
|
156
164
|
var boundingBox = new THREE.Box3();
|
|
157
165
|
|
|
158
166
|
// Set from object, which calculates world bounding box
|
|
@@ -161,9 +169,9 @@ var transformControls = /*#__PURE__*/function (_THREE$Object3D) {
|
|
|
161
169
|
// If bounding box is empty or invalid, fall back to object position
|
|
162
170
|
if (boundingBox.isEmpty()) {
|
|
163
171
|
console.warn('transformControls: Bounding box is empty, using object position');
|
|
164
|
-
var
|
|
165
|
-
object.getWorldPosition(
|
|
166
|
-
return
|
|
172
|
+
var _worldPos = new THREE.Vector3();
|
|
173
|
+
object.getWorldPosition(_worldPos);
|
|
174
|
+
return _worldPos;
|
|
167
175
|
}
|
|
168
176
|
var center = new THREE.Vector3();
|
|
169
177
|
boundingBox.getCenter(center);
|