@2112-lab/central-plant 0.1.1 → 0.1.3

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 (55) hide show
  1. package/dist/bundle/index.js +1 -15140
  2. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -353
  3. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1 -0
  4. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1 -1292
  5. package/dist/cjs/node_modules/three/examples/jsm/controls/TransformControls.js +1 -1543
  6. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +1 -4374
  7. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +1 -465
  8. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +1 -117
  9. package/dist/cjs/src/animationManager.js +1 -121
  10. package/dist/cjs/src/componentManager.js +1 -151
  11. package/dist/cjs/src/debugLogger.js +1 -176
  12. package/dist/cjs/src/disposalManager.js +1 -185
  13. package/dist/cjs/src/environmentManager.js +1 -1308
  14. package/dist/cjs/src/hotReloadManager.js +1 -252
  15. package/dist/cjs/src/index.js +1 -128
  16. package/dist/cjs/src/keyboardControlsManager.js +1 -206
  17. package/dist/cjs/src/nameUtils.js +1 -106
  18. package/dist/cjs/src/pathfindingManager.js +1 -321
  19. package/dist/cjs/src/performanceMonitor.js +1 -718
  20. package/dist/cjs/src/sceneExportManager.js +1 -292
  21. package/dist/cjs/src/sceneInitializationManager.js +1 -540
  22. package/dist/cjs/src/textureConfig.js +1 -624
  23. package/dist/cjs/src/transformControlsManager.js +1 -851
  24. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -328
  25. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1 -0
  26. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1 -1287
  27. package/dist/esm/node_modules/three/examples/jsm/controls/TransformControls.js +1 -1537
  28. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +1 -4370
  29. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +1 -461
  30. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +1 -113
  31. package/dist/esm/src/animationManager.js +1 -112
  32. package/dist/esm/src/componentManager.js +1 -123
  33. package/dist/esm/src/debugLogger.js +1 -167
  34. package/dist/esm/src/disposalManager.js +1 -155
  35. package/dist/esm/src/environmentManager.js +1 -1282
  36. package/dist/esm/src/hotReloadManager.js +1 -244
  37. package/dist/esm/src/index.js +1 -118
  38. package/dist/esm/src/keyboardControlsManager.js +1 -196
  39. package/dist/esm/src/nameUtils.js +1 -99
  40. package/dist/esm/src/pathfindingManager.js +1 -295
  41. package/dist/esm/src/performanceMonitor.js +1 -712
  42. package/dist/esm/src/sceneExportManager.js +1 -286
  43. package/dist/esm/src/sceneInitializationManager.js +1 -513
  44. package/dist/esm/src/textureConfig.js +1 -595
  45. package/dist/esm/src/transformControlsManager.js +1 -827
  46. package/dist/index.d.ts +0 -4
  47. package/package.json +1 -1
  48. package/dist/cjs/src/ConnectionManager.js +0 -114
  49. package/dist/cjs/src/Pathfinder.js +0 -88
  50. package/dist/cjs/src/modelPreloader.js +0 -488
  51. package/dist/cjs/src/sceneOperationsManager.js +0 -596
  52. package/dist/esm/src/ConnectionManager.js +0 -110
  53. package/dist/esm/src/Pathfinder.js +0 -84
  54. package/dist/esm/src/modelPreloader.js +0 -464
  55. package/dist/esm/src/sceneOperationsManager.js +0 -572
