@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.
Files changed (45) hide show
  1. package/dist/bundle/index.js +7991 -7054
  2. package/dist/cjs/src/core/centralPlant.js +48 -3
  3. package/dist/cjs/src/core/centralPlantInternals.js +75 -566
  4. package/dist/cjs/src/core/sceneViewer.js +38 -13
  5. package/dist/cjs/src/index.js +6 -4
  6. package/dist/cjs/src/managers/components/pathfindingManager.js +75 -60
  7. package/dist/cjs/src/managers/components/transformOperationsManager.js +929 -0
  8. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +57 -1
  9. package/dist/cjs/src/managers/controls/transformControls.js +11 -3
  10. package/dist/cjs/src/managers/controls/transformControlsManager.js +563 -263
  11. package/dist/cjs/src/managers/pathfinding/ConnectorManager.js +385 -0
  12. package/dist/cjs/src/managers/pathfinding/PathIntersectionDetector.js +387 -0
  13. package/dist/cjs/src/managers/pathfinding/PathRenderingManager.js +401 -0
  14. package/dist/cjs/src/managers/pathfinding/pathfindingManager.js +378 -0
  15. package/dist/cjs/src/managers/pathfinding/sceneDataManager.js +256 -0
  16. package/dist/cjs/src/managers/scene/animationManager.js +145 -0
  17. package/dist/cjs/src/managers/scene/sceneExportManager.js +14 -13
  18. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +516 -21
  19. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +1 -8
  20. package/dist/cjs/src/managers/system/operationHistoryManager.js +414 -0
  21. package/dist/cjs/src/managers/system/settingsManager.js +2 -1
  22. package/dist/cjs/src/utils/objectTypes.js +5 -7
  23. package/dist/esm/src/core/centralPlant.js +48 -3
  24. package/dist/esm/src/core/centralPlantInternals.js +76 -567
  25. package/dist/esm/src/core/sceneViewer.js +38 -13
  26. package/dist/esm/src/index.js +4 -3
  27. package/dist/esm/src/managers/components/pathfindingManager.js +75 -60
  28. package/dist/esm/src/managers/components/transformOperationsManager.js +904 -0
  29. package/dist/esm/src/managers/controls/keyboardControlsManager.js +57 -1
  30. package/dist/esm/src/managers/controls/transformControls.js +11 -3
  31. package/dist/esm/src/managers/controls/transformControlsManager.js +564 -264
  32. package/dist/esm/src/managers/pathfinding/ConnectorManager.js +361 -0
  33. package/dist/esm/src/managers/pathfinding/PathIntersectionDetector.js +363 -0
  34. package/dist/esm/src/managers/pathfinding/PathRenderingManager.js +377 -0
  35. package/dist/esm/src/managers/pathfinding/pathfindingManager.js +374 -0
  36. package/dist/esm/src/managers/pathfinding/sceneDataManager.js +232 -0
  37. package/dist/esm/src/managers/scene/animationManager.js +141 -0
  38. package/dist/esm/src/managers/scene/sceneExportManager.js +14 -13
  39. package/dist/esm/src/managers/scene/sceneOperationsManager.js +516 -21
  40. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +1 -8
  41. package/dist/esm/src/managers/system/operationHistoryManager.js +409 -0
  42. package/dist/esm/src/managers/system/settingsManager.js +2 -1
  43. package/dist/esm/src/utils/objectTypes.js +5 -7
  44. package/dist/index.d.ts +2 -2
  45. 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 || !((_connector$userData = connector.userData) !== null && _connector$userData !== void 0 && _connector$userData.isManualSegmentConnector)) {
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
- // Export manual segments (isPipeSegment)
107
- var isManualSegment = (_threeObject$userData7 = threeObject.userData) === null || _threeObject$userData7 === void 0 ? void 0 : _threeObject$userData7.isPipeSegment;
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$userData8 = threeObject.userData) !== null && _threeObject$userData8 !== void 0 && _threeObject$userData8.objectType) && !isManualSegment) {
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$userData9 = threeObject.userData) === null || _threeObject$userData9 === void 0 ? void 0 : _threeObject$userData9.objectType) === 'gateway';
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) !== null && _child$userData !== void 0 && _child$userData.isManualSegmentConnector) {
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) !== null && _child$userData2 !== void 0 && _child$userData2.isPipeSegment) {
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
  });