@2112-lab/central-plant 0.1.4 โ†’ 0.1.5

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 (87) hide show
  1. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
  2. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
  3. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
  4. package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
  5. package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
  6. package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
  7. package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
  8. package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
  9. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
  10. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
  11. package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
  12. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
  13. package/dist/cjs/src/analysis/analysis.js +560 -1
  14. package/dist/cjs/src/analysis/testing.js +958 -1
  15. package/dist/cjs/src/core/centralPlant.js +1149 -1
  16. package/dist/cjs/src/core/debugLogger.js +175 -1
  17. package/dist/cjs/src/core/mathUtils.js +574 -1
  18. package/dist/cjs/src/core/nameUtils.js +93 -1
  19. package/dist/cjs/src/data/export.js +716 -1
  20. package/dist/cjs/src/data/import.js +380 -1
  21. package/dist/cjs/src/data/numerics.js +522 -1
  22. package/dist/cjs/src/helpers/sceneHelper.js +572 -1
  23. package/dist/cjs/src/index.js +69 -1
  24. package/dist/cjs/src/managers/components/animationManager.js +123 -1
  25. package/dist/cjs/src/managers/components/componentManager.js +332 -1
  26. package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
  27. package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
  28. package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
  29. package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
  30. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
  31. package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
  32. package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
  33. package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
  34. package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
  35. package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
  36. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
  37. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
  38. package/dist/cjs/src/managers/system/disposalManager.js +444 -1
  39. package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
  40. package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
  41. package/dist/cjs/src/rendering/modelPreloader.js +369 -1
  42. package/dist/cjs/src/rendering/rendering2D.js +631 -1
  43. package/dist/cjs/src/rendering/rendering3D.js +685 -1
  44. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
  45. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
  46. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
  47. package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
  48. package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
  49. package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
  50. package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
  51. package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
  52. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
  53. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
  54. package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
  55. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
  56. package/dist/esm/src/analysis/analysis.js +536 -1
  57. package/dist/esm/src/analysis/testing.js +954 -1
  58. package/dist/esm/src/core/centralPlant.js +1144 -1
  59. package/dist/esm/src/core/debugLogger.js +167 -1
  60. package/dist/esm/src/core/mathUtils.js +570 -1
  61. package/dist/esm/src/core/nameUtils.js +87 -1
  62. package/dist/esm/src/data/export.js +712 -1
  63. package/dist/esm/src/data/import.js +356 -1
  64. package/dist/esm/src/data/numerics.js +518 -1
  65. package/dist/esm/src/helpers/sceneHelper.js +547 -1
  66. package/dist/esm/src/index.js +35 -1
  67. package/dist/esm/src/managers/components/animationManager.js +119 -1
  68. package/dist/esm/src/managers/components/componentManager.js +328 -1
  69. package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
  70. package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
  71. package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
  72. package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
  73. package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
  74. package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
  75. package/dist/esm/src/managers/environment/environmentManager.js +690 -1
  76. package/dist/esm/src/managers/environment/textureConfig.js +202 -1
  77. package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
  78. package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
  79. package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
  80. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
  81. package/dist/esm/src/managers/system/disposalManager.js +440 -1
  82. package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
  83. package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
  84. package/dist/esm/src/rendering/modelPreloader.js +364 -1
  85. package/dist/esm/src/rendering/rendering2D.js +627 -1
  86. package/dist/esm/src/rendering/rendering3D.js +661 -1
  87. package/package.json +1 -1
