@2112-lab/central-plant 0.1.4 → 0.1.6
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 +33146 -1
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
- package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
- package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
- package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
- package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
- package/dist/cjs/src/analysis/analysis.js +560 -1
- package/dist/cjs/src/analysis/testing.js +958 -1
- package/dist/cjs/src/core/centralPlant.js +1149 -1
- package/dist/cjs/src/core/debugLogger.js +175 -1
- package/dist/cjs/src/core/mathUtils.js +574 -1
- package/dist/cjs/src/core/nameUtils.js +93 -1
- package/dist/cjs/src/data/export.js +716 -1
- package/dist/cjs/src/data/import.js +380 -1
- package/dist/cjs/src/data/numerics.js +522 -1
- package/dist/cjs/src/helpers/sceneHelper.js +572 -1
- package/dist/cjs/src/index.js +69 -1
- package/dist/cjs/src/managers/components/animationManager.js +123 -1
- package/dist/cjs/src/managers/components/componentManager.js +332 -1
- package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
- package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
- package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
- package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
- package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
- package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
- package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
- package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
- package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
- package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
- package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
- package/dist/cjs/src/managers/system/disposalManager.js +444 -1
- package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
- package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
- package/dist/cjs/src/rendering/modelPreloader.js +369 -1
- package/dist/cjs/src/rendering/rendering2D.js +631 -1
- package/dist/cjs/src/rendering/rendering3D.js +685 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
- package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
- package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
- package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
- package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
- package/dist/esm/src/analysis/analysis.js +536 -1
- package/dist/esm/src/analysis/testing.js +954 -1
- package/dist/esm/src/core/centralPlant.js +1144 -1
- package/dist/esm/src/core/debugLogger.js +167 -1
- package/dist/esm/src/core/mathUtils.js +570 -1
- package/dist/esm/src/core/nameUtils.js +87 -1
- package/dist/esm/src/data/export.js +712 -1
- package/dist/esm/src/data/import.js +356 -1
- package/dist/esm/src/data/numerics.js +518 -1
- package/dist/esm/src/helpers/sceneHelper.js +547 -1
- package/dist/esm/src/index.js +35 -1
- package/dist/esm/src/managers/components/animationManager.js +119 -1
- package/dist/esm/src/managers/components/componentManager.js +328 -1
- package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
- package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
- package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
- package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
- package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
- package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
- package/dist/esm/src/managers/environment/environmentManager.js +690 -1
- package/dist/esm/src/managers/environment/textureConfig.js +202 -1
- package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
- package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
- package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
- package/dist/esm/src/managers/system/disposalManager.js +440 -1
- package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
- package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
- package/dist/esm/src/rendering/modelPreloader.js +364 -1
- package/dist/esm/src/rendering/rendering2D.js +627 -1
- package/dist/esm/src/rendering/rendering3D.js +661 -1
- package/package.json +1 -1
|
@@ -1 +1,444 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Disposal Manager Class
|
|
9
|
+
* Handles comprehensive cleanup and disposal of Three.js resources
|
|
10
|
+
*/
|
|
11
|
+
var DisposalManager = /*#__PURE__*/function () {
|
|
12
|
+
function DisposalManager(sceneViewer) {
|
|
13
|
+
_rollupPluginBabelHelpers.classCallCheck(this, DisposalManager);
|
|
14
|
+
this.sceneViewer = sceneViewer;
|
|
15
|
+
this.isDev = process.env.NODE_ENV === 'development';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Enhanced disposal system with hot-reload support
|
|
20
|
+
*/
|
|
21
|
+
return _rollupPluginBabelHelpers.createClass(DisposalManager, [{
|
|
22
|
+
key: "enhancedDisposal",
|
|
23
|
+
value: (function () {
|
|
24
|
+
var _enhancedDisposal = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee() {
|
|
25
|
+
var _window$_sceneViewerI, _window$_sceneViewerI2;
|
|
26
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context) {
|
|
27
|
+
while (1) switch (_context.n) {
|
|
28
|
+
case 0:
|
|
29
|
+
if (this.isDev) {
|
|
30
|
+
console.log('🔄 [Hot-Reload] Starting enhanced disposal...', {
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
instanceId: this.sceneViewer.instanceId,
|
|
33
|
+
totalInstances: ((_window$_sceneViewerI = window._sceneViewerInstances) === null || _window$_sceneViewerI === void 0 ? void 0 : _window$_sceneViewerI.size) || 0
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Immediately stop all operations
|
|
38
|
+
this.forceStopOperations();
|
|
39
|
+
|
|
40
|
+
// Enhanced scene cleanup
|
|
41
|
+
_context.n = 1;
|
|
42
|
+
return this.enhancedSceneCleanup();
|
|
43
|
+
case 1:
|
|
44
|
+
// Enhanced renderer cleanup
|
|
45
|
+
this.enhancedRendererCleanup();
|
|
46
|
+
|
|
47
|
+
// Clear any pending operations (delegate to hot reload manager)
|
|
48
|
+
if (this.sceneViewer.hotReloadManager) {
|
|
49
|
+
this.sceneViewer.hotReloadManager.clearPendingOperations();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Development garbage collection hint
|
|
53
|
+
if (this.isDev) {
|
|
54
|
+
if (this.sceneViewer.hotReloadManager) {
|
|
55
|
+
this.sceneViewer.hotReloadManager.forceGarbageCollectionHint();
|
|
56
|
+
}
|
|
57
|
+
console.log('✅ [Hot-Reload] Enhanced disposal completed', {
|
|
58
|
+
timestamp: Date.now(),
|
|
59
|
+
instanceId: this.sceneViewer.instanceId,
|
|
60
|
+
remainingInstances: ((_window$_sceneViewerI2 = window._sceneViewerInstances) === null || _window$_sceneViewerI2 === void 0 ? void 0 : _window$_sceneViewerI2.size) || 0
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
case 2:
|
|
64
|
+
return _context.a(2);
|
|
65
|
+
}
|
|
66
|
+
}, _callee, this);
|
|
67
|
+
}));
|
|
68
|
+
function enhancedDisposal() {
|
|
69
|
+
return _enhancedDisposal.apply(this, arguments);
|
|
70
|
+
}
|
|
71
|
+
return enhancedDisposal;
|
|
72
|
+
}()
|
|
73
|
+
/**
|
|
74
|
+
* Force stop all ongoing operations immediately
|
|
75
|
+
*/
|
|
76
|
+
)
|
|
77
|
+
}, {
|
|
78
|
+
key: "forceStopOperations",
|
|
79
|
+
value: function forceStopOperations() {
|
|
80
|
+
this.sceneViewer.isDestroyed = true;
|
|
81
|
+
this.sceneViewer.isLoading = false;
|
|
82
|
+
this.sceneViewer.currentTransition = null;
|
|
83
|
+
|
|
84
|
+
// Stop any ongoing animations
|
|
85
|
+
if (this.sceneViewer.animationId) {
|
|
86
|
+
cancelAnimationFrame(this.sceneViewer.animationId);
|
|
87
|
+
this.sceneViewer.animationId = null;
|
|
88
|
+
}
|
|
89
|
+
if (this.isDev) {
|
|
90
|
+
console.log('🛑 [Hot-Reload] Forced stop of all operations');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Enhanced scene cleanup with better memory leak prevention
|
|
96
|
+
*/
|
|
97
|
+
}, {
|
|
98
|
+
key: "enhancedSceneCleanup",
|
|
99
|
+
value: (function () {
|
|
100
|
+
var _enhancedSceneCleanup = _rollupPluginBabelHelpers.asyncToGenerator(/*#__PURE__*/_rollupPluginBabelHelpers.regenerator().m(function _callee2() {
|
|
101
|
+
var _this = this;
|
|
102
|
+
var disposedCount;
|
|
103
|
+
return _rollupPluginBabelHelpers.regenerator().w(function (_context2) {
|
|
104
|
+
while (1) switch (_context2.n) {
|
|
105
|
+
case 0:
|
|
106
|
+
disposedCount = {
|
|
107
|
+
textures: 0,
|
|
108
|
+
materials: 0,
|
|
109
|
+
geometries: 0,
|
|
110
|
+
objects: 0
|
|
111
|
+
};
|
|
112
|
+
if (this.sceneViewer.scene) {
|
|
113
|
+
// Dispose in proper order: textures → materials → geometries → objects
|
|
114
|
+
this.sceneViewer.scene.traverse(function (child) {
|
|
115
|
+
if (child.material) {
|
|
116
|
+
if (Array.isArray(child.material)) {
|
|
117
|
+
child.material.forEach(function (material) {
|
|
118
|
+
disposedCount.textures += _this.disposeMaterialTextures(material);
|
|
119
|
+
material.dispose();
|
|
120
|
+
disposedCount.materials++;
|
|
121
|
+
});
|
|
122
|
+
} else {
|
|
123
|
+
disposedCount.textures += _this.disposeMaterialTextures(child.material);
|
|
124
|
+
child.material.dispose();
|
|
125
|
+
disposedCount.materials++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (child.geometry) {
|
|
129
|
+
child.geometry.dispose();
|
|
130
|
+
disposedCount.geometries++;
|
|
131
|
+
}
|
|
132
|
+
disposedCount.objects++;
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
// Clear scene
|
|
136
|
+
while (this.sceneViewer.scene.children.length > 0) {
|
|
137
|
+
this.sceneViewer.scene.remove(this.sceneViewer.scene.children[0]);
|
|
138
|
+
}
|
|
139
|
+
if (this.isDev) {
|
|
140
|
+
console.log('🧹 [Hot-Reload] Enhanced scene cleanup completed:', disposedCount);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
case 1:
|
|
144
|
+
return _context2.a(2);
|
|
145
|
+
}
|
|
146
|
+
}, _callee2, this);
|
|
147
|
+
}));
|
|
148
|
+
function enhancedSceneCleanup() {
|
|
149
|
+
return _enhancedSceneCleanup.apply(this, arguments);
|
|
150
|
+
}
|
|
151
|
+
return enhancedSceneCleanup;
|
|
152
|
+
}()
|
|
153
|
+
/**
|
|
154
|
+
* Dispose material textures and return count
|
|
155
|
+
*/
|
|
156
|
+
)
|
|
157
|
+
}, {
|
|
158
|
+
key: "disposeMaterialTextures",
|
|
159
|
+
value: function disposeMaterialTextures(material) {
|
|
160
|
+
var textureCount = 0;
|
|
161
|
+
var textureProperties = ['map', 'normalMap', 'roughnessMap', 'metalnessMap', 'envMap', 'lightMap', 'bumpMap', 'specularMap'];
|
|
162
|
+
textureProperties.forEach(function (prop) {
|
|
163
|
+
if (material[prop]) {
|
|
164
|
+
material[prop].dispose();
|
|
165
|
+
textureCount++;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return textureCount;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Enhanced renderer cleanup with WebGL state clearing
|
|
173
|
+
*/
|
|
174
|
+
}, {
|
|
175
|
+
key: "enhancedRendererCleanup",
|
|
176
|
+
value: function enhancedRendererCleanup() {
|
|
177
|
+
if (this.sceneViewer.renderer) {
|
|
178
|
+
// Clear WebGL state
|
|
179
|
+
var gl = this.sceneViewer.renderer.getContext();
|
|
180
|
+
if (gl && typeof gl.getExtension === 'function') {
|
|
181
|
+
// Force WebGL context loss to free memory
|
|
182
|
+
var loseContext = gl.getExtension('WEBGL_lose_context');
|
|
183
|
+
if (loseContext) {
|
|
184
|
+
loseContext.loseContext();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Standard renderer disposal
|
|
189
|
+
this.sceneViewer.renderer.dispose();
|
|
190
|
+
this.sceneViewer.renderer.forceContextLoss();
|
|
191
|
+
this.sceneViewer.renderer = null;
|
|
192
|
+
if (this.isDev) {
|
|
193
|
+
console.log('🎮 [Hot-Reload] Enhanced renderer cleanup with WebGL state clearing');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Clean up scene objects with material and geometry disposal
|
|
200
|
+
*/
|
|
201
|
+
}, {
|
|
202
|
+
key: "cleanupScene",
|
|
203
|
+
value: function cleanupScene() {
|
|
204
|
+
var _this2 = this;
|
|
205
|
+
if (!this.sceneViewer.scene) return;
|
|
206
|
+
console.log('🗑️ Disposing scene objects...');
|
|
207
|
+
|
|
208
|
+
// Collect all objects to dispose
|
|
209
|
+
var objectsToDispose = [];
|
|
210
|
+
this.sceneViewer.scene.traverse(function (object) {
|
|
211
|
+
objectsToDispose.push(object);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// Dispose objects in reverse order (children first)
|
|
215
|
+
var _loop = function _loop() {
|
|
216
|
+
var object = objectsToDispose[i];
|
|
217
|
+
|
|
218
|
+
// Dispose geometry
|
|
219
|
+
if (object.geometry) {
|
|
220
|
+
object.geometry.dispose();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Dispose materials
|
|
224
|
+
if (object.material) {
|
|
225
|
+
if (Array.isArray(object.material)) {
|
|
226
|
+
object.material.forEach(function (material) {
|
|
227
|
+
return _this2.disposeMaterial(material);
|
|
228
|
+
});
|
|
229
|
+
} else {
|
|
230
|
+
_this2.disposeMaterial(object.material);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Dispose textures on lights and other objects
|
|
235
|
+
var textureProperties = ['map', 'lightMap', 'bumpMap', 'normalMap', 'specularMap', 'envMap'];
|
|
236
|
+
textureProperties.forEach(function (prop) {
|
|
237
|
+
if (object[prop]) object[prop].dispose();
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Remove from parent
|
|
241
|
+
if (object.parent) {
|
|
242
|
+
object.parent.remove(object);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
for (var i = objectsToDispose.length - 1; i >= 0; i--) {
|
|
246
|
+
_loop();
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Dispose scene environment and background
|
|
250
|
+
if (this.sceneViewer.scene.environment) {
|
|
251
|
+
this.sceneViewer.scene.environment.dispose();
|
|
252
|
+
this.sceneViewer.scene.environment = null;
|
|
253
|
+
}
|
|
254
|
+
if (this.sceneViewer.scene.background && this.sceneViewer.scene.background.dispose) {
|
|
255
|
+
this.sceneViewer.scene.background.dispose();
|
|
256
|
+
this.sceneViewer.scene.background = null;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Clear scene
|
|
260
|
+
this.sceneViewer.scene.clear();
|
|
261
|
+
this.sceneViewer.scene = null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Dispose a material and its textures
|
|
266
|
+
*/
|
|
267
|
+
}, {
|
|
268
|
+
key: "disposeMaterial",
|
|
269
|
+
value: function disposeMaterial(material) {
|
|
270
|
+
// Dispose all texture properties
|
|
271
|
+
for (var _i = 0, _Object$entries = Object.entries(material); _i < _Object$entries.length; _i++) {
|
|
272
|
+
var _Object$entries$_i = _rollupPluginBabelHelpers.slicedToArray(_Object$entries[_i], 2);
|
|
273
|
+
_Object$entries$_i[0];
|
|
274
|
+
var value = _Object$entries$_i[1];
|
|
275
|
+
if (value && _rollupPluginBabelHelpers["typeof"](value) === 'object' && typeof value.dispose === 'function') {
|
|
276
|
+
value.dispose();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
material.dispose();
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Clean up renderer resources
|
|
284
|
+
*/
|
|
285
|
+
}, {
|
|
286
|
+
key: "cleanupRenderer",
|
|
287
|
+
value: function cleanupRenderer() {
|
|
288
|
+
if (this.sceneViewer.renderer) {
|
|
289
|
+
// Remove renderer DOM element
|
|
290
|
+
if (this.sceneViewer.renderer.domElement && this.sceneViewer.renderer.domElement.parentNode) {
|
|
291
|
+
this.sceneViewer.renderer.domElement.parentNode.removeChild(this.sceneViewer.renderer.domElement);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Dispose renderer resources
|
|
295
|
+
this.sceneViewer.renderer.dispose();
|
|
296
|
+
this.sceneViewer.renderer.forceContextLoss();
|
|
297
|
+
this.sceneViewer.renderer = null;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Clean up controls
|
|
303
|
+
*/
|
|
304
|
+
}, {
|
|
305
|
+
key: "cleanupControls",
|
|
306
|
+
value: function cleanupControls() {
|
|
307
|
+
if (this.sceneViewer.controls) {
|
|
308
|
+
this.sceneViewer.controls.dispose();
|
|
309
|
+
this.sceneViewer.controls = null;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Clean up event listeners
|
|
315
|
+
*/
|
|
316
|
+
}, {
|
|
317
|
+
key: "cleanupEventListeners",
|
|
318
|
+
value: function cleanupEventListeners() {
|
|
319
|
+
if (this.sceneViewer.handleResize) {
|
|
320
|
+
window.removeEventListener('resize', this.sceneViewer.handleResize);
|
|
321
|
+
this.sceneViewer.handleResize = null;
|
|
322
|
+
}
|
|
323
|
+
if (this.sceneViewer.resizeObserver) {
|
|
324
|
+
this.sceneViewer.resizeObserver.disconnect();
|
|
325
|
+
this.sceneViewer.resizeObserver = null;
|
|
326
|
+
}
|
|
327
|
+
if (this.sceneViewer.handleKeyDown) {
|
|
328
|
+
window.removeEventListener('keydown', this.sceneViewer.handleKeyDown);
|
|
329
|
+
this.sceneViewer.handleKeyDown = null;
|
|
330
|
+
}
|
|
331
|
+
if (window._performanceKeyHandler) {
|
|
332
|
+
window.removeEventListener('keydown', window._performanceKeyHandler);
|
|
333
|
+
delete window._performanceKeyHandler;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Clean up performance monitoring
|
|
339
|
+
*/
|
|
340
|
+
}, {
|
|
341
|
+
key: "cleanupPerformanceMonitoring",
|
|
342
|
+
value: function cleanupPerformanceMonitoring() {
|
|
343
|
+
console.log('🧹 Cleaning up performance monitoring...');
|
|
344
|
+
if (this.sceneViewer.performanceMonitor) {
|
|
345
|
+
try {
|
|
346
|
+
this.sceneViewer.performanceMonitor.stop();
|
|
347
|
+
} catch (error) {
|
|
348
|
+
console.warn('⚠️ Error stopping performance monitor:', error);
|
|
349
|
+
}
|
|
350
|
+
this.sceneViewer.performanceMonitor = null;
|
|
351
|
+
}
|
|
352
|
+
if (this.sceneViewer.performanceUI) {
|
|
353
|
+
try {
|
|
354
|
+
// Use dispose() method for proper cleanup instead of hide()
|
|
355
|
+
if (typeof this.sceneViewer.performanceUI.dispose === 'function') {
|
|
356
|
+
this.sceneViewer.performanceUI.dispose();
|
|
357
|
+
} else {
|
|
358
|
+
// Fallback to hide() if dispose() doesn't exist
|
|
359
|
+
console.warn('⚠️ PerformanceUI dispose() method not available, falling back to hide()');
|
|
360
|
+
this.sceneViewer.performanceUI.hide();
|
|
361
|
+
}
|
|
362
|
+
} catch (error) {
|
|
363
|
+
console.warn('⚠️ Error disposing performance UI:', error);
|
|
364
|
+
}
|
|
365
|
+
this.sceneViewer.performanceUI = null;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// Additional cleanup: remove any stray performance monitor elements
|
|
369
|
+
try {
|
|
370
|
+
var strayElements = document.querySelectorAll('#performance-monitor-ui');
|
|
371
|
+
if (strayElements.length > 0) {
|
|
372
|
+
console.log("\uD83E\uDDF9 Found ".concat(strayElements.length, " stray performance monitor elements, removing..."));
|
|
373
|
+
strayElements.forEach(function (element) {
|
|
374
|
+
if (element.parentNode) {
|
|
375
|
+
element.parentNode.removeChild(element);
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
} catch (error) {
|
|
380
|
+
console.warn('⚠️ Error cleaning up stray performance monitor elements:', error);
|
|
381
|
+
}
|
|
382
|
+
console.log('✅ Performance monitoring cleanup completed');
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Clean up global references
|
|
386
|
+
*/
|
|
387
|
+
}, {
|
|
388
|
+
key: "cleanupGlobalReferences",
|
|
389
|
+
value: function cleanupGlobalReferences() {
|
|
390
|
+
console.log('🧹 Cleaning up global references...');
|
|
391
|
+
var parent = this.parent;
|
|
392
|
+
|
|
393
|
+
// Check if parent exists before proceeding
|
|
394
|
+
if (!parent) {
|
|
395
|
+
console.warn('⚠️ Parent not available for global references cleanup');
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// Clean up tooltips manager with extra safety
|
|
400
|
+
if (parent.tooltipsManager) {
|
|
401
|
+
try {
|
|
402
|
+
console.log('🧹 Disposing tooltipsManager...');
|
|
403
|
+
parent.tooltipsManager.dispose();
|
|
404
|
+
} catch (e) {
|
|
405
|
+
console.error('Error disposing tooltipsManager:', e);
|
|
406
|
+
} finally {
|
|
407
|
+
// Always null the reference even if dispose fails
|
|
408
|
+
parent.tooltipsManager = null;
|
|
409
|
+
console.log('✅ tooltipsManager nullified');
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Clean up other managers - now safe since we checked parent exists
|
|
414
|
+
parent.hotReloadManager = null;
|
|
415
|
+
parent.sceneExportManager = null;
|
|
416
|
+
parent.componentManager = null;
|
|
417
|
+
parent.sceneInitializationManager = null;
|
|
418
|
+
parent.environmentManager = null;
|
|
419
|
+
parent.keyboardControlsManager = null;
|
|
420
|
+
parent.pathfindingManager = null;
|
|
421
|
+
parent.sceneOperationsManager = null;
|
|
422
|
+
parent.animationManager = null;
|
|
423
|
+
parent.cameraControlsManager = null;
|
|
424
|
+
|
|
425
|
+
// Set disposal manager to null last
|
|
426
|
+
parent.disposalManager = null;
|
|
427
|
+
console.log('✅ Global references cleaned up');
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Clean up Nuxt event listeners
|
|
432
|
+
*/
|
|
433
|
+
}, {
|
|
434
|
+
key: "cleanupNuxtEventListeners",
|
|
435
|
+
value: function cleanupNuxtEventListeners() {
|
|
436
|
+
if (window.$nuxt && window.$nuxt.$off) {
|
|
437
|
+
window.$nuxt.$off('loadNewScene');
|
|
438
|
+
window.$nuxt.$off('createNewScene');
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}]);
|
|
442
|
+
}();
|
|
443
|
+
|
|
444
|
+
exports.DisposalManager = DisposalManager;
|