@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,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 || !((_connector$userData = connector.userData) !== null && _connector$userData !== void 0 && _connector$userData.isManualSegmentConnector)) {
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
- // Export manual segments (isPipeSegment)
129
- var isManualSegment = (_threeObject$userData7 = threeObject.userData) === null || _threeObject$userData7 === void 0 ? void 0 : _threeObject$userData7.isPipeSegment;
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$userData8 = threeObject.userData) !== null && _threeObject$userData8 !== void 0 && _threeObject$userData8.objectType) && !isManualSegment) {
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$userData9 = threeObject.userData) === null || _threeObject$userData9 === void 0 ? void 0 : _threeObject$userData9.objectType) === 'gateway';
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) !== null && _child$userData !== void 0 && _child$userData.isManualSegmentConnector) {
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) !== null && _child$userData2 !== void 0 && _child$userData2.isPipeSegment) {
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
  });