@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.
Files changed (88) hide show
  1. package/dist/bundle/index.js +33146 -1
  2. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
  3. package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
  4. package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
  5. package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
  6. package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
  7. package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
  8. package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
  9. package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
  10. package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
  11. package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
  12. package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
  13. package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
  14. package/dist/cjs/src/analysis/analysis.js +560 -1
  15. package/dist/cjs/src/analysis/testing.js +958 -1
  16. package/dist/cjs/src/core/centralPlant.js +1149 -1
  17. package/dist/cjs/src/core/debugLogger.js +175 -1
  18. package/dist/cjs/src/core/mathUtils.js +574 -1
  19. package/dist/cjs/src/core/nameUtils.js +93 -1
  20. package/dist/cjs/src/data/export.js +716 -1
  21. package/dist/cjs/src/data/import.js +380 -1
  22. package/dist/cjs/src/data/numerics.js +522 -1
  23. package/dist/cjs/src/helpers/sceneHelper.js +572 -1
  24. package/dist/cjs/src/index.js +69 -1
  25. package/dist/cjs/src/managers/components/animationManager.js +123 -1
  26. package/dist/cjs/src/managers/components/componentManager.js +332 -1
  27. package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
  28. package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
  29. package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
  30. package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
  31. package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
  32. package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
  33. package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
  34. package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
  35. package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
  36. package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
  37. package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
  38. package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
  39. package/dist/cjs/src/managers/system/disposalManager.js +444 -1
  40. package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
  41. package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
  42. package/dist/cjs/src/rendering/modelPreloader.js +369 -1
  43. package/dist/cjs/src/rendering/rendering2D.js +631 -1
  44. package/dist/cjs/src/rendering/rendering3D.js +685 -1
  45. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
  46. package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
  47. package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
  48. package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
  49. package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
  50. package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
  51. package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
  52. package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
  53. package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
  54. package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
  55. package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
  56. package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
  57. package/dist/esm/src/analysis/analysis.js +536 -1
  58. package/dist/esm/src/analysis/testing.js +954 -1
  59. package/dist/esm/src/core/centralPlant.js +1144 -1
  60. package/dist/esm/src/core/debugLogger.js +167 -1
  61. package/dist/esm/src/core/mathUtils.js +570 -1
  62. package/dist/esm/src/core/nameUtils.js +87 -1
  63. package/dist/esm/src/data/export.js +712 -1
  64. package/dist/esm/src/data/import.js +356 -1
  65. package/dist/esm/src/data/numerics.js +518 -1
  66. package/dist/esm/src/helpers/sceneHelper.js +547 -1
  67. package/dist/esm/src/index.js +35 -1
  68. package/dist/esm/src/managers/components/animationManager.js +119 -1
  69. package/dist/esm/src/managers/components/componentManager.js +328 -1
  70. package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
  71. package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
  72. package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
  73. package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
  74. package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
  75. package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
  76. package/dist/esm/src/managers/environment/environmentManager.js +690 -1
  77. package/dist/esm/src/managers/environment/textureConfig.js +202 -1
  78. package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
  79. package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
  80. package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
  81. package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
  82. package/dist/esm/src/managers/system/disposalManager.js +440 -1
  83. package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
  84. package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
  85. package/dist/esm/src/rendering/modelPreloader.js +364 -1
  86. package/dist/esm/src/rendering/rendering2D.js +627 -1
  87. package/dist/esm/src/rendering/rendering3D.js +661 -1
  88. package/package.json +1 -1