@@ -1 +1,547 @@
1
- import{createClass as e,objectSpread2 as t,classCallCheck as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import*as n from"three";import{getHardcodedUuid as s}from"../core/nameUtils.js";var o=function(){return e(function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,e),this.scene=t.scene||null,this.camera=t.camera||null,this.renderer=t.renderer||null,this.controls=t.controls||null,this.transformManager=t.transformManager||null,this.componentManager=t.componentManager||null,this.pathfindingManager=t.pathfindingManager||null,this.currentSceneData=t.currentSceneData||null,this.logger=t.logger||console,this.isInitialized=!1,this.selectedObject=null,this.sceneObjects=[],this.logger.info("๐Ÿ”ง SceneHelper initialized")},[{key:"initialize",value:function(e){this.scene=e.scene,this.camera=e.camera,this.renderer=e.renderer,this.controls=e.controls,this.transformManager=e.transformManager,this.componentManager=e.componentManager,this.pathfindingManager=e.pathfindingManager,this.currentSceneData=e.currentSceneData,this.isInitialized=!0,this.logger.info("โœ… SceneHelper initialized with scene components")}},{key:"updateSceneData",value:function(e){this.currentSceneData=e}},{key:"isReady",value:function(){return this.isInitialized&&this.scene&&this.camera&&this.renderer}},{key:"getSceneObjects",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.scene)return this.logger.warn("โš ๏ธ Scene not available for object retrieval"),[];var i=e.includeComponents,n=void 0===i||i,o=e.includeConnectors,l=void 0===o||o,r=e.includeGateways,a=void 0===r||r,u=e.includeHelpers,h=void 0!==u&&u,c=e.includeInvisible,v=void 0!==c&&c,f=e.componentTypesFilter,d=void 0===f?null:f,b=[];return this.scene.traverse(function(e){if(e.userData){var i=e.userData.componentType,o=e.visible;(v||o)&&("component"!==i||n)&&("connector"!==i||l)&&("gateway"!==i||a)&&("helper"!==i||h)&&(d&&Array.isArray(d)&&!d.includes(i)||e.name&&(e.name.includes("helper")||e.name.includes("Helper")||e.name.includes("controls")||"CameraGimbal"===e.name||"GridHelper"===e.type||"AxesHelper"===e.type)||b.push({uuid:s(e),name:e.name||"Unnamed Object",type:e.type,object:e,componentType:i,position:e.position.clone(),rotation:e.rotation.clone(),scale:e.scale.clone(),visible:o,userData:t({},e.userData)}))}}),b}},{key:"getSceneObjectsHierarchy",value:function(){if(!this.scene)return this.logger.warn("โš ๏ธ Scene not available for hierarchy retrieval"),[];var e=function(t){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t.name&&(t.name.includes("helper")||t.name.includes("Helper")||t.name.includes("controls")||"CameraGimbal"===t.name)||"GridHelper"===t.type||"AxesHelper"===t.type)return null;var o=null===(i=t.userData)||void 0===i?void 0:i.componentType;if(!("Scene"===t.type||"component"===o||"connector"===o||"gateway"===o)&&"Scene"!==t.type)return null;var l={uuid:s(t),name:t.name||"Unnamed Object",type:t.type,object:t,componentType:o||"other",level:n,visible:t.visible,children:[]};return t.children&&t.children.length>0&&t.children.forEach(function(t){var i=e(t,n+1);i&&l.children.push(i)}),l},t=[];return this.scene.children&&this.scene.children.length>0&&this.scene.children.forEach(function(i){var n=e(i,0);n&&t.push(n)}),t}},{key:"findObjectByUuid",value:function(e){if(!this.scene||!e)return null;var t=null;return this.scene.traverse(function(i){s(i)!==e||(t=i)}),t}},{key:"findObjectsByName",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.scene||!e)return[];var i=[];return this.scene.traverse(function(n){n.name&&((t?n.name===e:n.name.toLowerCase().includes(e.toLowerCase()))&&i.push(n))}),i}},{key:"findObjectsByComponentType",value:function(e){if(!this.scene||!e)return[];var t=[];return this.scene.traverse(function(i){var n;(null===(n=i.userData)||void 0===n?void 0:n.componentType)===e&&t.push(i)}),t}},{key:"isSelectableObject",value:function(e){var t;if(!e||!e.parent)return!1;var i=null===(t=e.userData)||void 0===t?void 0:t.componentType,n="component"===i,s="connector"===i,o="gateway"===i;return(e.isMesh||e.isObject3D)&&e.visible&&(n||s||o)}},{key:"selectObject",value:function(e){return e&&this.isSelectableObject(e)?(this.selectedObject=e,this.transformManager&&this.transformManager.selectObject(e),this.logger.info("โœ… Object selected: ".concat(e.name," (").concat(e.uuid,")")),!0):(this.logger.warn("โš ๏ธ Cannot select invalid object"),!1)}},{key:"deselectObject",value:function(){this.transformManager&&this.transformManager.deselectObject(),this.selectedObject=null,this.logger.info("โœ… Object deselected")}},{key:"getSelectedObject",value:function(){return this.selectedObject}},{key:"getSelectedTransform",value:function(){return this.transformManager&&this.selectedObject?this.transformManager.getTransformData():null}},{key:"focusOnObject",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&this.camera&&this.controls){var i=t.distance,s=void 0===i?10:i,o=t.animate,l=void 0===o||o,r=t.duration,a=void 0===r?1e3:r,u=new n.Vector3;e.getWorldPosition(u);var h=u.clone().add(new n.Vector3(s,s,s));l&&this.controls.transitionTo?this.controls.transitionTo(h,u,a):(this.camera.position.copy(h),this.camera.lookAt(u),this.controls.target&&(this.controls.target.copy(u),this.controls.update())),this.logger.info("๐ŸŽฅ Camera focused on object: ".concat(e.name))}else this.logger.warn("โš ๏ธ Cannot focus on object: missing components")}},{key:"fitAllObjectsInView",value:function(){if(this.camera&&this.controls){var e=new n.Box3,t=this.getSceneObjects({includeHelpers:!1});if(0!==t.length){t.forEach(function(t){var i=t.object;e.expandByObject(i)});var i=e.getCenter(new n.Vector3),s=e.getSize(new n.Vector3),o=Math.max(s.x,s.y,s.z)/(2*Math.tan(Math.PI*this.camera.fov/360));this.camera.position.copy(i),this.camera.position.z+=1.5*o,this.controls.target&&(this.controls.target.copy(i),this.controls.update()),this.logger.info("๐ŸŽฅ Camera fitted to ".concat(t.length," objects"))}else this.logger.warn("โš ๏ธ No objects to fit in view")}else this.logger.warn("โš ๏ธ Cannot fit objects in view: missing camera or controls")}},{key:"getComponentsWithDimensions",value:function(){if(!this.currentSceneData)return[];var e=[];return this.scene.traverse(function(t){t.userData&&"component"===t.userData.componentType&&t.userData.dimensions&&e.push({name:t.name||"Unnamed Component",uuid:s(t),position:t.position.clone(),rotation:t.rotation.clone(),dimensions:t.userData.dimensions,boundingBox:t.userData.adaptedBoundingBox,libraryId:t.userData.libraryId,object:t})}),e}},{key:"getSceneStats",value:function(){if(!this.scene)return{};var e={totalObjects:0,components:0,connectors:0,gateways:0,meshes:0,materials:0,textures:0,lights:0,cameras:0};return this.scene.traverse(function(t){var i,n,s;e.totalObjects++,"component"===(null===(i=t.userData)||void 0===i?void 0:i.componentType)&&e.components++,"connector"===(null===(n=t.userData)||void 0===n?void 0:n.componentType)&&e.connectors++,"gateway"===(null===(s=t.userData)||void 0===s?void 0:s.componentType)&&e.gateways++,t.isMesh&&e.meshes++,t.isLight&&e.lights++,t.isCamera&&e.cameras++,t.material&&e.materials++}),e}},{key:"debugSceneInfo",value:function(){var e,t=this.getSceneStats(),i=this.getSceneObjects();this.logger.info("๐Ÿ” Scene Debug Information:"),this.logger.info(" Statistics:",t),this.logger.info(" Objects:",i.length),this.logger.info(" Selected:",(null===(e=this.selectedObject)||void 0===e?void 0:e.name)||"None"),this.logger.info(" Scene Data:",this.currentSceneData?"Available":"Not Available")}},{key:"hasVisibleObjects",value:function(){var e=this;if(!this.scene)return!1;var t=!1;return this.scene.traverse(function(i){var n;i.visible&&null!==(n=i.userData)&&void 0!==n&&n.componentType&&i!==e.scene&&(t=!0)}),t}},{key:"dispose",value:function(){this.scene=null,this.camera=null,this.renderer=null,this.controls=null,this.transformManager=null,this.componentManager=null,this.pathfindingManager=null,this.currentSceneData=null,this.selectedObject=null,this.sceneObjects=[],this.isInitialized=!1,this.logger.info("๐Ÿงน SceneHelper disposed")}}])}();export{o as SceneHelper,o as default};
1
+ import { createClass as _createClass, objectSpread2 as _objectSpread2, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import * as THREE from 'three';
3
+ import { getHardcodedUuid } from '../core/nameUtils.js';
4
+
5
+ var SceneHelper = /*#__PURE__*/function () {
6
+ function SceneHelper() {
7
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8
+ _classCallCheck(this, SceneHelper);
9
+ // Core Three.js references
10
+ this.scene = options.scene || null;
11
+ this.camera = options.camera || null;
12
+ this.renderer = options.renderer || null;
13
+ this.controls = options.controls || null;
14
+
15
+ // Manager references
16
+ this.transformManager = options.transformManager || null;
17
+ this.componentManager = options.componentManager || null;
18
+ this.pathfindingManager = options.pathfindingManager || null;
19
+
20
+ // Scene data
21
+ this.currentSceneData = options.currentSceneData || null;
22
+
23
+ // Logger
24
+ this.logger = options.logger || console;
25
+
26
+ // Initialize state
27
+ this.isInitialized = false;
28
+ this.selectedObject = null;
29
+ this.sceneObjects = [];
30
+ this.logger.info('๐Ÿ”ง SceneHelper initialized');
31
+ }
32
+
33
+ /**
34
+ * Initialize the scene helper with Three.js components
35
+ * @param {Object} components - Object containing scene, camera, renderer, etc.
36
+ */
37
+ return _createClass(SceneHelper, [{
38
+ key: "initialize",
39
+ value: function initialize(components) {
40
+ this.scene = components.scene;
41
+ this.camera = components.camera;
42
+ this.renderer = components.renderer;
43
+ this.controls = components.controls;
44
+ this.transformManager = components.transformManager;
45
+ this.componentManager = components.componentManager;
46
+ this.pathfindingManager = components.pathfindingManager;
47
+ this.currentSceneData = components.currentSceneData;
48
+ this.isInitialized = true;
49
+ this.logger.info('โœ… SceneHelper initialized with scene components');
50
+ }
51
+
52
+ /**
53
+ * Update scene data reference
54
+ * @param {Object} sceneData - Current scene data
55
+ */
56
+ }, {
57
+ key: "updateSceneData",
58
+ value: function updateSceneData(sceneData) {
59
+ this.currentSceneData = sceneData;
60
+ }
61
+
62
+ /**
63
+ * Check if the scene helper is properly initialized
64
+ * @returns {boolean} True if initialized
65
+ */
66
+ }, {
67
+ key: "isReady",
68
+ value: function isReady() {
69
+ return this.isInitialized && this.scene && this.camera && this.renderer;
70
+ }
71
+
72
+ // ===== SCENE OBJECT OPERATIONS =====
73
+
74
+ /**
75
+ * Get all scene objects with filtering options
76
+ * @param {Object} options - Filtering options
77
+ * @returns {Array} Array of scene objects
78
+ */
79
+ }, {
80
+ key: "getSceneObjects",
81
+ value: function getSceneObjects() {
82
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
83
+ if (!this.scene) {
84
+ this.logger.warn('โš ๏ธ Scene not available for object retrieval');
85
+ return [];
86
+ }
87
+ var _options$includeCompo = options.includeComponents,
88
+ includeComponents = _options$includeCompo === void 0 ? true : _options$includeCompo,
89
+ _options$includeConne = options.includeConnectors,
90
+ includeConnectors = _options$includeConne === void 0 ? true : _options$includeConne,
91
+ _options$includeGatew = options.includeGateways,
92
+ includeGateways = _options$includeGatew === void 0 ? true : _options$includeGatew,
93
+ _options$includeHelpe = options.includeHelpers,
94
+ includeHelpers = _options$includeHelpe === void 0 ? false : _options$includeHelpe,
95
+ _options$includeInvis = options.includeInvisible,
96
+ includeInvisible = _options$includeInvis === void 0 ? false : _options$includeInvis,
97
+ _options$componentTyp = options.componentTypesFilter,
98
+ componentTypesFilter = _options$componentTyp === void 0 ? null : _options$componentTyp;
99
+ var objects = [];
100
+ this.scene.traverse(function (object) {
101
+ // Skip objects without valid userData
102
+ if (!object.userData) return;
103
+ var componentType = object.userData.componentType;
104
+ var isVisible = object.visible;
105
+
106
+ // Apply visibility filter
107
+ if (!includeInvisible && !isVisible) return;
108
+
109
+ // Apply component type filters
110
+ if (componentType === 'component' && !includeComponents) return;
111
+ if (componentType === 'connector' && !includeConnectors) return;
112
+ if (componentType === 'gateway' && !includeGateways) return;
113
+ if (componentType === 'helper' && !includeHelpers) return;
114
+
115
+ // Apply specific component types filter
116
+ if (componentTypesFilter && Array.isArray(componentTypesFilter)) {
117
+ if (!componentTypesFilter.includes(componentType)) return;
118
+ }
119
+
120
+ // Skip internal objects and helpers by name
121
+ if (object.name && (object.name.includes('helper') || object.name.includes('Helper') || object.name.includes('controls') || object.name === 'CameraGimbal' || object.type === 'GridHelper' || object.type === 'AxesHelper')) {
122
+ return;
123
+ }
124
+ objects.push({
125
+ uuid: getHardcodedUuid(object),
126
+ name: object.name || 'Unnamed Object',
127
+ type: object.type,
128
+ object: object,
129
+ componentType: componentType,
130
+ position: object.position.clone(),
131
+ rotation: object.rotation.clone(),
132
+ scale: object.scale.clone(),
133
+ visible: isVisible,
134
+ userData: _objectSpread2({}, object.userData)
135
+ });
136
+ });
137
+ return objects;
138
+ }
139
+
140
+ /**
141
+ * Get scene objects in a hierarchical structure
142
+ * @param {Object} options - Filtering options
143
+ * @returns {Array} Hierarchical array of scene objects
144
+ */
145
+ }, {
146
+ key: "getSceneObjectsHierarchy",
147
+ value: function getSceneObjectsHierarchy() {
148
+ if (!this.scene) {
149
+ this.logger.warn('โš ๏ธ Scene not available for hierarchy retrieval');
150
+ return [];
151
+ }
152
+ var _createHierarchy = function createHierarchy(object) {
153
+ var _object$userData;
154
+ var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
155
+ // Skip internal objects and helpers
156
+ if (object.name && (object.name.includes('helper') || object.name.includes('Helper') || object.name.includes('controls') || object.name === 'CameraGimbal') || object.type === 'GridHelper' || object.type === 'AxesHelper') {
157
+ return null;
158
+ }
159
+ var componentType = (_object$userData = object.userData) === null || _object$userData === void 0 ? void 0 : _object$userData.componentType;
160
+ var shouldInclude = object.type === 'Scene' || componentType === 'component' || componentType === 'connector' || componentType === 'gateway';
161
+ if (!shouldInclude && object.type !== 'Scene') {
162
+ return null;
163
+ }
164
+ var hierarchyItem = {
165
+ uuid: getHardcodedUuid(object),
166
+ name: object.name || 'Unnamed Object',
167
+ type: object.type,
168
+ object: object,
169
+ componentType: componentType || 'other',
170
+ level: level,
171
+ visible: object.visible,
172
+ children: []
173
+ };
174
+
175
+ // Process children
176
+ if (object.children && object.children.length > 0) {
177
+ object.children.forEach(function (child) {
178
+ var childItem = _createHierarchy(child, level + 1);
179
+ if (childItem) {
180
+ hierarchyItem.children.push(childItem);
181
+ }
182
+ });
183
+ }
184
+ return hierarchyItem;
185
+ };
186
+
187
+ // Start from scene children to avoid including the scene root
188
+ var hierarchy = [];
189
+ if (this.scene.children && this.scene.children.length > 0) {
190
+ this.scene.children.forEach(function (child) {
191
+ var childItem = _createHierarchy(child, 0);
192
+ if (childItem) {
193
+ hierarchy.push(childItem);
194
+ }
195
+ });
196
+ }
197
+ return hierarchy;
198
+ }
199
+
200
+ /**
201
+ * Find an object in the scene by UUID
202
+ * @param {string} uuid - Object UUID to find
203
+ * @returns {Object|null} Found object or null
204
+ */
205
+ }, {
206
+ key: "findObjectByUuid",
207
+ value: function findObjectByUuid(uuid) {
208
+ if (!this.scene || !uuid) return null;
209
+ var foundObject = null;
210
+ this.scene.traverse(function (object) {
211
+ if (getHardcodedUuid(object) === uuid) {
212
+ foundObject = object;
213
+ return; // Stop traversal
214
+ }
215
+ });
216
+ return foundObject;
217
+ }
218
+
219
+ /**
220
+ * Find objects by name (supports partial matching)
221
+ * @param {string} name - Object name to search for
222
+ * @param {boolean} exactMatch - Whether to use exact matching
223
+ * @returns {Array} Array of matching objects
224
+ */
225
+ }, {
226
+ key: "findObjectsByName",
227
+ value: function findObjectsByName(name) {
228
+ var exactMatch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
229
+ if (!this.scene || !name) return [];
230
+ var foundObjects = [];
231
+ this.scene.traverse(function (object) {
232
+ if (object.name) {
233
+ var matches = exactMatch ? object.name === name : object.name.toLowerCase().includes(name.toLowerCase());
234
+ if (matches) {
235
+ foundObjects.push(object);
236
+ }
237
+ }
238
+ });
239
+ return foundObjects;
240
+ }
241
+
242
+ /**
243
+ * Find objects by component type
244
+ * @param {string} componentType - Component type to search for
245
+ * @returns {Array} Array of matching objects
246
+ */
247
+ }, {
248
+ key: "findObjectsByComponentType",
249
+ value: function findObjectsByComponentType(componentType) {
250
+ if (!this.scene || !componentType) return [];
251
+ var foundObjects = [];
252
+ this.scene.traverse(function (object) {
253
+ var _object$userData2;
254
+ if (((_object$userData2 = object.userData) === null || _object$userData2 === void 0 ? void 0 : _object$userData2.componentType) === componentType) {
255
+ foundObjects.push(object);
256
+ }
257
+ });
258
+ return foundObjects;
259
+ }
260
+
261
+ // ===== OBJECT SELECTION AND TRANSFORM =====
262
+
263
+ /**
264
+ * Check if an object is selectable for transformation
265
+ * @param {Object} object - Three.js object to check
266
+ * @returns {boolean} True if object can be selected
267
+ */
268
+ }, {
269
+ key: "isSelectableObject",
270
+ value: function isSelectableObject(object) {
271
+ var _object$userData3;
272
+ if (!object || !object.parent) return false;
273
+
274
+ // Check for different component types
275
+ var componentType = (_object$userData3 = object.userData) === null || _object$userData3 === void 0 ? void 0 : _object$userData3.componentType;
276
+ var isComponent = componentType === 'component';
277
+ var isConnector = componentType === 'connector';
278
+ var isGateway = componentType === 'gateway';
279
+
280
+ // Check if it's a valid mesh or object3D
281
+ var isValidType = (object.isMesh || object.isObject3D) && object.visible;
282
+ return isValidType && (isComponent || isConnector || isGateway);
283
+ }
284
+
285
+ /**
286
+ * Select an object for transformation
287
+ * @param {Object} object - Three.js object to select
288
+ * @returns {boolean} True if selection was successful
289
+ */
290
+ }, {
291
+ key: "selectObject",
292
+ value: function selectObject(object) {
293
+ if (!object || !this.isSelectableObject(object)) {
294
+ this.logger.warn('โš ๏ธ Cannot select invalid object');
295
+ return false;
296
+ }
297
+ this.selectedObject = object;
298
+
299
+ // Use transform manager if available
300
+ if (this.transformManager) {
301
+ this.transformManager.selectObject(object);
302
+ }
303
+ this.logger.info("\u2705 Object selected: ".concat(object.name, " (").concat(object.uuid, ")"));
304
+ return true;
305
+ }
306
+
307
+ /**
308
+ * Deselect the currently selected object
309
+ */
310
+ }, {
311
+ key: "deselectObject",
312
+ value: function deselectObject() {
313
+ if (this.transformManager) {
314
+ this.transformManager.deselectObject();
315
+ }
316
+ this.selectedObject = null;
317
+ this.logger.info('โœ… Object deselected');
318
+ }
319
+
320
+ /**
321
+ * Get the currently selected object
322
+ * @returns {Object|null} Selected object or null
323
+ */
324
+ }, {
325
+ key: "getSelectedObject",
326
+ value: function getSelectedObject() {
327
+ return this.selectedObject;
328
+ }
329
+
330
+ /**
331
+ * Get transform data for the selected object
332
+ * @returns {Object|null} Transform data or null
333
+ */
334
+ }, {
335
+ key: "getSelectedTransform",
336
+ value: function getSelectedTransform() {
337
+ if (!this.transformManager || !this.selectedObject) return null;
338
+ return this.transformManager.getTransformData();
339
+ }
340
+
341
+ // ===== CAMERA AND VIEWPORT OPERATIONS =====
342
+
343
+ /**
344
+ * Focus camera on an object
345
+ * @param {Object} object - Three.js object to focus on
346
+ * @param {Object} options - Focus options
347
+ */
348
+ }, {
349
+ key: "focusOnObject",
350
+ value: function focusOnObject(object) {
351
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
352
+ if (!object || !this.camera || !this.controls) {
353
+ this.logger.warn('โš ๏ธ Cannot focus on object: missing components');
354
+ return;
355
+ }
356
+ var _options$distance = options.distance,
357
+ distance = _options$distance === void 0 ? 10 : _options$distance,
358
+ _options$animate = options.animate,
359
+ animate = _options$animate === void 0 ? true : _options$animate,
360
+ _options$duration = options.duration,
361
+ duration = _options$duration === void 0 ? 1000 : _options$duration;
362
+
363
+ // Get object world position
364
+ var objectPosition = new THREE.Vector3();
365
+ object.getWorldPosition(objectPosition);
366
+
367
+ // Calculate camera position
368
+ var cameraPosition = objectPosition.clone().add(new THREE.Vector3(distance, distance, distance));
369
+ if (animate && this.controls.transitionTo) {
370
+ // Animate camera transition if supported
371
+ this.controls.transitionTo(cameraPosition, objectPosition, duration);
372
+ } else {
373
+ // Immediate camera positioning
374
+ this.camera.position.copy(cameraPosition);
375
+ this.camera.lookAt(objectPosition);
376
+ if (this.controls.target) {
377
+ this.controls.target.copy(objectPosition);
378
+ this.controls.update();
379
+ }
380
+ }
381
+ this.logger.info("\uD83C\uDFA5 Camera focused on object: ".concat(object.name));
382
+ }
383
+
384
+ /**
385
+ * Fit all objects in camera view
386
+ */
387
+ }, {
388
+ key: "fitAllObjectsInView",
389
+ value: function fitAllObjectsInView() {
390
+ if (!this.camera || !this.controls) {
391
+ this.logger.warn('โš ๏ธ Cannot fit objects in view: missing camera or controls');
392
+ return;
393
+ }
394
+ var box = new THREE.Box3();
395
+ var objects = this.getSceneObjects({
396
+ includeHelpers: false
397
+ });
398
+ if (objects.length === 0) {
399
+ this.logger.warn('โš ๏ธ No objects to fit in view');
400
+ return;
401
+ }
402
+
403
+ // Calculate bounding box of all objects
404
+ objects.forEach(function (_ref) {
405
+ var object = _ref.object;
406
+ box.expandByObject(object);
407
+ });
408
+
409
+ // Calculate center and size
410
+ var center = box.getCenter(new THREE.Vector3());
411
+ var size = box.getSize(new THREE.Vector3());
412
+
413
+ // Calculate distance needed to fit all objects
414
+ var maxDim = Math.max(size.x, size.y, size.z);
415
+ var distance = maxDim / (2 * Math.tan(Math.PI * this.camera.fov / 360));
416
+
417
+ // Position camera
418
+ this.camera.position.copy(center);
419
+ this.camera.position.z += distance * 1.5;
420
+ if (this.controls.target) {
421
+ this.controls.target.copy(center);
422
+ this.controls.update();
423
+ }
424
+ this.logger.info("\uD83C\uDFA5 Camera fitted to ".concat(objects.length, " objects"));
425
+ }
426
+
427
+ // ===== SCENE DATA OPERATIONS =====
428
+
429
+ /**
430
+ * Get components with dimensions from scene data
431
+ * @returns {Array} Array of components with dimension data
432
+ */
433
+ }, {
434
+ key: "getComponentsWithDimensions",
435
+ value: function getComponentsWithDimensions() {
436
+ if (!this.currentSceneData) return [];
437
+ var components = [];
438
+ this.scene.traverse(function (object) {
439
+ if (object.userData && object.userData.componentType === 'component' && object.userData.dimensions) {
440
+ components.push({
441
+ name: object.name || 'Unnamed Component',
442
+ uuid: getHardcodedUuid(object),
443
+ position: object.position.clone(),
444
+ rotation: object.rotation.clone(),
445
+ dimensions: object.userData.dimensions,
446
+ boundingBox: object.userData.adaptedBoundingBox,
447
+ libraryId: object.userData.libraryId,
448
+ object: object
449
+ });
450
+ }
451
+ });
452
+ return components;
453
+ }
454
+
455
+ /**
456
+ * Get scene statistics
457
+ * @returns {Object} Scene statistics
458
+ */
459
+ }, {
460
+ key: "getSceneStats",
461
+ value: function getSceneStats() {
462
+ if (!this.scene) return {};
463
+ var stats = {
464
+ totalObjects: 0,
465
+ components: 0,
466
+ connectors: 0,
467
+ gateways: 0,
468
+ meshes: 0,
469
+ materials: 0,
470
+ textures: 0,
471
+ lights: 0,
472
+ cameras: 0
473
+ };
474
+ this.scene.traverse(function (object) {
475
+ var _object$userData4, _object$userData5, _object$userData6;
476
+ stats.totalObjects++;
477
+ if (((_object$userData4 = object.userData) === null || _object$userData4 === void 0 ? void 0 : _object$userData4.componentType) === 'component') stats.components++;
478
+ if (((_object$userData5 = object.userData) === null || _object$userData5 === void 0 ? void 0 : _object$userData5.componentType) === 'connector') stats.connectors++;
479
+ if (((_object$userData6 = object.userData) === null || _object$userData6 === void 0 ? void 0 : _object$userData6.componentType) === 'gateway') stats.gateways++;
480
+ if (object.isMesh) stats.meshes++;
481
+ if (object.isLight) stats.lights++;
482
+ if (object.isCamera) stats.cameras++;
483
+ if (object.material) stats.materials++;
484
+ });
485
+ return stats;
486
+ }
487
+
488
+ // ===== UTILITY METHODS =====
489
+
490
+ /**
491
+ * Log scene information for debugging
492
+ */
493
+ }, {
494
+ key: "debugSceneInfo",
495
+ value: function debugSceneInfo() {
496
+ var _this$selectedObject;
497
+ var stats = this.getSceneStats();
498
+ var objects = this.getSceneObjects();
499
+ this.logger.info('๐Ÿ” Scene Debug Information:');
500
+ this.logger.info(' Statistics:', stats);
501
+ this.logger.info(' Objects:', objects.length);
502
+ this.logger.info(' Selected:', ((_this$selectedObject = this.selectedObject) === null || _this$selectedObject === void 0 ? void 0 : _this$selectedObject.name) || 'None');
503
+ this.logger.info(' Scene Data:', this.currentSceneData ? 'Available' : 'Not Available');
504
+ }
505
+
506
+ /**
507
+ * Check if scene has any visible objects
508
+ * @returns {boolean} True if scene has visible objects
509
+ */
510
+ }, {
511
+ key: "hasVisibleObjects",
512
+ value: function hasVisibleObjects() {
513
+ var _this = this;
514
+ if (!this.scene) return false;
515
+ var hasVisible = false;
516
+ this.scene.traverse(function (object) {
517
+ var _object$userData7;
518
+ if (object.visible && (_object$userData7 = object.userData) !== null && _object$userData7 !== void 0 && _object$userData7.componentType && object !== _this.scene) {
519
+ hasVisible = true;
520
+ }
521
+ });
522
+ return hasVisible;
523
+ }
524
+
525
+ /**
526
+ * Dispose of the scene helper
527
+ */
528
+ }, {
529
+ key: "dispose",
530
+ value: function dispose() {
531
+ this.scene = null;
532
+ this.camera = null;
533
+ this.renderer = null;
534
+ this.controls = null;
535
+ this.transformManager = null;
536
+ this.componentManager = null;
537
+ this.pathfindingManager = null;
538
+ this.currentSceneData = null;
539
+ this.selectedObject = null;
540
+ this.sceneObjects = [];
541
+ this.isInitialized = false;
542
+ this.logger.info('๐Ÿงน SceneHelper disposed');
543
+ }
544
+ }]);
545
+ }();
546
+
547
+ export { SceneHelper, SceneHelper as default };
@@ -1 +1,35 @@
1
- export{CentralPlant}from"./core/centralPlant.js";export{DebugLogger,logger,modelLogger,pathfinderLogger,transformLogger}from"./core/debugLogger.js";export{findObjectByHardcodedUuid,generateUuidFromName,getHardcodedUuid}from"./core/nameUtils.js";export{MathUtils}from"./core/mathUtils.js";export{SceneInitializationManager}from"./managers/scene/sceneInitializationManager.js";export{SceneOperationsManager}from"./managers/scene/sceneOperationsManager.js";export{SceneExportManager}from"./managers/scene/sceneExportManager.js";export{SceneTooltipsManager}from"./managers/scene/sceneTooltipsManager.js";export{ComponentManager}from"./managers/components/componentManager.js";export{AnimationManager}from"./managers/components/animationManager.js";export{PathfindingManager}from"./managers/components/pathfindingManager.js";export{createTransformControls}from"./managers/controls/transformControlsManager.js";export{KeyboardControlsManager}from"./managers/controls/keyboardControlsManager.js";export{CameraControlsManager}from"./managers/controls/cameraControlsManager.js";export{default as DragDropManager}from"./managers/controls/dragDropManager.js";export{EnvironmentManager}from"./managers/environment/environmentManager.js";export{loadTextureSetAndCreateMaterial}from"./managers/environment/textureConfig.js";export{HotReloadManager}from"./managers/system/hotReloadManager.js";export{DisposalManager}from"./managers/system/disposalManager.js";export{PerformanceMonitor}from"./managers/system/performanceMonitor.js";export{default as modelPreloader}from"./rendering/modelPreloader.js";import*as r from"./rendering/rendering2D.js";export{r as Rendering2D};import*as e from"./rendering/rendering3D.js";export{e as Rendering3D};import*as a from"./data/import.js";export{a as ImportUtils};import*as o from"./data/export.js";export{o as ExportUtils};import*as n from"./data/numerics.js";export{n as Numerics};import*as s from"./analysis/analysis.js";export{s as Analysis};import*as t from"./analysis/testing.js";export{t as Testing};
1
+ export { CentralPlant } from './core/centralPlant.js';
2
+ export { DebugLogger, logger, modelLogger, pathfinderLogger, transformLogger } from './core/debugLogger.js';
3
+ export { findObjectByHardcodedUuid, generateUuidFromName, getHardcodedUuid } from './core/nameUtils.js';
4
+ export { MathUtils } from './core/mathUtils.js';
5
+ export { SceneInitializationManager } from './managers/scene/sceneInitializationManager.js';
6
+ export { SceneOperationsManager } from './managers/scene/sceneOperationsManager.js';
7
+ export { SceneExportManager } from './managers/scene/sceneExportManager.js';
8
+ export { SceneTooltipsManager } from './managers/scene/sceneTooltipsManager.js';
9
+ export { ComponentManager } from './managers/components/componentManager.js';
10
+ export { AnimationManager } from './managers/components/animationManager.js';
11
+ export { PathfindingManager } from './managers/components/pathfindingManager.js';
12
+ export { createTransformControls } from './managers/controls/transformControlsManager.js';
13
+ export { KeyboardControlsManager } from './managers/controls/keyboardControlsManager.js';
14
+ export { CameraControlsManager } from './managers/controls/cameraControlsManager.js';
15
+ export { default as DragDropManager } from './managers/controls/dragDropManager.js';
16
+ export { EnvironmentManager } from './managers/environment/environmentManager.js';
17
+ export { loadTextureSetAndCreateMaterial } from './managers/environment/textureConfig.js';
18
+ export { HotReloadManager } from './managers/system/hotReloadManager.js';
19
+ export { DisposalManager } from './managers/system/disposalManager.js';
20
+ export { PerformanceMonitor } from './managers/system/performanceMonitor.js';
21
+ export { default as modelPreloader } from './rendering/modelPreloader.js';
22
+ import * as rendering2D from './rendering/rendering2D.js';
23
+ export { rendering2D as Rendering2D };
24
+ import * as rendering3D from './rendering/rendering3D.js';
25
+ export { rendering3D as Rendering3D };
26
+ import * as _import from './data/import.js';
27
+ export { _import as ImportUtils };
28
+ import * as _export from './data/export.js';
29
+ export { _export as ExportUtils };
30
+ import * as numerics from './data/numerics.js';
31
+ export { numerics as Numerics };
32
+ import * as analysis from './analysis/analysis.js';
33
+ export { analysis as Analysis };
34
+ import * as testing from './analysis/testing.js';
35
+ export { testing as Testing };