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