@@ -1,295 +1 @@
1
- import { createClass as _createClass, classCallCheck as _classCallCheck, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../_virtual/_rollupPluginBabelHelpers.js';
2
- import * as THREE from 'three';
3
- import Pathfinder from './Pathfinder.js';
4
- import { pathfinderLogger } from './debugLogger.js';
5
-
6
- var PathfindingManager = /*#__PURE__*/function () {
7
- function PathfindingManager(component) {
8
- _classCallCheck(this, PathfindingManager);
9
- this.component = component;
10
- this.crosscubeTextureSet = null;
11
- this.pathfinderVersionInfo = null;
12
-
13
- // Initialize pathfinder
14
- this.pathfinder = new Pathfinder(component === null || component === void 0 ? void 0 : component.sceneData);
15
- }
16
-
17
- /**
18
- * Get pathfinder version information
19
- */
20
- return _createClass(PathfindingManager, [{
21
- key: "getPathfinderVersionInfo",
22
- value: (function () {
23
- var _getPathfinderVersionInfo = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
24
- var versionInfo;
25
- return _regenerator().w(function (_context) {
26
- while (1) switch (_context.n) {
27
- case 0:
28
- if (!this.pathfinderVersionInfo) {
29
- _context.n = 1;
30
- break;
31
- }
32
- return _context.a(2, this.pathfinderVersionInfo);
33
- case 1:
34
- versionInfo = {
35
- version: '1.0.15',
36
- detectionMethod: 'hardcoded-fallback',
37
- timestamp: new Date().toISOString()
38
- };
39
- this.pathfinderVersionInfo = versionInfo;
40
- return _context.a(2, versionInfo);
41
- }
42
- }, _callee, this);
43
- }));
44
- function getPathfinderVersionInfo() {
45
- return _getPathfinderVersionInfo.apply(this, arguments);
46
- }
47
- return getPathfinderVersionInfo;
48
- }()
49
- /**
50
- * Log pathfinder version information
51
- */
52
- )
53
- }, {
54
- key: "logPathfinderVersion",
55
- value: (function () {
56
- var _logPathfinderVersion = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
57
- var context,
58
- versionInfo,
59
- _args2 = arguments,
60
- _t;
61
- return _regenerator().w(function (_context2) {
62
- while (1) switch (_context2.n) {
63
- case 0:
64
- context = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 'Unknown Context';
65
- _context2.p = 1;
66
- _context2.n = 2;
67
- return this.getPathfinderVersionInfo();
68
- case 2:
69
- versionInfo = _context2.v;
70
- pathfinderLogger.info("[".concat(context, "] Pathfinder Module Information:"), {
71
- version: versionInfo.version,
72
- detectionMethod: versionInfo.detectionMethod,
73
- context: context,
74
- timestamp: versionInfo.timestamp,
75
- pathfinderInstance: !!this.pathfinder
76
- });
77
- _context2.n = 4;
78
- break;
79
- case 3:
80
- _context2.p = 3;
81
- _t = _context2.v;
82
- pathfinderLogger.error("[".concat(context, "] Failed to get pathfinder version:"), _t);
83
- case 4:
84
- return _context2.a(2);
85
- }
86
- }, _callee2, this, [[1, 3]]);
87
- }));
88
- function logPathfinderVersion() {
89
- return _logPathfinderVersion.apply(this, arguments);
90
- }
91
- return logPathfinderVersion;
92
- }()
93
- /**
94
- * Get path colors for visual distinction
95
- */
96
- )
97
- }, {
98
- key: "getPathColor",
99
- value: function getPathColor(index) {
100
- var colors = ['#468e49', '#245e29', '#2e80d2', '#1d51a1'];
101
- return colors[index % colors.length];
102
- }
103
-
104
- /**
105
- * Initialize pathfinder and create paths
106
- */
107
- }, {
108
- key: "initializePathfinder",
109
- value: (function () {
110
- var _initializePathfinder = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(data, crosscubeTextureSet) {
111
- var _data$scene;
112
- var component, paths;
113
- return _regenerator().w(function (_context3) {
114
- while (1) switch (_context3.n) {
115
- case 0:
116
- if (Pathfinder) {
117
- _context3.n = 1;
118
- break;
119
- }
120
- _context3.n = 1;
121
- return importPathfinder();
122
- case 1:
123
- component = this.component;
124
- this.crosscubeTextureSet = crosscubeTextureSet;
125
-
126
- // Log pathfinder version information
127
- _context3.n = 2;
128
- return this.logPathfinderVersion('Scene Loading');
129
- case 2:
130
- this.pathfinder = new Pathfinder(data);
131
- if (component) component.pathfinder = this.pathfinder;
132
-
133
- // Add debugging for pathfinder input
134
- console.log('🔍 PATHFINDER DEBUGGING:');
135
- console.log('🔗 Connections:', data.connections);
136
- console.log('🏗️ Scene structure:', JSON.parse(JSON.stringify((_data$scene = data.scene) === null || _data$scene === void 0 ? void 0 : _data$scene.object)));
137
-
138
- // Ensure connections exist before finding paths
139
- if (!(!data.connections || !Array.isArray(data.connections))) {
140
- _context3.n = 3;
141
- break;
142
- }
143
- console.warn('⚠️ No connections found in scene data, skipping path finding');
144
- return _context3.a(2, []);
145
- case 3:
146
- paths = this.pathfinder.findPaths();
147
- console.log('Found paths:', paths);
148
-
149
- // Create pipe paths with materials
150
- return _context3.a(2, this.createPipePaths(paths, crosscubeTextureSet));
151
- }
152
- }, _callee3, this);
153
- }));
154
- function initializePathfinder(_x, _x2) {
155
- return _initializePathfinder.apply(this, arguments);
156
- }
157
- return initializePathfinder;
158
- }()
159
- /**
160
- * Remove all existing paths from the scene
161
- */
162
- )
163
- }, {
164
- key: "removeAllPaths",
165
- value: function removeAllPaths() {
166
- var component = this.component;
167
- if (!component || !component.scene) {
168
- return;
169
- }
170
- console.log("removeAllPaths started");
171
- var objectsToRemove = [];
172
-
173
- // Find all path objects in the scene
174
- component.scene.traverse(function (child) {
175
- if (child.userData && child.userData.isPathObject) {
176
- objectsToRemove.push(child);
177
- }
178
- });
179
-
180
- // Remove all found path objects
181
- objectsToRemove.forEach(function (object) {
182
- object.parent.remove(object);
183
-
184
- // Dispose of geometries and materials
185
- if (object.geometry) {
186
- object.geometry.dispose();
187
- }
188
- if (object.material) {
189
- if (Array.isArray(object.material)) {
190
- object.material.forEach(function (material) {
191
- return material.dispose();
192
- });
193
- } else {
194
- object.material.dispose();
195
- }
196
- }
197
- });
198
- console.log("Removed ".concat(objectsToRemove.length, " path objects"));
199
- }
200
-
201
- /**
202
- * Material factory function to reduce duplication
203
- */
204
- }, {
205
- key: "createPipeMaterial",
206
- value: function createPipeMaterial(crosscubeTextureSet, pathIndex) {
207
- var color = this.getPathColor(pathIndex);
208
- var material = new THREE.MeshStandardMaterial({
209
- color: new THREE.Color(color),
210
- roughness: 0.3,
211
- metalness: 0.8,
212
- envMap: crosscubeTextureSet ? crosscubeTextureSet.envMap : null
213
- });
214
- return material;
215
- }
216
-
217
- /**
218
- * Helper function to create pipe paths
219
- */
220
- }, {
221
- key: "createPipePaths",
222
- value: function createPipePaths(paths, crosscubeTextureSet) {
223
- var _this = this;
224
- var component = this.component;
225
- if (!component || !component.scene) {
226
- console.warn('Cannot create pipe paths: component or scene not available');
227
- return [];
228
- }
229
-
230
- // Remove existing paths before creating new ones
231
- this.removeAllPaths();
232
- var pipeObjects = [];
233
- paths.forEach(function (path, pathIndex) {
234
- if (!path || !path.points || path.points.length < 2) {
235
- console.warn('Invalid path data, skipping:', path);
236
- return;
237
- }
238
- try {
239
- var material = _this.createPipeMaterial(crosscubeTextureSet, pathIndex);
240
-
241
- // Create a path from the points
242
- var points = path.points.map(function (point) {
243
- return new THREE.Vector3(point.x, point.y, point.z);
244
- });
245
- var curve = new THREE.CatmullRomCurve3(points);
246
-
247
- // Create the pipe geometry
248
- var pipeRadius = 0.15;
249
- var radialSegments = 8;
250
- var tubularSegments = points.length * 3;
251
- var geometry = new THREE.TubeGeometry(curve, tubularSegments, pipeRadius, radialSegments, false);
252
-
253
- // Create the mesh
254
- var pipe = new THREE.Mesh(geometry, material);
255
-
256
- // Add metadata
257
- pipe.userData = {
258
- isPathObject: true,
259
- pathIndex: pathIndex,
260
- connectionId: path.connectionId,
261
- startComponentId: path.startComponentId,
262
- endComponentId: path.endComponentId
263
- };
264
-
265
- // Add to scene
266
- component.scene.add(pipe);
267
- pipeObjects.push(pipe);
268
- } catch (error) {
269
- console.error('Error creating pipe for path:', path, error);
270
- }
271
- });
272
- return pipeObjects;
273
- }
274
- }]);
275
- }();
276
-
277
- // Create a singleton instance
278
- var pathfindingManager = null;
279
-
280
- /**
281
- * Get the global pathfinding manager instance
282
- */
283
- function getPathfindingManager() {
284
- var component = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
285
- if (!pathfindingManager || component && pathfindingManager.component !== component) {
286
- pathfindingManager = new PathfindingManager(component);
287
- }
288
- return pathfindingManager;
289
- }
290
- var pathfindingManager$1 = {
291
- PathfindingManager: PathfindingManager,
292
- getPathfindingManager: getPathfindingManager
293
- };
294
-
295
- export { PathfindingManager, pathfindingManager$1 as default, getPathfindingManager };
1
+ import{createClass as t,objectSpread2 as e,construct as n,toConsumableArray as r,classCallCheck as i,createForOfIteratorHelper as a,asyncToGenerator as s,regenerator as o}from"../_virtual/_rollupPluginBabelHelpers.js";import*as u from"three";import{Pathfinder as h}from"../node_modules/@2112-lab/pathfinder/dist/index.esm.js";import{logger as c,pathfinderLogger as l}from"./debugLogger.js";import{generateUuidFromName as f}from"./nameUtils.js";var v=function(){return t(function t(e){i(this,t),this.component=e,this.pathfinder=null,this.crosscubeTextureSet=null,this.pathfinderVersionInfo=null},[{key:"getPathfinderVersionInfo",value:(y=s(o().m(function t(){var e;return o().w(function(t){for(;;)switch(t.n){case 0:if(!this.pathfinderVersionInfo){t.n=1;break}return t.a(2,this.pathfinderVersionInfo);case 1:return e={version:"1.0.15",detectionMethod:"hardcoded-fallback",timestamp:(new Date).toISOString()},this.pathfinderVersionInfo=e,t.a(2,e)}},t,this)})),function(){return y.apply(this,arguments)})},{key:"logPathfinderVersion",value:(p=s(o().m(function t(){var e,n,r,i=arguments;return o().w(function(t){for(;;)switch(t.n){case 0:return e=i.length>0&&void 0!==i[0]?i[0]:"Unknown Context",t.p=1,t.n=2,this.getPathfinderVersionInfo();case 2:n=t.v,l.info("[".concat(e,"] Pathfinder Module Information:"),{version:n.version,detectionMethod:n.detectionMethod,context:e,timestamp:n.timestamp,pathfinderInstance:!!this.pathfinder}),t.n=4;break;case 3:t.p=3,r=t.v,l.error("[".concat(e,"] Failed to get pathfinder version:"),r);case 4:return t.a(2)}},t,this,[[1,3]])})),function(){return p.apply(this,arguments)})},{key:"getPathColor",value:function(t){var e=["#468e49","#245e29","#2e80d2","#1d51a1"];return e[t%e.length]}},{key:"initializePathfinder",value:(m=s(o().m(function t(e,n){var r,i;return o().w(function(t){for(;;)switch(t.n){case 0:return r=this.component,this.crosscubeTextureSet=n,t.n=1,this.logPathfinderVersion("Scene Loading");case 1:this.pathfinder=new h(e),r.pathfinder=this.pathfinder,i=this.pathfinder.findPaths(),this.createPipePaths(i,n);case 2:return t.a(2)}},t,this)})),function(t,e){return m.apply(this,arguments)})},{key:"removeAllPaths",value:function(){var t=this.component,e=[];t.scene.traverse(function(t){t.name&&t.name.includes("Polyline")&&e.push(t)});for(var n=0,r=e;n<r.length;n++){var i=r[n];t.scene.remove(i),i.geometry&&i.geometry.dispose(),i.material&&(Array.isArray(i.material)?i.material.forEach(function(t){return t.dispose()}):i.material.dispose())}}},{key:"createPipeMaterial",value:function(t,i){if(t){var a=e(e({},t.config.materialProps),{},{color:this.getPathColor(i),map:t.textures.diffuse,normalMap:t.textures.normal,roughnessMap:t.textures.roughness,metalness:.2,roughness:.9,clearcoat:.2,clearcoatRoughness:.2,envMapIntensity:.6,reflectivity:.4});a.normalScale&&Array.isArray(a.normalScale)&&(a.normalScale=n(u.Vector2,r(a.normalScale)));var s=new u.MeshPhysicalMaterial(a);return[s.map,s.normalMap,s.roughnessMap].filter(Boolean).forEach(function(e){e.wrapS=e.wrapT=u.RepeatWrapping,e.repeat.set(2*t.config.repeat.x,2*t.config.repeat.y)}),s}return new u.MeshPhysicalMaterial({color:this.getPathColor(i),metalness:.9,roughness:.7,clearcoat:.1,clearcoatRoughness:.3,envMapIntensity:1.5,reflectivity:.3})}},{key:"createPipePaths",value:function(t,e){var n=this,r=this.component;t.forEach(function(t,i){if(t.path){var a=new u.Object3D;a.name="Polyline ".concat(t.from,"-").concat(t.to);for(var s=n.createPipeMaterial(e,i),o=0;o<t.path.length-1;o++){var h=t.path[o],c=t.path[o+1],l=(new u.Vector3).subVectors(c,h),f=l.length(),v=new u.CylinderGeometry(.1,.1,f,8,1,!1),d=new u.Mesh(v,s);d.position.copy(h).add(c).multiplyScalar(.5);var m=new u.Quaternion,p=new u.Vector3(0,1,0);if(m.setFromUnitVectors(p,l.normalize()),d.quaternion.copy(m),d.castShadow=!0,d.receiveShadow=!0,a.add(d),o<t.path.length-2){var y=t.path[o+1],w=t.path[o+2],g=l.normalize(),k=(new u.Vector3).subVectors(w,y).normalize(),P=Math.acos(g.dot(k));if(Math.abs(P-Math.PI/2)<.1){var M=new u.SphereGeometry(.1,16,16),b=new u.Mesh(M,s);b.position.copy(c),b.castShadow=!0,b.receiveShadow=!0,a.add(b)}}}a.name="Polyline",r.scene.add(a)}})}},{key:"recomputeWorldBoundingBoxes",value:function(t){this.component.scene.traverse(function(e){if(e.isMesh){var n=null,r=function(t){var n,i=a(t);try{for(i.s();!(n=i.n()).done;){var s,o,u=n.value;if(u.uuid===e.uuid||u.uuid===(null===(s=e.userData)||void 0===s?void 0:s.originalUuid)||e.uuid===(null===(o=u.userData)||void 0===o?void 0:o.originalUuid))return u;if(e.name&&u.name){var h=f(e.name),c=f(u.name);if(h===c||h===u.uuid||c===e.uuid)return u}if(e.name&&u.name&&e.name===u.name)return u;if(u.children){var l=r(u.children);if(l)return l}}}catch(t){i.e(t)}finally{i.f()}return null};if(n=r(t.scene.object.children)){var i=(new u.Box3).setFromObject(e);n.userData||(n.userData={}),n.userData.worldBoundingBox={min:i.min.toArray(),max:i.max.toArray()}}}})}},{key:"updatePathfindingWithConnections",value:(d=s(o().m(function t(e){var n,i,a;return o().w(function(t){for(;;)switch(t.n){case 0:if((n=this.component).currentSceneData){t.n=1;break}return t.a(2,!1);case 1:return this.removeAllPaths(),(i=JSON.parse(JSON.stringify(n.currentSceneData))).connections=r(e),t.n=2,this.logPathfinderVersion("Connections Update");case 2:return this.pathfinder=new h(i),n.pathfinder=this.pathfinder,a=this.pathfinder.findPaths(),this.createPipePaths(a,this.crosscubeTextureSet),n.currentSceneData=i,t.a(2,!0)}},t,this)})),function(t){return d.apply(this,arguments)})},{key:"updatePathfindingAfterTransform",value:(v=s(o().m(function t(e){var n;return o().w(function(t){for(;;)switch(t.n){case 0:return this.removeAllPaths(),t.n=1,this.logPathfinderVersion("Transform Update");case 1:this.pathfinder=new h(e),this.component.pathfinder=this.pathfinder,n=this.pathfinder.findPaths(),this.createPipePaths(n,this.crosscubeTextureSet);case 2:return t.a(2)}},t,this)})),function(t){return v.apply(this,arguments)})},{key:"dispose",value:function(){this.removeAllPaths(),this.pathfinder=null,this.crosscubeTextureSet=null,this.pathfinderVersionInfo=null,c.info("PathfindingManager disposed")}}]);var v,d,m,p,y}();export{v as PathfindingManager};