@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
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { inherits as _inherits, createClass as _createClass, classCallCheck as _classCallCheck, callSuper as _callSuper } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { BaseDisposable } from '../../core/baseDisposable.js';
|
|
3
|
+
|
|
4
|
+
var AnimationManager = /*#__PURE__*/function (_BaseDisposable) {
|
|
5
|
+
function AnimationManager(sceneViewer) {
|
|
6
|
+
var _this;
|
|
7
|
+
_classCallCheck(this, AnimationManager);
|
|
8
|
+
_this = _callSuper(this, AnimationManager); // Initialize BaseDisposable
|
|
9
|
+
_this.sceneViewer = sceneViewer;
|
|
10
|
+
_this.lastFrameTime = 0;
|
|
11
|
+
_this.targetFPS = 60;
|
|
12
|
+
_this.frameInterval = 1000 / _this.targetFPS;
|
|
13
|
+
_this.animationId = null;
|
|
14
|
+
return _this;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Start the animation loop
|
|
19
|
+
*/
|
|
20
|
+
_inherits(AnimationManager, _BaseDisposable);
|
|
21
|
+
return _createClass(AnimationManager, [{
|
|
22
|
+
key: "startAnimation",
|
|
23
|
+
value: function startAnimation() {
|
|
24
|
+
var _this2 = this;
|
|
25
|
+
var sceneViewer = this.sceneViewer;
|
|
26
|
+
var _loop = function loop(currentTime) {
|
|
27
|
+
// Check if sceneViewer is destroyed to prevent memory leaks
|
|
28
|
+
if (sceneViewer.isDestroyed) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
_this2.animationId = requestAnimationFrame(_loop);
|
|
32
|
+
// Register animation frame for automatic cleanup
|
|
33
|
+
_this2.registerAnimationFrame(_this2.animationId);
|
|
34
|
+
if (currentTime - _this2.lastFrameTime < _this2.frameInterval) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
_this2.lastFrameTime = currentTime;
|
|
38
|
+
|
|
39
|
+
// Check again before updating in case sceneViewer was destroyed during frame
|
|
40
|
+
if (sceneViewer.isDestroyed || !sceneViewer.controls || !sceneViewer.renderer || !sceneViewer.scene || !sceneViewer.camera) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
_this2.updateFrame();
|
|
44
|
+
};
|
|
45
|
+
_loop(0);
|
|
46
|
+
console.log('Animation loop started');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Update a single frame
|
|
51
|
+
*/
|
|
52
|
+
}, {
|
|
53
|
+
key: "updateFrame",
|
|
54
|
+
value: function updateFrame() {
|
|
55
|
+
var sceneViewer = this.sceneViewer;
|
|
56
|
+
|
|
57
|
+
// Begin performance monitoring frame
|
|
58
|
+
if (sceneViewer.performanceMonitorManager) {
|
|
59
|
+
sceneViewer.performanceMonitorManager.beginFrame();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Update controls
|
|
63
|
+
sceneViewer.controls.update();
|
|
64
|
+
|
|
65
|
+
// Render the scene
|
|
66
|
+
sceneViewer.renderer.render(sceneViewer.scene, sceneViewer.camera);
|
|
67
|
+
|
|
68
|
+
// Render tooltips if tooltipsManager exists
|
|
69
|
+
if (sceneViewer.tooltipsManager) {
|
|
70
|
+
sceneViewer.tooltipsManager.render();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// End performance monitoring frame
|
|
74
|
+
if (sceneViewer.performanceMonitorManager) {
|
|
75
|
+
sceneViewer.performanceMonitorManager.endFrame();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Stop the animation loop
|
|
81
|
+
*/
|
|
82
|
+
}, {
|
|
83
|
+
key: "stopAnimation",
|
|
84
|
+
value: function stopAnimation() {
|
|
85
|
+
if (this.animationId) {
|
|
86
|
+
cancelAnimationFrame(this.animationId);
|
|
87
|
+
this.animationId = null;
|
|
88
|
+
console.log('Animation loop stopped');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Set target FPS for the animation loop
|
|
94
|
+
*/
|
|
95
|
+
}, {
|
|
96
|
+
key: "setTargetFPS",
|
|
97
|
+
value: function setTargetFPS(fps) {
|
|
98
|
+
this.targetFPS = fps;
|
|
99
|
+
this.frameInterval = 1000 / this.targetFPS;
|
|
100
|
+
console.log("Target FPS set to: ".concat(fps));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Get current FPS information - fallback implementation
|
|
105
|
+
*/
|
|
106
|
+
}, {
|
|
107
|
+
key: "getCurrentFPS",
|
|
108
|
+
value: function getCurrentFPS() {
|
|
109
|
+
// Return a basic FPS calculation based on animation frame timing
|
|
110
|
+
var now = performance.now();
|
|
111
|
+
if (this.lastFrameTime) {
|
|
112
|
+
var deltaTime = now - this.lastFrameTime;
|
|
113
|
+
return Math.round(1000 / deltaTime);
|
|
114
|
+
}
|
|
115
|
+
this.lastFrameTime = now;
|
|
116
|
+
return 60; // Default fallback
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Cleanup animation resources
|
|
121
|
+
* Override _doDispose for custom cleanup - called automatically by BaseDisposable
|
|
122
|
+
*/
|
|
123
|
+
}, {
|
|
124
|
+
key: "_doDispose",
|
|
125
|
+
value: function _doDispose() {
|
|
126
|
+
// Stop animations first
|
|
127
|
+
this.stopAnimation();
|
|
128
|
+
|
|
129
|
+
// Reset simple properties
|
|
130
|
+
this.lastFrameTime = 0;
|
|
131
|
+
|
|
132
|
+
// BaseDisposable will automatically:
|
|
133
|
+
// 1. Cancel registered animation frames
|
|
134
|
+
// 2. Log disposal completion with class name
|
|
135
|
+
// 3. Handle errors gracefully
|
|
136
|
+
// 4. Set _isDisposed flag
|
|
137
|
+
}
|
|
138
|
+
}]);
|
|
139
|
+
}(BaseDisposable);
|
|
140
|
+
|
|
141
|
+
export { AnimationManager };
|
|
@@ -20,7 +20,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
20
20
|
key: "convertSegmentConnectorToJson",
|
|
21
21
|
value: function convertSegmentConnectorToJson(connector, segment) {
|
|
22
22
|
var _connector$userData;
|
|
23
|
-
if (!connector ||
|
|
23
|
+
if (!connector || ((_connector$userData = connector.userData) === null || _connector$userData === void 0 ? void 0 : _connector$userData.objectType) !== 'segment-connector') {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -38,7 +38,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
38
38
|
return {
|
|
39
39
|
uuid: connector.uuid,
|
|
40
40
|
userData: {
|
|
41
|
-
objectType: 'connector'
|
|
41
|
+
objectType: 'segment-connector'
|
|
42
42
|
},
|
|
43
43
|
position: {
|
|
44
44
|
x: roundIfClose(localPosition.x),
|
|
@@ -79,7 +79,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
79
79
|
|
|
80
80
|
// Helper function to convert Three.js object to minimal JSON format
|
|
81
81
|
var convertObjectToJson = function convertObjectToJson(threeObject) {
|
|
82
|
-
var _threeObject$name, _threeObject$userData, _threeObject$userData2, _threeObject$userData3, _threeObject$userData4, _threeObject$userData5, _threeObject$userData6, _threeObject$userData7, _threeObject$userData8, _threeObject$userData9;
|
|
82
|
+
var _threeObject$name, _threeObject$userData, _threeObject$userData2, _threeObject$userData3, _threeObject$userData4, _threeObject$userData5, _threeObject$userData6, _threeObject$userData7, _threeObject$userData8, _threeObject$userData9, _threeObject$userData0, _threeObject$userData1, _threeObject$userData10;
|
|
83
83
|
// Skip certain objects that shouldn't be exported
|
|
84
84
|
if (!threeObject || (_threeObject$name = threeObject.name) !== null && _threeObject$name !== void 0 && _threeObject$name.includes('Polyline') ||
|
|
85
85
|
// Skip pipe paths
|
|
@@ -103,11 +103,16 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
103
103
|
return null;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
//
|
|
107
|
-
|
|
106
|
+
// Skip computed segments (auto-generated), only export DECLARED/MANUAL segments
|
|
107
|
+
if (((_threeObject$userData7 = threeObject.userData) === null || _threeObject$userData7 === void 0 ? void 0 : _threeObject$userData7.objectType) === 'segment' && ((_threeObject$userData8 = threeObject.userData) === null || _threeObject$userData8 === void 0 ? void 0 : _threeObject$userData8.isDeclared) === false) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Export manual segments (with isDeclared === true)
|
|
112
|
+
var isManualSegment = ((_threeObject$userData9 = threeObject.userData) === null || _threeObject$userData9 === void 0 ? void 0 : _threeObject$userData9.objectType) === 'segment' && ((_threeObject$userData0 = threeObject.userData) === null || _threeObject$userData0 === void 0 ? void 0 : _threeObject$userData0.isDeclared) === true;
|
|
108
113
|
|
|
109
114
|
// Only export objects with objectType (components, connectors, gateways) OR manual segments
|
|
110
|
-
if (!((_threeObject$
|
|
115
|
+
if (!((_threeObject$userData1 = threeObject.userData) !== null && _threeObject$userData1 !== void 0 && _threeObject$userData1.objectType) && !isManualSegment) {
|
|
111
116
|
return null;
|
|
112
117
|
}
|
|
113
118
|
|
|
@@ -134,8 +139,6 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
134
139
|
'name',
|
|
135
140
|
// Redundant with GLB node names - not in input format
|
|
136
141
|
// Exclude internal segment tracking properties
|
|
137
|
-
'isPipeSegment',
|
|
138
|
-
// Internal flag
|
|
139
142
|
'segmentId',
|
|
140
143
|
// Internal tracking
|
|
141
144
|
'segmentIndex',
|
|
@@ -144,8 +147,6 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
144
147
|
// Internal tracking
|
|
145
148
|
'pathTo',
|
|
146
149
|
// Internal tracking
|
|
147
|
-
'pathIndex',
|
|
148
|
-
// Internal tracking
|
|
149
150
|
'manualConnectors',
|
|
150
151
|
// Internal tracking
|
|
151
152
|
'isManualSegmentConnector',
|
|
@@ -199,7 +200,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
199
200
|
};
|
|
200
201
|
|
|
201
202
|
// Skip rotation for gateways (they're just routing points)
|
|
202
|
-
var isGateway = ((_threeObject$
|
|
203
|
+
var isGateway = ((_threeObject$userData10 = threeObject.userData) === null || _threeObject$userData10 === void 0 ? void 0 : _threeObject$userData10.objectType) === 'gateway';
|
|
203
204
|
if (!isGateway) {
|
|
204
205
|
jsonObject.rotation = {
|
|
205
206
|
x: roundIfClose(threeObject.rotation.x * (180 / Math.PI)),
|
|
@@ -217,7 +218,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
217
218
|
// For manual segments, export their connector children
|
|
218
219
|
threeObject.children.forEach(function (child) {
|
|
219
220
|
var _child$userData;
|
|
220
|
-
if ((_child$userData = child.userData)
|
|
221
|
+
if (((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.objectType) === 'segment-connector') {
|
|
221
222
|
// Call the class method using bound reference
|
|
222
223
|
var connectorJson = convertSegmentConnectorToJson(child, threeObject);
|
|
223
224
|
if (connectorJson) {
|
|
@@ -245,7 +246,7 @@ var SceneExportManager = /*#__PURE__*/function () {
|
|
|
245
246
|
object.traverse(function (child) {
|
|
246
247
|
var _child$userData2;
|
|
247
248
|
// Check if this is a manual segment
|
|
248
|
-
if ((_child$userData2 = child.userData)
|
|
249
|
+
if (((_child$userData2 = child.userData) === null || _child$userData2 === void 0 ? void 0 : _child$userData2.objectType) === 'segment') {
|
|
249
250
|
manualSegments.push(child);
|
|
250
251
|
}
|
|
251
252
|
});
|