@@ -1 +1,685 @@
1
- "use strict";Object.defineProperty(exports,"i",{value:!0});var i=require("../../_virtual/_rollupPluginBabelHelpers.js"),e=require("three"),t=require("../core/debugLogger.js");function n(i){if(i&&i.i)return i;var e=Object.create(null);return i&&Object.keys(i).forEach(function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:function(){return i[t]}})}}),e.default=i,Object.freeze(e)}var r=n(e),o=function(){return i.createClass(function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i.classCallCheck(this,e),i.defineProperty(this,"lighting",{addAmbient:function(){var i,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4210752,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4,o=new r.AmbientLight(e,n);return null===(i=t.scene)||void 0===i||i.add(o),o},addDirectional:function(){var e,n,o,s,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},v=a.color,d=void 0===v?16777215:v,u=a.intensity,h=void 0===u?1:u,l=a.position,c=void 0===l?[10,10,5]:l,f=a.target,p=void 0===f?[0,0,0]:f,w=a.castShadow,g=void 0===w||w,m=a.shadowMapSize,y=void 0===m?2048:m,b=a.shadowCameraNear,M=void 0===b?.5:b,x=a.shadowCameraFar,S=void 0===x?50:x,j=a.shadowCameraLeft,k=void 0===j?-10:j,D=a.shadowCameraRight,P=void 0===D?10:D,_=a.shadowCameraTop,R=void 0===_?10:_,O=a.shadowCameraBottom,B=void 0===O?-10:O,C=new r.DirectionalLight(d,h);return(e=C.position).set.apply(e,i.toConsumableArray(c)),(n=C.target.position).set.apply(n,i.toConsumableArray(p)),g&&(C.castShadow=!0,C.shadow.mapSize.width=y,C.shadow.mapSize.height=y,C.shadow.camera.near=M,C.shadow.camera.far=S,C.shadow.camera.left=k,C.shadow.camera.right=P,C.shadow.camera.top=R,C.shadow.camera.bottom=B),null===(o=t.scene)||void 0===o||o.add(C),null===(s=t.scene)||void 0===s||s.add(C.target),C},addPoint:function(){var e,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=o.color,a=void 0===s?16777215:s,v=o.intensity,d=void 0===v?1:v,u=o.distance,h=void 0===u?0:u,l=o.decay,c=void 0===l?2:l,f=o.position,p=void 0===f?[0,10,0]:f,w=o.castShadow,g=void 0!==w&&w,m=o.shadowMapSize,y=void 0===m?1024:m,b=new r.PointLight(a,d,h,c);return(e=b.position).set.apply(e,i.toConsumableArray(p)),g&&(b.castShadow=!0,b.shadow.mapSize.width=y,b.shadow.mapSize.height=y,b.shadow.camera.near=.1,b.shadow.camera.far=25),null===(n=t.scene)||void 0===n||n.add(b),b},addSpot:function(){var e,n,o,s,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},v=a.color,d=void 0===v?16777215:v,u=a.intensity,h=void 0===u?1:u,l=a.distance,c=void 0===l?0:l,f=a.angle,p=void 0===f?Math.PI/3:f,w=a.penumbra,g=void 0===w?0:w,m=a.decay,y=void 0===m?2:m,b=a.position,M=void 0===b?[0,10,0]:b,x=a.target,S=void 0===x?[0,0,0]:x,j=a.castShadow,k=void 0===j||j,D=a.shadowMapSize,P=void 0===D?1024:D,_=new r.SpotLight(d,h,c,p,g,y);return(e=_.position).set.apply(e,i.toConsumableArray(M)),(n=_.target.position).set.apply(n,i.toConsumableArray(S)),k&&(_.castShadow=!0,_.shadow.mapSize.width=P,_.shadow.mapSize.height=P,_.shadow.camera.near=.5,_.shadow.camera.far=50),null===(o=t.scene)||void 0===o||o.add(_),null===(s=t.scene)||void 0===s||s.add(_.target),_}}),i.defineProperty(this,"materials",{createStandard:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new r.MeshStandardMaterial(i.objectSpread2({color:16777215,metalness:0,roughness:.5},e))},createPhysical:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new r.MeshPhysicalMaterial(i.objectSpread2({color:16777215,metalness:0,roughness:.5,clearcoat:0,clearcoatRoughness:0},e))},createBasic:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new r.MeshBasicMaterial(i.objectSpread2({color:16777215},e))},createShader:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new r.ShaderMaterial({vertexShader:i.vertexShader||"\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:i.fragmentShader||"\n void main() {\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n }\n ",uniforms:i.uniforms||{}})}}),i.defineProperty(this,"geometry",{createBox:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return new r.BoxGeometry(i,e,t)},createSphere:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16;return new r.SphereGeometry(i,e,t)},createCylinder:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:32;return new r.CylinderGeometry(i,e,t,n)},createPlane:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new r.PlaneGeometry(i,e)}}),i.defineProperty(this,"renderTargets",{create:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=new r.WebGLRenderTarget(e,n,i.objectSpread2({minFilter:r.LinearFilter,magFilter:r.LinearFilter,format:r.RGBAFormat,type:r.UnsignedByteType},o)),a="rt_".concat(Date.now(),"_").concat(Math.random().toString(36).substr(2,9));return t.renderTargets.set(a,s),{id:a,renderTarget:s}},get:function(i){return t.renderTargets.get(i)},remove:function(i){var e=t.renderTargets.get(i);e&&(e.dispose(),t.renderTargets.delete(i))}}),i.defineProperty(this,"animation",{createMixer:function(i){return t.animationMixer=new r.AnimationMixer(i),t.animationMixer},addClip:function(i){if(!t.animationMixer)throw new Error("Animation mixer not created");return t.animationMixer.clipAction(i)},update:function(i){t.animationMixer&&t.animationMixer.update(i)}}),i.defineProperty(this,"screenshot",{toDataURL:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"image/png",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return t.renderer?t.renderer.domElement.toDataURL(i,e):""},toBlob:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"image/png",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return t.renderer?new Promise(function(n){t.renderer.domElement.toBlob(n,i,e)}):Promise.resolve(null)}}),this.options=i.objectSpread2({antialias:!0,alpha:!0,shadowMapEnabled:!0,shadowMapType:r.PCFSoftShadowMap,toneMapping:r.ACESFilmicToneMapping,toneMappingExposure:1,outputColorSpace:r.SRGBColorSpace},n),this.renderer=null,this.scene=null,this.camera=null,this.controls=null,this.renderTargets=new Map,this.postProcessing={composer:null,passes:[]},this.stats={triangles:0,geometries:0,textures:0,calls:0,frameTime:0},this.animationMixer=null,this.clock=new r.Clock},[{key:"initializeRenderer",value:function(i){this.renderer&&this.dispose();try{return this.renderer=new r.WebGLRenderer({antialias:this.options.antialias,alpha:this.options.alpha,preserveDrawingBuffer:!1,powerPreference:"high-performance"}),this.renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this.renderer.setSize(i.clientWidth,i.clientHeight),this.renderer.setClearColor(0,0),this.options.shadowMapEnabled&&(this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=this.options.shadowMapType),this.renderer.toneMapping=this.options.toneMapping,this.renderer.toneMappingExposure=this.options.toneMappingExposure,this.renderer.outputColorSpace=this.options.outputColorSpace,this.renderer.useLegacyLights=!1,i.appendChild(this.renderer.domElement),t.logger.info("✅ 3D Renderer initialized"),this.renderer}catch(i){throw t.logger.error("❌ Failed to initialize 3D renderer:",i),i}}},{key:"createScene",value:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=i.background,n=void 0===e?null:e,o=i.environment,s=void 0===o?null:o,a=i.fog,v=void 0===a?null:a;return this.scene=new r.Scene,n&&("string"==typeof n?this.scene.background=new r.Color(n):n.isTexture&&(this.scene.background=n)),s&&s.isTexture&&(this.scene.environment=s),v&&("linear"===v.type?this.scene.fog=new r.Fog(v.color,v.near,v.far):"exponential"===v.type&&(this.scene.fog=new r.FogExp2(v.color,v.density))),t.logger.info("✅ 3D Scene created"),this.scene}},{key:"createCamera",value:function(){var e,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"perspective",s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=null===(e=this.renderer)||void 0===e||null===(e=e.domElement)||void 0===e?void 0:e.parentElement,v=a?a.clientWidth/a.clientHeight:1;if("perspective"===o){var d=s.fov,u=void 0===d?75:d,h=s.near,l=void 0===h?.1:h,c=s.far,f=void 0===c?1e3:c;s.position,this.camera=new r.PerspectiveCamera(u,v,l,f)}else if("orthographic"===o){var p=s.left,w=void 0===p?-10:p,g=s.right,m=void 0===g?10:g,y=s.top,b=void 0===y?10:y,M=s.bottom,x=void 0===M?-10:M,S=s.near,j=void 0===S?.1:S,k=s.far,D=void 0===k?1e3:k;s.position,this.camera=new r.OrthographicCamera(w,m,b,x,j,D)}this.camera&&((n=this.camera.position).set.apply(n,i.toConsumableArray(position)),t.logger.info("✅ ".concat(o," camera created")));return this.camera}},{key:"render",value:function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(this.renderer){var n=i||this.scene,r=e||this.camera;if(n&&r){var o=performance.now(),s=this.clock.getDelta();this.animation.update(s),this.renderer.render(n,r,t),this.stats.frameTime=performance.now()-o,this.updateRenderStats()}}}},{key:"updateRenderStats",value:function(){if(this.renderer){var i=this.renderer.info;this.stats.triangles=i.render.triangles,this.stats.geometries=i.memory.geometries,this.stats.textures=i.memory.textures,this.stats.calls=i.render.calls}}},{key:"getRenderStats",value:function(){return i.objectSpread2({},this.stats)}},{key:"resize",value:function(i,e){if(this.renderer){if(this.renderer.setSize(i,e),this.camera){if(this.camera.isPerspectiveCamera)this.camera.aspect=i/e;else if(this.camera.isOrthographicCamera){var t=i/e;this.camera.left=-10*t,this.camera.right=10*t,this.camera.top=10,this.camera.bottom=-10}this.camera.updateProjectionMatrix()}this.renderTargets.forEach(function(t){t.setSize(i,e)})}}},{key:"dispose",value:function(){this.renderTargets.forEach(function(i){i.dispose()}),this.renderTargets.clear(),this.animationMixer&&(this.animationMixer.stopAllAction(),this.animationMixer=null),this.renderer&&(this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer.domElement.parentElement&&this.renderer.domElement.parentElement.removeChild(this.renderer.domElement),this.renderer=null),this.scene=null,this.camera=null,this.controls=null,t.logger.info("✅ 3D Rendering disposed")}}])}();exports.Rendering3D=o;
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var THREE = require('three');
7
+ var debugLogger = require('../core/debugLogger.js');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n["default"] = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
28
+
29
+ var Rendering3D = /*#__PURE__*/function () {
30
+ function Rendering3D() {
31
+ var _this = this;
32
+ var _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
33
+ _rollupPluginBabelHelpers.classCallCheck(this, Rendering3D);
34
+ /**
35
+ * Lighting utilities
36
+ */
37
+ _rollupPluginBabelHelpers.defineProperty(this, "lighting", {
38
+ /**
39
+ * Add ambient light
40
+ * @param {number|string} color - Light color
41
+ * @param {number} intensity - Light intensity
42
+ * @returns {THREE.AmbientLight} Ambient light
43
+ */
44
+ addAmbient: function addAmbient() {
45
+ var _this$scene;
46
+ var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0x404040;
47
+ var intensity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.4;
48
+ var light = new THREE__namespace.AmbientLight(color, intensity);
49
+ (_this$scene = _this.scene) === null || _this$scene === void 0 || _this$scene.add(light);
50
+ return light;
51
+ },
52
+ /**
53
+ * Add directional light
54
+ * @param {Object} options - Light options
55
+ * @returns {THREE.DirectionalLight} Directional light
56
+ */
57
+ addDirectional: function addDirectional() {
58
+ var _light$position, _light$target$positio, _this$scene2, _this$scene3;
59
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
60
+ var _options$color = options.color,
61
+ color = _options$color === void 0 ? 0xffffff : _options$color,
62
+ _options$intensity = options.intensity,
63
+ intensity = _options$intensity === void 0 ? 1 : _options$intensity,
64
+ _options$position = options.position,
65
+ position = _options$position === void 0 ? [10, 10, 5] : _options$position,
66
+ _options$target = options.target,
67
+ target = _options$target === void 0 ? [0, 0, 0] : _options$target,
68
+ _options$castShadow = options.castShadow,
69
+ castShadow = _options$castShadow === void 0 ? true : _options$castShadow,
70
+ _options$shadowMapSiz = options.shadowMapSize,
71
+ shadowMapSize = _options$shadowMapSiz === void 0 ? 2048 : _options$shadowMapSiz,
72
+ _options$shadowCamera = options.shadowCameraNear,
73
+ shadowCameraNear = _options$shadowCamera === void 0 ? 0.5 : _options$shadowCamera,
74
+ _options$shadowCamera2 = options.shadowCameraFar,
75
+ shadowCameraFar = _options$shadowCamera2 === void 0 ? 50 : _options$shadowCamera2,
76
+ _options$shadowCamera3 = options.shadowCameraLeft,
77
+ shadowCameraLeft = _options$shadowCamera3 === void 0 ? -10 : _options$shadowCamera3,
78
+ _options$shadowCamera4 = options.shadowCameraRight,
79
+ shadowCameraRight = _options$shadowCamera4 === void 0 ? 10 : _options$shadowCamera4,
80
+ _options$shadowCamera5 = options.shadowCameraTop,
81
+ shadowCameraTop = _options$shadowCamera5 === void 0 ? 10 : _options$shadowCamera5,
82
+ _options$shadowCamera6 = options.shadowCameraBottom,
83
+ shadowCameraBottom = _options$shadowCamera6 === void 0 ? -10 : _options$shadowCamera6;
84
+ var light = new THREE__namespace.DirectionalLight(color, intensity);
85
+ (_light$position = light.position).set.apply(_light$position, _rollupPluginBabelHelpers.toConsumableArray(position));
86
+ (_light$target$positio = light.target.position).set.apply(_light$target$positio, _rollupPluginBabelHelpers.toConsumableArray(target));
87
+ if (castShadow) {
88
+ light.castShadow = true;
89
+ light.shadow.mapSize.width = shadowMapSize;
90
+ light.shadow.mapSize.height = shadowMapSize;
91
+ light.shadow.camera.near = shadowCameraNear;
92
+ light.shadow.camera.far = shadowCameraFar;
93
+ light.shadow.camera.left = shadowCameraLeft;
94
+ light.shadow.camera.right = shadowCameraRight;
95
+ light.shadow.camera.top = shadowCameraTop;
96
+ light.shadow.camera.bottom = shadowCameraBottom;
97
+ }
98
+ (_this$scene2 = _this.scene) === null || _this$scene2 === void 0 || _this$scene2.add(light);
99
+ (_this$scene3 = _this.scene) === null || _this$scene3 === void 0 || _this$scene3.add(light.target);
100
+ return light;
101
+ },
102
+ /**
103
+ * Add point light
104
+ * @param {Object} options - Light options
105
+ * @returns {THREE.PointLight} Point light
106
+ */
107
+ addPoint: function addPoint() {
108
+ var _light$position2, _this$scene4;
109
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
110
+ var _options$color2 = options.color,
111
+ color = _options$color2 === void 0 ? 0xffffff : _options$color2,
112
+ _options$intensity2 = options.intensity,
113
+ intensity = _options$intensity2 === void 0 ? 1 : _options$intensity2,
114
+ _options$distance = options.distance,
115
+ distance = _options$distance === void 0 ? 0 : _options$distance,
116
+ _options$decay = options.decay,
117
+ decay = _options$decay === void 0 ? 2 : _options$decay,
118
+ _options$position2 = options.position,
119
+ position = _options$position2 === void 0 ? [0, 10, 0] : _options$position2,
120
+ _options$castShadow2 = options.castShadow,
121
+ castShadow = _options$castShadow2 === void 0 ? false : _options$castShadow2,
122
+ _options$shadowMapSiz2 = options.shadowMapSize,
123
+ shadowMapSize = _options$shadowMapSiz2 === void 0 ? 1024 : _options$shadowMapSiz2;
124
+ var light = new THREE__namespace.PointLight(color, intensity, distance, decay);
125
+ (_light$position2 = light.position).set.apply(_light$position2, _rollupPluginBabelHelpers.toConsumableArray(position));
126
+ if (castShadow) {
127
+ light.castShadow = true;
128
+ light.shadow.mapSize.width = shadowMapSize;
129
+ light.shadow.mapSize.height = shadowMapSize;
130
+ light.shadow.camera.near = 0.1;
131
+ light.shadow.camera.far = 25;
132
+ }
133
+ (_this$scene4 = _this.scene) === null || _this$scene4 === void 0 || _this$scene4.add(light);
134
+ return light;
135
+ },
136
+ /**
137
+ * Add spotlight
138
+ * @param {Object} options - Light options
139
+ * @returns {THREE.SpotLight} Spotlight
140
+ */
141
+ addSpot: function addSpot() {
142
+ var _light$position3, _light$target$positio2, _this$scene5, _this$scene6;
143
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
144
+ var _options$color3 = options.color,
145
+ color = _options$color3 === void 0 ? 0xffffff : _options$color3,
146
+ _options$intensity3 = options.intensity,
147
+ intensity = _options$intensity3 === void 0 ? 1 : _options$intensity3,
148
+ _options$distance2 = options.distance,
149
+ distance = _options$distance2 === void 0 ? 0 : _options$distance2,
150
+ _options$angle = options.angle,
151
+ angle = _options$angle === void 0 ? Math.PI / 3 : _options$angle,
152
+ _options$penumbra = options.penumbra,
153
+ penumbra = _options$penumbra === void 0 ? 0 : _options$penumbra,
154
+ _options$decay2 = options.decay,
155
+ decay = _options$decay2 === void 0 ? 2 : _options$decay2,
156
+ _options$position3 = options.position,
157
+ position = _options$position3 === void 0 ? [0, 10, 0] : _options$position3,
158
+ _options$target2 = options.target,
159
+ target = _options$target2 === void 0 ? [0, 0, 0] : _options$target2,
160
+ _options$castShadow3 = options.castShadow,
161
+ castShadow = _options$castShadow3 === void 0 ? true : _options$castShadow3,
162
+ _options$shadowMapSiz3 = options.shadowMapSize,
163
+ shadowMapSize = _options$shadowMapSiz3 === void 0 ? 1024 : _options$shadowMapSiz3;
164
+ var light = new THREE__namespace.SpotLight(color, intensity, distance, angle, penumbra, decay);
165
+ (_light$position3 = light.position).set.apply(_light$position3, _rollupPluginBabelHelpers.toConsumableArray(position));
166
+ (_light$target$positio2 = light.target.position).set.apply(_light$target$positio2, _rollupPluginBabelHelpers.toConsumableArray(target));
167
+ if (castShadow) {
168
+ light.castShadow = true;
169
+ light.shadow.mapSize.width = shadowMapSize;
170
+ light.shadow.mapSize.height = shadowMapSize;
171
+ light.shadow.camera.near = 0.5;
172
+ light.shadow.camera.far = 50;
173
+ }
174
+ (_this$scene5 = _this.scene) === null || _this$scene5 === void 0 || _this$scene5.add(light);
175
+ (_this$scene6 = _this.scene) === null || _this$scene6 === void 0 || _this$scene6.add(light.target);
176
+ return light;
177
+ }
178
+ });
179
+ /**
180
+ * Material utilities
181
+ */
182
+ _rollupPluginBabelHelpers.defineProperty(this, "materials", {
183
+ /**
184
+ * Create standard material
185
+ * @param {Object} options - Material options
186
+ * @returns {THREE.MeshStandardMaterial} Standard material
187
+ */
188
+ createStandard: function createStandard() {
189
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
190
+ return new THREE__namespace.MeshStandardMaterial(_rollupPluginBabelHelpers.objectSpread2({
191
+ color: 0xffffff,
192
+ metalness: 0.0,
193
+ roughness: 0.5
194
+ }, options));
195
+ },
196
+ /**
197
+ * Create physical material
198
+ * @param {Object} options - Material options
199
+ * @returns {THREE.MeshPhysicalMaterial} Physical material
200
+ */
201
+ createPhysical: function createPhysical() {
202
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
203
+ return new THREE__namespace.MeshPhysicalMaterial(_rollupPluginBabelHelpers.objectSpread2({
204
+ color: 0xffffff,
205
+ metalness: 0.0,
206
+ roughness: 0.5,
207
+ clearcoat: 0.0,
208
+ clearcoatRoughness: 0.0
209
+ }, options));
210
+ },
211
+ /**
212
+ * Create basic material
213
+ * @param {Object} options - Material options
214
+ * @returns {THREE.MeshBasicMaterial} Basic material
215
+ */
216
+ createBasic: function createBasic() {
217
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
218
+ return new THREE__namespace.MeshBasicMaterial(_rollupPluginBabelHelpers.objectSpread2({
219
+ color: 0xffffff
220
+ }, options));
221
+ },
222
+ /**
223
+ * Create shader material
224
+ * @param {Object} options - Material options
225
+ * @returns {THREE.ShaderMaterial} Shader material
226
+ */
227
+ createShader: function createShader() {
228
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
229
+ return new THREE__namespace.ShaderMaterial({
230
+ vertexShader: options.vertexShader || "\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",
231
+ fragmentShader: options.fragmentShader || "\n void main() {\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n }\n ",
232
+ uniforms: options.uniforms || {}
233
+ });
234
+ }
235
+ });
236
+ /**
237
+ * Geometry utilities
238
+ */
239
+ _rollupPluginBabelHelpers.defineProperty(this, "geometry", {
240
+ /**
241
+ * Create box geometry
242
+ * @param {number} width - Width
243
+ * @param {number} height - Height
244
+ * @param {number} depth - Depth
245
+ * @returns {THREE.BoxGeometry} Box geometry
246
+ */
247
+ createBox: function createBox() {
248
+ var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
249
+ var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
250
+ var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
251
+ return new THREE__namespace.BoxGeometry(width, height, depth);
252
+ },
253
+ /**
254
+ * Create sphere geometry
255
+ * @param {number} radius - Radius
256
+ * @param {number} widthSegments - Width segments
257
+ * @param {number} heightSegments - Height segments
258
+ * @returns {THREE.SphereGeometry} Sphere geometry
259
+ */
260
+ createSphere: function createSphere() {
261
+ var radius = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
262
+ var widthSegments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;
263
+ var heightSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 16;
264
+ return new THREE__namespace.SphereGeometry(radius, widthSegments, heightSegments);
265
+ },
266
+ /**
267
+ * Create cylinder geometry
268
+ * @param {number} radiusTop - Top radius
269
+ * @param {number} radiusBottom - Bottom radius
270
+ * @param {number} height - Height
271
+ * @param {number} radialSegments - Radial segments
272
+ * @returns {THREE.CylinderGeometry} Cylinder geometry
273
+ */
274
+ createCylinder: function createCylinder() {
275
+ var radiusTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
276
+ var radiusBottom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
277
+ var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
278
+ var radialSegments = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 32;
279
+ return new THREE__namespace.CylinderGeometry(radiusTop, radiusBottom, height, radialSegments);
280
+ },
281
+ /**
282
+ * Create plane geometry
283
+ * @param {number} width - Width
284
+ * @param {number} height - Height
285
+ * @returns {THREE.PlaneGeometry} Plane geometry
286
+ */
287
+ createPlane: function createPlane() {
288
+ var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
289
+ var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
290
+ return new THREE__namespace.PlaneGeometry(width, height);
291
+ }
292
+ });
293
+ /**
294
+ * Render target utilities
295
+ */
296
+ _rollupPluginBabelHelpers.defineProperty(this, "renderTargets", {
297
+ /**
298
+ * Create render target
299
+ * @param {number} width - Width
300
+ * @param {number} height - Height
301
+ * @param {Object} options - Render target options
302
+ * @returns {THREE.WebGLRenderTarget} Render target
303
+ */
304
+ create: function create(width, height) {
305
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
306
+ var renderTarget = new THREE__namespace.WebGLRenderTarget(width, height, _rollupPluginBabelHelpers.objectSpread2({
307
+ minFilter: THREE__namespace.LinearFilter,
308
+ magFilter: THREE__namespace.LinearFilter,
309
+ format: THREE__namespace.RGBAFormat,
310
+ type: THREE__namespace.UnsignedByteType
311
+ }, options));
312
+ var id = "rt_".concat(Date.now(), "_").concat(Math.random().toString(36).substr(2, 9));
313
+ _this.renderTargets.set(id, renderTarget);
314
+ return {
315
+ id: id,
316
+ renderTarget: renderTarget
317
+ };
318
+ },
319
+ /**
320
+ * Get render target by ID
321
+ * @param {string} id - Render target ID
322
+ * @returns {THREE.WebGLRenderTarget} Render target
323
+ */
324
+ get: function get(id) {
325
+ return _this.renderTargets.get(id);
326
+ },
327
+ /**
328
+ * Remove render target
329
+ * @param {string} id - Render target ID
330
+ */
331
+ remove: function remove(id) {
332
+ var renderTarget = _this.renderTargets.get(id);
333
+ if (renderTarget) {
334
+ renderTarget.dispose();
335
+ _this.renderTargets.delete(id);
336
+ }
337
+ }
338
+ });
339
+ /**
340
+ * Animation utilities
341
+ */
342
+ _rollupPluginBabelHelpers.defineProperty(this, "animation", {
343
+ /**
344
+ * Create animation mixer
345
+ * @param {THREE.Object3D} object - Object to animate
346
+ * @returns {THREE.AnimationMixer} Animation mixer
347
+ */
348
+ createMixer: function createMixer(object) {
349
+ _this.animationMixer = new THREE__namespace.AnimationMixer(object);
350
+ return _this.animationMixer;
351
+ },
352
+ /**
353
+ * Add animation clip
354
+ * @param {THREE.AnimationClip} clip - Animation clip
355
+ * @returns {THREE.AnimationAction} Animation action
356
+ */
357
+ addClip: function addClip(clip) {
358
+ if (!_this.animationMixer) {
359
+ throw new Error('Animation mixer not created');
360
+ }
361
+ return _this.animationMixer.clipAction(clip);
362
+ },
363
+ /**
364
+ * Update animations
365
+ * @param {number} deltaTime - Delta time
366
+ */
367
+ update: function update(deltaTime) {
368
+ if (_this.animationMixer) {
369
+ _this.animationMixer.update(deltaTime);
370
+ }
371
+ }
372
+ });
373
+ /**
374
+ * Screenshot utilities
375
+ */
376
+ _rollupPluginBabelHelpers.defineProperty(this, "screenshot", {
377
+ /**
378
+ * Capture screenshot as data URL
379
+ * @param {string} format - Image format
380
+ * @param {number} quality - Image quality (0-1)
381
+ * @returns {string} Data URL
382
+ */
383
+ toDataURL: function toDataURL() {
384
+ var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'image/png';
385
+ var quality = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1.0;
386
+ if (!_this.renderer) return '';
387
+ return _this.renderer.domElement.toDataURL(format, quality);
388
+ },
389
+ /**
390
+ * Capture screenshot as blob
391
+ * @param {string} format - Image format
392
+ * @param {number} quality - Image quality (0-1)
393
+ * @returns {Promise<Blob>} Image blob
394
+ */
395
+ toBlob: function toBlob() {
396
+ var format = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'image/png';
397
+ var quality = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1.0;
398
+ if (!_this.renderer) return Promise.resolve(null);
399
+ return new Promise(function (resolve) {
400
+ _this.renderer.domElement.toBlob(resolve, format, quality);
401
+ });
402
+ }
403
+ });
404
+ this.options = _rollupPluginBabelHelpers.objectSpread2({
405
+ antialias: true,
406
+ alpha: true,
407
+ shadowMapEnabled: true,
408
+ shadowMapType: THREE__namespace.PCFSoftShadowMap,
409
+ toneMapping: THREE__namespace.ACESFilmicToneMapping,
410
+ toneMappingExposure: 1.0,
411
+ outputColorSpace: THREE__namespace.SRGBColorSpace
412
+ }, _options);
413
+ this.renderer = null;
414
+ this.scene = null;
415
+ this.camera = null;
416
+ this.controls = null;
417
+ this.renderTargets = new Map();
418
+ this.postProcessing = {
419
+ composer: null,
420
+ passes: []
421
+ };
422
+ this.stats = {
423
+ triangles: 0,
424
+ geometries: 0,
425
+ textures: 0,
426
+ calls: 0,
427
+ frameTime: 0
428
+ };
429
+ this.animationMixer = null;
430
+ this.clock = new THREE__namespace.Clock();
431
+ }
432
+
433
+ /**
434
+ * Initialize renderer
435
+ * @param {HTMLElement} container - Container element
436
+ * @returns {THREE.WebGLRenderer} Renderer instance
437
+ */
438
+ return _rollupPluginBabelHelpers.createClass(Rendering3D, [{
439
+ key: "initializeRenderer",
440
+ value: function initializeRenderer(container) {
441
+ if (this.renderer) {
442
+ this.dispose();
443
+ }
444
+ try {
445
+ this.renderer = new THREE__namespace.WebGLRenderer({
446
+ antialias: this.options.antialias,
447
+ alpha: this.options.alpha,
448
+ preserveDrawingBuffer: false,
449
+ powerPreference: 'high-performance'
450
+ });
451
+
452
+ // Configure renderer
453
+ this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
454
+ this.renderer.setSize(container.clientWidth, container.clientHeight);
455
+ this.renderer.setClearColor(0x000000, 0);
456
+
457
+ // Shadow mapping
458
+ if (this.options.shadowMapEnabled) {
459
+ this.renderer.shadowMap.enabled = true;
460
+ this.renderer.shadowMap.type = this.options.shadowMapType;
461
+ }
462
+
463
+ // Tone mapping
464
+ this.renderer.toneMapping = this.options.toneMapping;
465
+ this.renderer.toneMappingExposure = this.options.toneMappingExposure;
466
+ this.renderer.outputColorSpace = this.options.outputColorSpace;
467
+
468
+ // Physical lights
469
+ this.renderer.useLegacyLights = false;
470
+ container.appendChild(this.renderer.domElement);
471
+ debugLogger.logger.info('✅ 3D Renderer initialized');
472
+ return this.renderer;
473
+ } catch (error) {
474
+ debugLogger.logger.error('❌ Failed to initialize 3D renderer:', error);
475
+ throw error;
476
+ }
477
+ }
478
+
479
+ /**
480
+ * Create and configure scene
481
+ * @param {Object} options - Scene options
482
+ * @returns {THREE.Scene} Scene instance
483
+ */
484
+ }, {
485
+ key: "createScene",
486
+ value: function createScene() {
487
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
488
+ var _options$background = options.background,
489
+ background = _options$background === void 0 ? null : _options$background,
490
+ _options$environment = options.environment,
491
+ environment = _options$environment === void 0 ? null : _options$environment,
492
+ _options$fog = options.fog,
493
+ fog = _options$fog === void 0 ? null : _options$fog;
494
+ this.scene = new THREE__namespace.Scene();
495
+ if (background) {
496
+ if (typeof background === 'string') {
497
+ this.scene.background = new THREE__namespace.Color(background);
498
+ } else if (background.isTexture) {
499
+ this.scene.background = background;
500
+ }
501
+ }
502
+ if (environment && environment.isTexture) {
503
+ this.scene.environment = environment;
504
+ }
505
+ if (fog) {
506
+ if (fog.type === 'linear') {
507
+ this.scene.fog = new THREE__namespace.Fog(fog.color, fog.near, fog.far);
508
+ } else if (fog.type === 'exponential') {
509
+ this.scene.fog = new THREE__namespace.FogExp2(fog.color, fog.density);
510
+ }
511
+ }
512
+ debugLogger.logger.info('✅ 3D Scene created');
513
+ return this.scene;
514
+ }
515
+
516
+ /**
517
+ * Create camera
518
+ * @param {string} type - Camera type ('perspective' or 'orthographic')
519
+ * @param {Object} options - Camera options
520
+ * @returns {THREE.Camera} Camera instance
521
+ */
522
+ }, {
523
+ key: "createCamera",
524
+ value: function createCamera() {
525
+ var _this$renderer;
526
+ var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'perspective';
527
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
528
+ var container = (_this$renderer = this.renderer) === null || _this$renderer === void 0 || (_this$renderer = _this$renderer.domElement) === null || _this$renderer === void 0 ? void 0 : _this$renderer.parentElement;
529
+ var aspect = container ? container.clientWidth / container.clientHeight : 1;
530
+ if (type === 'perspective') {
531
+ var _options$fov = options.fov,
532
+ fov = _options$fov === void 0 ? 75 : _options$fov,
533
+ _options$near = options.near,
534
+ near = _options$near === void 0 ? 0.1 : _options$near,
535
+ _options$far = options.far,
536
+ far = _options$far === void 0 ? 1000 : _options$far;
537
+ options.position;
538
+ this.camera = new THREE__namespace.PerspectiveCamera(fov, aspect, near, far);
539
+ } else if (type === 'orthographic') {
540
+ var _options$left = options.left,
541
+ left = _options$left === void 0 ? -10 : _options$left,
542
+ _options$right = options.right,
543
+ right = _options$right === void 0 ? 10 : _options$right,
544
+ _options$top = options.top,
545
+ top = _options$top === void 0 ? 10 : _options$top,
546
+ _options$bottom = options.bottom,
547
+ bottom = _options$bottom === void 0 ? -10 : _options$bottom,
548
+ _options$near2 = options.near,
549
+ _near = _options$near2 === void 0 ? 0.1 : _options$near2,
550
+ _options$far2 = options.far,
551
+ _far = _options$far2 === void 0 ? 1000 : _options$far2;
552
+ options.position;
553
+ this.camera = new THREE__namespace.OrthographicCamera(left, right, top, bottom, _near, _far);
554
+ }
555
+ if (this.camera) {
556
+ var _this$camera$position;
557
+ (_this$camera$position = this.camera.position).set.apply(_this$camera$position, _rollupPluginBabelHelpers.toConsumableArray(position));
558
+ debugLogger.logger.info("\u2705 ".concat(type, " camera created"));
559
+ }
560
+ return this.camera;
561
+ }
562
+ }, {
563
+ key: "render",
564
+ value:
565
+ /**
566
+ * Render scene
567
+ * @param {THREE.Scene} scene - Scene to render (optional)
568
+ * @param {THREE.Camera} camera - Camera to use (optional)
569
+ * @param {THREE.WebGLRenderTarget} renderTarget - Render target (optional)
570
+ */
571
+ function render() {
572
+ var scene = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
573
+ var camera = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
574
+ var renderTarget = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
575
+ if (!this.renderer) return;
576
+ var renderScene = scene || this.scene;
577
+ var renderCamera = camera || this.camera;
578
+ if (!renderScene || !renderCamera) return;
579
+
580
+ // Update stats
581
+ var startTime = performance.now();
582
+
583
+ // Update animations
584
+ var deltaTime = this.clock.getDelta();
585
+ this.animation.update(deltaTime);
586
+
587
+ // Render
588
+ this.renderer.render(renderScene, renderCamera, renderTarget);
589
+
590
+ // Update stats
591
+ this.stats.frameTime = performance.now() - startTime;
592
+ this.updateRenderStats();
593
+ }
594
+
595
+ /**
596
+ * Update render statistics
597
+ */
598
+ }, {
599
+ key: "updateRenderStats",
600
+ value: function updateRenderStats() {
601
+ if (!this.renderer) return;
602
+ var info = this.renderer.info;
603
+ this.stats.triangles = info.render.triangles;
604
+ this.stats.geometries = info.memory.geometries;
605
+ this.stats.textures = info.memory.textures;
606
+ this.stats.calls = info.render.calls;
607
+ }
608
+
609
+ /**
610
+ * Get render statistics
611
+ * @returns {Object} Render stats
612
+ */
613
+ }, {
614
+ key: "getRenderStats",
615
+ value: function getRenderStats() {
616
+ return _rollupPluginBabelHelpers.objectSpread2({}, this.stats);
617
+ }
618
+
619
+ /**
620
+ * Resize renderer
621
+ * @param {number} width - New width
622
+ * @param {number} height - New height
623
+ */
624
+ }, {
625
+ key: "resize",
626
+ value: function resize(width, height) {
627
+ if (!this.renderer) return;
628
+ this.renderer.setSize(width, height);
629
+ if (this.camera) {
630
+ if (this.camera.isPerspectiveCamera) {
631
+ this.camera.aspect = width / height;
632
+ } else if (this.camera.isOrthographicCamera) {
633
+ var aspect = width / height;
634
+ this.camera.left = -10 * aspect;
635
+ this.camera.right = 10 * aspect;
636
+ this.camera.top = 10;
637
+ this.camera.bottom = -10;
638
+ }
639
+ this.camera.updateProjectionMatrix();
640
+ }
641
+
642
+ // Update render targets
643
+ this.renderTargets.forEach(function (renderTarget) {
644
+ renderTarget.setSize(width, height);
645
+ });
646
+ }
647
+ }, {
648
+ key: "dispose",
649
+ value:
650
+ /**
651
+ * Dispose of all resources
652
+ */
653
+ function dispose() {
654
+ // Dispose render targets
655
+ this.renderTargets.forEach(function (renderTarget) {
656
+ renderTarget.dispose();
657
+ });
658
+ this.renderTargets.clear();
659
+
660
+ // Dispose animation mixer
661
+ if (this.animationMixer) {
662
+ this.animationMixer.stopAllAction();
663
+ this.animationMixer = null;
664
+ }
665
+
666
+ // Dispose renderer
667
+ if (this.renderer) {
668
+ this.renderer.dispose();
669
+ this.renderer.forceContextLoss();
670
+ if (this.renderer.domElement.parentElement) {
671
+ this.renderer.domElement.parentElement.removeChild(this.renderer.domElement);
672
+ }
673
+ this.renderer = null;
674
+ }
675
+
676
+ // Clear references
677
+ this.scene = null;
678
+ this.camera = null;
679
+ this.controls = null;
680
+ debugLogger.logger.info('✅ 3D Rendering disposed');
681
+ }
682
+ }]);
683
+ }();
684
+
685
+ exports.Rendering3D = Rendering3D;