@2112-lab/central-plant 0.1.2 â 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle/index.js +1 -15498
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -366
- package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1 -1448
- package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1 -1292
- package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +1 -4374
- package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +1 -465
- package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +1 -0
- package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +1 -117
- package/dist/cjs/src/analysis/analysis.js +1 -0
- package/dist/cjs/src/analysis/testing.js +1 -0
- package/dist/cjs/src/core/centralPlant.js +1 -0
- package/dist/cjs/src/core/debugLogger.js +1 -0
- package/dist/cjs/src/core/mathUtils.js +1 -0
- package/dist/cjs/src/core/nameUtils.js +1 -0
- package/dist/cjs/src/data/export.js +1 -0
- package/dist/cjs/src/data/import.js +1 -0
- package/dist/cjs/src/data/numerics.js +1 -0
- package/dist/cjs/src/helpers/sceneHelper.js +1 -0
- package/dist/cjs/src/index.js +1 -79
- package/dist/cjs/src/managers/components/animationManager.js +1 -0
- package/dist/cjs/src/managers/components/componentManager.js +1 -0
- package/dist/cjs/src/managers/components/pathfindingManager.js +1 -0
- package/dist/cjs/src/managers/controls/TransformControls.js +1 -0
- package/dist/cjs/src/managers/controls/cameraControlsManager.js +1 -0
- package/dist/cjs/src/managers/controls/dragDropManager.js +1 -0
- package/dist/cjs/src/managers/controls/keyboardControlsManager.js +1 -0
- package/dist/cjs/src/managers/controls/transformControlsManager.js +1 -0
- package/dist/cjs/src/managers/environment/environmentManager.js +1 -0
- package/dist/cjs/src/managers/environment/textureConfig.js +1 -0
- package/dist/cjs/src/managers/scene/sceneExportManager.js +1 -0
- package/dist/cjs/src/managers/scene/sceneInitializationManager.js +1 -0
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1 -0
- package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +1 -0
- package/dist/cjs/src/managers/system/disposalManager.js +1 -0
- package/dist/cjs/src/managers/system/hotReloadManager.js +1 -0
- package/dist/cjs/src/managers/system/performanceMonitor.js +1 -0
- package/dist/cjs/src/rendering/modelPreloader.js +1 -0
- package/dist/cjs/src/rendering/rendering2D.js +1 -0
- package/dist/cjs/src/rendering/rendering3D.js +1 -0
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -339
- package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1 -1444
- package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1 -1287
- package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +1 -4370
- package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +1 -461
- package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +1 -0
- package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +1 -113
- package/dist/esm/src/analysis/analysis.js +1 -0
- package/dist/esm/src/analysis/testing.js +1 -0
- package/dist/esm/src/core/centralPlant.js +1 -0
- package/dist/esm/src/core/debugLogger.js +1 -0
- package/dist/esm/src/core/mathUtils.js +1 -0
- package/dist/esm/src/core/nameUtils.js +1 -0
- package/dist/esm/src/data/export.js +1 -0
- package/dist/esm/src/data/import.js +1 -0
- package/dist/esm/src/data/numerics.js +1 -0
- package/dist/esm/src/helpers/sceneHelper.js +1 -0
- package/dist/esm/src/index.js +1 -70
- package/dist/esm/src/managers/components/animationManager.js +1 -0
- package/dist/esm/src/managers/components/componentManager.js +1 -0
- package/dist/esm/src/managers/components/pathfindingManager.js +1 -0
- package/dist/esm/src/managers/controls/TransformControls.js +1 -0
- package/dist/esm/src/managers/controls/cameraControlsManager.js +1 -0
- package/dist/esm/src/managers/controls/dragDropManager.js +1 -0
- package/dist/esm/src/managers/controls/keyboardControlsManager.js +1 -0
- package/dist/esm/src/managers/controls/transformControlsManager.js +1 -0
- package/dist/esm/src/managers/environment/environmentManager.js +1 -0
- package/dist/esm/src/managers/environment/textureConfig.js +1 -0
- package/dist/esm/src/managers/scene/sceneExportManager.js +1 -0
- package/dist/esm/src/managers/scene/sceneInitializationManager.js +1 -0
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +1 -0
- package/dist/esm/src/managers/scene/sceneTooltipsManager.js +1 -0
- package/dist/esm/src/managers/system/disposalManager.js +1 -0
- package/dist/esm/src/managers/system/hotReloadManager.js +1 -0
- package/dist/esm/src/managers/system/performanceMonitor.js +1 -0
- package/dist/esm/src/rendering/modelPreloader.js +1 -0
- package/dist/esm/src/rendering/rendering2D.js +1 -0
- package/dist/esm/src/rendering/rendering3D.js +1 -0
- package/dist/index.d.ts +52 -255
- package/package.json +3 -6
- package/dist/cjs/node_modules/three/examples/jsm/controls/TransformControls.js +0 -1543
- package/dist/cjs/src/animationManager.js +0 -121
- package/dist/cjs/src/componentManager.js +0 -151
- package/dist/cjs/src/debugLogger.js +0 -176
- package/dist/cjs/src/disposalManager.js +0 -185
- package/dist/cjs/src/environmentManager.js +0 -1308
- package/dist/cjs/src/hotReloadManager.js +0 -252
- package/dist/cjs/src/keyboardControlsManager.js +0 -206
- package/dist/cjs/src/nameUtils.js +0 -106
- package/dist/cjs/src/pathfindingManager.js +0 -503
- package/dist/cjs/src/performanceMonitor.js +0 -718
- package/dist/cjs/src/sceneExportManager.js +0 -292
- package/dist/cjs/src/sceneInitializationManager.js +0 -540
- package/dist/cjs/src/textureConfig.js +0 -624
- package/dist/cjs/src/transformControlsManager.js +0 -851
- package/dist/esm/node_modules/three/examples/jsm/controls/TransformControls.js +0 -1537
- package/dist/esm/src/animationManager.js +0 -112
- package/dist/esm/src/componentManager.js +0 -123
- package/dist/esm/src/debugLogger.js +0 -167
- package/dist/esm/src/disposalManager.js +0 -155
- package/dist/esm/src/environmentManager.js +0 -1282
- package/dist/esm/src/hotReloadManager.js +0 -244
- package/dist/esm/src/keyboardControlsManager.js +0 -196
- package/dist/esm/src/nameUtils.js +0 -99
- package/dist/esm/src/pathfindingManager.js +0 -479
- package/dist/esm/src/performanceMonitor.js +0 -712
- package/dist/esm/src/sceneExportManager.js +0 -286
- package/dist/esm/src/sceneInitializationManager.js +0 -513
- package/dist/esm/src/textureConfig.js +0 -595
- package/dist/esm/src/transformControlsManager.js +0 -827
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,toConsumableArray as r,classCallCheck as i}from"../../_virtual/_rollupPluginBabelHelpers.js";var n=function(){return e(function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"SceneViewer",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";i(this,e),this.namespace=r,this.debugLevel=n,this.isProduction="production"===process.env.NODE_ENV,this.enabled=!this.isProduction,this.levels={error:0,warn:1,info:2,debug:3,verbose:4},this.currentLevel=this.levels[n]||this.levels.info},[{key:"setLevel",value:function(e){return this.currentLevel=this.levels[e]||this.levels.info,this}},{key:"enable",value:function(){return this.enabled=!0,this}},{key:"disable",value:function(){return this.enabled=!1,this}},{key:"_shouldLog",value:function(e){return this.enabled&&this.levels[e]<=this.currentLevel}},{key:"_formatMessage",value:function(e,r){for(var i="[".concat(this.namespace,":").concat(e.toUpperCase(),"]"),n=arguments.length,t=new Array(n>2?n-2:0),s=2;s<n;s++)t[s-2]=arguments[s];return[i,r].concat(t)}},{key:"error",value:function(e){if(this.i("error")){for(var i,n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];(i=console).error.apply(i,r(this.t.apply(this,["error",e].concat(t))))}}},{key:"warn",value:function(e){if(this.i("warn")){for(var i,n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];(i=console).warn.apply(i,r(this.t.apply(this,["warn",e].concat(t))))}}},{key:"info",value:function(e){if(this.i("info")){for(var i,n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];(i=console).log.apply(i,r(this.t.apply(this,["info",e].concat(t))))}}},{key:"debug",value:function(e){if(this.i("debug")){for(var i,n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];(i=console).debug.apply(i,r(this.t.apply(this,["debug",e].concat(t))))}}},{key:"verbose",value:function(e){if(this.i("verbose")){for(var i,n=arguments.length,t=new Array(n>1?n-1:0),s=1;s<n;s++)t[s-1]=arguments[s];(i=console).debug.apply(i,r(this.t.apply(this,["verbose",e].concat(t))))}}},{key:"phase",value:function(e,r){for(var i=arguments.length,n=new Array(i>2?i-2:0),t=2;t<i;t++)n[t-2]=arguments[t];this.info.apply(this,["đ PHASE ".concat(e,": ").concat(r)].concat(n))}},{key:"success",value:function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];this.info.apply(this,["â
".concat(e)].concat(i))}},{key:"failure",value:function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];this.error.apply(this,["â ".concat(e)].concat(i))}},{key:"loading",value:function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];this.debug.apply(this,["đ ".concat(e)].concat(i))}},{key:"timing",value:function(e){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];this.debug.apply(this,["âąī¸ ".concat(e)].concat(i))}}])}(),t=new n("SceneViewer","info"),s=new n("Transform","warn"),o=new n("Pathfinder","info"),a=new n("Models","info");new n("Materials","warn");export{n as DebugLogger,t as logger,a as modelLogger,o as pathfinderLogger,s as transformLogger};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{defineProperty as t,createClass as n,toConsumableArray as r,slicedToArray as e,classCallCheck as u}from"../../_virtual/_rollupPluginBabelHelpers.js";var a,i=n(function t(){u(this,t)});a=i,t(i,"PI",Math.PI),t(i,"TWO_PI",2*Math.PI),t(i,"HALF_PI",Math.PI/2),t(i,"DEG_TO_RAD",Math.PI/180),t(i,"RAD_TO_DEG",180/Math.PI),t(i,"EPSILON",1e-10),t(i,"angle",{toRadians:function(t){return t*a.DEG_TO_RAD},toDegrees:function(t){return t*a.RAD_TO_DEG},normalize:function(t){for(;t<0;)t+=a.TWO_PI;for(;t>=a.TWO_PI;)t-=a.TWO_PI;return t},normalizeSignedAngle:function(t){return(t=a.angle.normalize(t))>Math.PI?t-a.TWO_PI:t},distance:function(t,n){var r=a.angle.normalizeSignedAngle(n-t);return Math.abs(r)},lerp:function(t,n,r){var e=a.angle.normalizeSignedAngle(n-t);return a.angle.normalize(t+e*r)}}),t(i,"interpolation",{linear:function(t,n,r){return t+(n-t)*r},smoothstep:function(t,n,r){var e=r*r*(3-2*r);return a.interpolation.linear(t,n,e)},smootherstep:function(t,n,r){var e=r*r*r*(r*(6*r-15)+10);return a.interpolation.linear(t,n,e)},cosine:function(t,n,r){var e=r*Math.PI,u=.5*(1-Math.cos(e));return t*(1-u)+n*u},cubic:function(t,n,r,e,u){var a=u*u;return.5*(2*n+(-t+r)*u+(2*t-5*n+4*r-e)*a+(3*n-t-3*r+e)*(a*u))}}),t(i,"easing",{easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:(4-2*t)*t-1},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t},easeInSine:function(t){return 1-Math.cos(t*a.HALF_PI)},easeOutSine:function(t){return Math.sin(t*a.HALF_PI)},easeInOutSine:function(t){return.5*(1-Math.cos(a.PI*t))},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1)))},easeInCirc:function(t){return 1-Math.sqrt(1-t*t)},easeOutCirc:function(t){return Math.sqrt(1- --t*t)},easeInOutCirc:function(t){return(t*=2)<1?.5*(1-Math.sqrt(1-t*t)):(t-=2,.5*(Math.sqrt(1-t*t)+1))},easeInElastic:function(t){if(0===t)return 0;if(1===t)return 1;return-Math.pow(2,10*(t-=1))*Math.sin((t-.075)*a.TWO_PI/.3)},easeOutElastic:function(t){if(0===t)return 0;if(1===t)return 1;return Math.pow(2,-10*t)*Math.sin((t-.075)*a.TWO_PI/.3)+1}}),t(i,"geometry",{triangleArea:function(t,n,r){return.5*Math.abs((n[0]-t[0])*(r[1]-t[1])-(r[0]-t[0])*(n[1]-t[1]))},polygonArea:function(t){for(var n=0,r=t.length,e=0;e<r;e++){var u=(e+1)%r;n+=t[e][0]*t[u][1],n-=t[u][0]*t[e][1]}return Math.abs(n)/2},pointInTriangle:function(t,n,r,e){var u=a.geometry.triangleArea(n,r,e),i=a.geometry.triangleArea(t,r,e),o=a.geometry.triangleArea(n,t,e),c=a.geometry.triangleArea(n,r,t);return Math.abs(u-(i+o+c))<a.EPSILON},polygonCentroid:function(t){for(var n=0,r=0,e=0,u=t.length,a=0;a<u;a++){var i=(a+1)%u,o=t[a][0]*t[i][1]-t[i][0]*t[a][1];e+=o,n+=(t[a][0]+t[i][0])*o,r+=(t[a][1]+t[i][1])*o}return[n/=6*(e/=2),r/=6*e]}}),t(i,"random",{float:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return t+Math.random()*(n-t)},int:function(t,n){return Math.floor(a.random.float(t,n+1))},boolean:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;return Math.random()<t},choice:function(t){return t[a.random.int(0,t.length-1)]},shuffle:function(t){for(var n=r(t),e=n.length-1;e>0;e--){var u=Math.floor(Math.random()*(e+1)),a=[n[u],n[e]];n[e]=a[0],n[u]=a[1]}return n},unitCircle:function(){var t=a.random.float(0,a.TWO_PI);return[Math.cos(t),Math.sin(t)]},insideUnitCircle:function(){var t=a.random.unitCircle(),n=e(t,2),r=n[0],u=n[1],i=Math.sqrt(Math.random());return[r*i,u*i]},unitSphere:function(){var t=Math.random(),n=Math.random(),r=a.TWO_PI*t,e=Math.acos(2*n-1);return[Math.sin(e)*Math.cos(r),Math.sin(e)*Math.sin(r),Math.cos(e)]}}),t(i,"color",{hslToRgb:function(t,n,r){t/=360;var e,u,a,i=(1-Math.abs(2*r-1))*n,o=i*(1-Math.abs(6*t%2-1)),c=r-i/2;return t<1/6?(e=i,u=o,a=0):t<2/6?(e=o,u=i,a=0):t<.5?(e=0,u=i,a=o):t<4/6?(e=0,u=o,a=i):t<5/6?(e=o,u=0,a=i):(e=i,u=0,a=o),[Math.round(255*(e+c)),Math.round(255*(u+c)),Math.round(255*(a+c))]},rgbToHsl:function(t,n,r){t/=255,n/=255,r/=255;var e=Math.max(t,n,r),u=Math.min(t,n,r),a=(e+u)/2;if(e===u)return[0,0,a];var i,o=e-u,c=a>.5?o/(2-e-u):o/(e+u);switch(e){case t:i=(n-r)/o+(n<r?6:0);break;case n:i=(r-t)/o+2;break;case r:i=(t-n)/o+4}return[360*(i/=6),c,a]},lerp:function(t,n,r){return[Math.round(a.interpolation.linear(t[0],n[0],r)),Math.round(a.interpolation.linear(t[1],n[1],r)),Math.round(a.interpolation.linear(t[2],n[2],r))]}}),t(i,"utils",{clamp:function(t,n,r){return Math.max(n,Math.min(r,t))},map:function(t,n,r,e,u){return e+(t-n)*(u-e)/(r-n)},isPowerOfTwo:function(t){return!(t&t-1)},nextPowerOfTwo:function(t){return Math.pow(2,Math.ceil(Math.log2(t)))},gcd:function(t,n){return 0===n?t:a.utils.gcd(n,t%n)},lcm:function(t,n){return Math.abs(t*n)/a.utils.gcd(t,n)},approxEqual:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.EPSILON;return Math.abs(t-n)<r},round:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=Math.pow(10,n);return Math.round(t*r)/r}});export{i as MathUtils};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(n){if(!n)return null;var r=n.toUpperCase().replace(/\s+COMPONENT$/i,"").replace(/\s+/g,"-").replace(/[^A-Z0-9\-]/g,"");return r=r.replace(/-COMPONENT$/,"")}function r(r,u){if(!r||!u)return null;var l=null;return r.traverse(function(r){var i;if(!l)if(r.uuid!==u)if((null===(i=r.userData)||void 0===i?void 0:i.originalUuid)!==u){if(r.name&&n(r.name)===u)return void(l=r)}else l=r;else l=r}),l}function u(r){var u;return r?null!==(u=r.userData)&&void 0!==u&&u.originalUuid?r.userData.originalUuid:r.uuid&&!r.uuid.includes("-")&&r.uuid.length>10?r.uuid:r.name?n(r.name):null:null}export{r as findObjectByHardcodedUuid,n as generateUuidFromName,u as getHardcodedUuid};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,objectSpread2 as t,toConsumableArray as r,classCallCheck as n,typeof as o,asyncToGenerator as i,regenerator as a,createForOfIteratorHelper as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import"three";import{GLTFExporter as u}from"../../node_modules/three/examples/jsm/exporters/GLTFExporter.js";import{OBJExporter as c}from"../../node_modules/three/examples/jsm/exporters/OBJExporter.js";import{STLExporter as l}from"../../node_modules/three/examples/jsm/exporters/STLExporter.js";import{PLYExporter as f}from"../../node_modules/three/examples/jsm/exporters/PLYExporter.js";import{logger as p}from"../core/debugLogger.js";var m=function(){return e(function e(){n(this,e),this.exporters={gltf:new u,obj:new c,stl:new l,ply:new f},this.supportedFormats={models:["gltf","glb","obj","stl","ply","dae"],scenes:["json"],images:["png","jpg","jpeg","webp"],data:["json","csv","xml"]},this.exportHistory=[]},[{key:"exportModel",value:(g=i(a().m(function e(r,n){var o,i,s,u,c,l,f,m,v,d,h=arguments;return a().w(function(e){for(;;)switch(e.n){case 0:o=h.length>2&&void 0!==h[2]?h[2]:{},i=performance.now(),p.info("đ Exporting model to ".concat(n.toUpperCase(),"...")),e.p=1,u=t({binary:"glb"===n,embedImages:!0,includeCustomExtensions:!1},o),v=n.toLowerCase(),e.n="gltf"===v||"glb"===v?2:"obj"===v?4:"stl"===v?6:8;break;case 2:return e.n=3,this.exportGLTF(r,u);case 3:case 5:case 7:return s=e.v,e.a(3,9);case 4:return e.n=5,this.exportOBJ(r,u);case 6:return e.n=7,this.exportSTL(r,u);case 8:throw new Error("Unsupported format: ".concat(n));case 9:return c=performance.now()-i,l={timestamp:(new Date).toISOString(),format:n.toLowerCase(),objectName:r.name||"Unnamed Object",exportTime:c,options:u,success:!0},this.exportHistory.push(l),p.info("â
Model exported successfully to ".concat(n.toUpperCase()," in ").concat(c.toFixed(2),"ms")),e.a(2,{data:s,format:n,exportTime:c,filename:this.generateFilename(r.name||"model",n)});case 10:throw e.p=10,d=e.v,f=performance.now()-i,m={timestamp:(new Date).toISOString(),format:n.toLowerCase(),objectName:r.name||"Unnamed Object",exportTime:f,options:o,success:!1,error:d.message},this.exportHistory.push(m),p.error("â Failed to export model to ".concat(n.toUpperCase(),":"),d),d;case 11:return e.a(2)}},e,this,[[1,10]])})),function(e,t){return g.apply(this,arguments)})},{key:"exportGLTF",value:(y=i(a().m(function e(t){var r,n=this,o=arguments;return a().w(function(e){for(;;)if(0===e.n)return r=o.length>1&&void 0!==o[1]?o[1]:{},e.a(2,new Promise(function(e,o){n.exporters.gltf.parse(t,function(t){return e(t)},o,r)}))},e)})),function(e){return y.apply(this,arguments)})},{key:"exportOBJ",value:(h=i(a().m(function e(t){var r=this;return a().w(function(e){for(;;)if(0===e.n)return e.a(2,new Promise(function(e){e(r.exporters.obj.parse(t))}))},e)})),function(e){return h.apply(this,arguments)})},{key:"exportSTL",value:(d=i(a().m(function e(t){var r,n=this,o=arguments;return a().w(function(e){for(;;)if(0===e.n)return r=o.length>1&&void 0!==o[1]?o[1]:{},e.a(2,new Promise(function(e){e(n.exporters.stl.parse(t,r))}))},e)})),function(e){return d.apply(this,arguments)})},{key:"exportPLY",value:(v=i(a().m(function e(t){var r,n=this,o=arguments;return a().w(function(e){for(;;)if(0===e.n)return r=o.length>1&&void 0!==o[1]?o[1]:{},e.a(2,new Promise(function(e){e(n.exporters.ply.parse(t,r))}))},e)})),function(e){return v.apply(this,arguments)})},{key:"exportSceneConfig",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};p.info("đ Exporting scene configuration...");try{var i={metadata:t({version:"1.0.0",generator:"Export",timestamp:(new Date).toISOString()},o),scene:this.serializeObject(e),connections:r(n),cameras:this.extractCameras(e),lights:this.extractLights(e)};return p.info("â
Scene configuration exported successfully"),i}catch(e){throw p.error("â Failed to export scene configuration:",e),e}}},{key:"serializeObject",value:function(e){var r=this,n={uuid:e.uuid,name:e.name,type:e.type,position:e.position.toArray(),rotation:e.rotation.toArray(),scale:e.scale.toArray(),visible:e.visible,castShadow:e.castShadow,receiveShadow:e.receiveShadow,userData:t({},e.userData),children:[]};return e.geometry&&(n.geometry={type:e.geometry.type,uuid:e.geometry.uuid,attributes:this.serializeGeometryAttributes(e.geometry)}),e.material&&(n.material=this.serializeMaterial(e.material)),e.children.forEach(function(e){n.children.push(r.serializeObject(e))}),n}},{key:"serializeGeometryAttributes",value:function(e){var t={};return Object.keys(e.attributes).forEach(function(r){var n=e.attributes[r];t[r]={type:n.constructor.name,itemSize:n.itemSize,count:n.count,normalized:n.normalized}}),t}},{key:"serializeMaterial",value:function(e){var t={type:e.type,uuid:e.uuid,name:e.name,color:e.color?e.color.getHex():null,transparent:e.transparent,opacity:e.opacity,side:e.side,visible:e.visible};void 0!==e.metalness&&(t.metalness=e.metalness),void 0!==e.roughness&&(t.roughness=e.roughness),void 0!==e.clearcoat&&(t.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(t.clearcoatRoughness=e.clearcoatRoughness);return["map","normalMap","roughnessMap","metalnessMap","aoMap","emissiveMap"].forEach(function(r){var n;e[r]&&(t[r]={uuid:e[r].uuid,name:e[r].name,image:(null===(n=e[r].image)||void 0===n?void 0:n.src)||null})}),t}},{key:"extractCameras",value:function(e){var t=[];return e.traverse(function(e){if(e.isCamera){var r={uuid:e.uuid,name:e.name,type:e.type,position:e.position.toArray(),rotation:e.rotation.toArray(),fov:e.fov,aspect:e.aspect,near:e.near,far:e.far};t.push(r)}}),t}},{key:"extractLights",value:function(e){var t=[];return e.traverse(function(e){if(e.isLight){var r={uuid:e.uuid,name:e.name,type:e.type,position:e.position.toArray(),color:e.color.getHex(),intensity:e.intensity};void 0!==e.distance&&(r.distance=e.distance),void 0!==e.decay&&(r.decay=e.decay),void 0!==e.angle&&(r.angle=e.angle),void 0!==e.penumbra&&(r.penumbra=e.penumbra),void 0!==e.castShadow&&(r.castShadow=e.castShadow),t.push(r)}}),t}},{key:"exportToCSV",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e||0===e.length)return"";t||(t=Object.keys(e[0]));var r=[];return r.push(t.join(",")),e.forEach(function(e){var n=t.map(function(t){var r=e[t];return"string"==typeof r&&(r.includes(",")||r.includes('"'))?'"'.concat(r.replace(/"/g,'""'),'"'):r});r.push(n.join(","))}),r.join("\n")}},{key:"exportToXML",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"root",n=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=" ".repeat(r),a="";return Object.keys(e).forEach(function(s){var u=e[s];"object"!==o(u)||null===u||Array.isArray(u)?Array.isArray(u)?u.forEach(function(e){a+="".concat(i,"<").concat(s,">"),"object"===o(e)?a+="\n"+n(e,r+1)+i:a+=t.escapeXML(e),a+="</".concat(s,">\n")}):a+="".concat(i,"<").concat(s,">").concat(t.escapeXML(u),"</").concat(s,">\n"):(a+="".concat(i,"<").concat(s,">\n"),a+=n(u,r+1),a+="".concat(i,"</").concat(s,">\n"))}),a};return'<?xml version="1.0" encoding="UTF-8"?>\n'+"<".concat(r,">\n")+n(e,1)+"</".concat(r,">")}},{key:"downloadFile",value:function(e,t){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/octet-stream";r=e instanceof ArrayBuffer||"string"==typeof e?new Blob([e],{type:n}):new Blob([JSON.stringify(e,null,2)],{type:"application/json"});var o=URL.createObjectURL(r),i=document.createElement("a");i.href=o,i.download=t,i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(o),p.info("â
File downloaded: ".concat(t))}},{key:"exportBatch",value:(m=i(a().m(function e(t){var r,n,o,i,u,c,l,f;return a().w(function(e){for(;;)switch(e.n){case 0:p.info("đ Starting batch export of ".concat(t.length," objects...")),r=[],n=[],o=s(t),e.p=1,o.s();case 2:if((i=o.n()).done){e.n=7;break}return u=i.value,e.p=3,e.n=4,this.exportModel(u.object,u.format,u.options);case 4:c=e.v,r.push(c),e.n=6;break;case 5:e.p=5,l=e.v,n.push({object:u.object.name||"Unnamed Object",format:u.format,error:l.message});case 6:e.n=2;break;case 7:e.n=9;break;case 8:e.p=8,f=e.v,o.e(f);case 9:return e.p=9,o.f(),e.f(9);case 10:return p.info("â
Batch export complete: ".concat(r.length," successful, ").concat(n.length," failed")),e.a(2,{results:r,errors:n})}},e,this,[[3,5],[1,8,9,10]])})),function(e){return m.apply(this,arguments)})},{key:"generateFilename",value:function(e,t){var r=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,-5),n=e.replace(/[^a-zA-Z0-9_-]/g,"_");return"".concat(n,"_").concat(r,".").concat(t.toLowerCase())}},{key:"escapeXML",value:function(e){return null==e?"":String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}},{key:"isFormatSupported",value:function(e,t){var r;return(null===(r=this.supportedFormats[t])||void 0===r?void 0:r.includes(e.toLowerCase()))||!1}},{key:"getExportHistory",value:function(){return this.exportHistory}},{key:"clearHistory",value:function(){this.exportHistory=[]}},{key:"getSupportedFormats",value:function(){return t({},this.supportedFormats)}},{key:"dispose",value:function(){this.clearHistory(),p.info("Export disposed")}}]);var m,v,d,h,y,g}();export{m as Export};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,slicedToArray as r,classCallCheck as t,asyncToGenerator as o,regenerator as n,toConsumableArray as s,createForOfIteratorHelper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import*as a from"three";import{GLTFLoader as c}from"../../node_modules/three/examples/jsm/loaders/GLTFLoader.js";import{DRACOLoader as u}from"../../node_modules/three/examples/jsm/loaders/DRACOLoader.js";import{logger as l}from"../core/debugLogger.js";var f=function(){return e(function e(){t(this,e),this.gltfLoader=new c,this.dracoLoader=new u,this.textureLoader=new a.TextureLoader,this.dracoLoader.setDecoderPath("/draco/"),this.gltfLoader.setDRACOLoader(this.dracoLoader),this.supportedFormats={models:[".glb",".gltf"],textures:[".jpg",".jpeg",".png",".hdr",".exr"],scenes:[".json"],configs:[".json",".yaml",".yml"]}},[{key:"importModel",value:(d=o(n().m(function e(r){var t,o,i,a,c,u,f,m,p,d,h,v,g,y,w,k=this,b=arguments;return n().w(function(e){for(;;)switch(e.n){case 0:return o=(t=b.length>1&&void 0!==b[1]?b[1]:{}).scale,i=void 0===o?1:o,a=t.position,c=void 0===a?[0,0,0]:a,u=t.rotation,f=void 0===u?[0,0,0]:u,m=t.castShadow,p=void 0===m||m,d=t.receiveShadow,h=void 0===d||d,e.p=1,l.info("đ Importing model: ".concat(r)),e.n=2,new Promise(function(e,t){k.gltfLoader.load(r,e,function(e){var r=(e.loaded/e.total*100).toFixed(1);l.debug("Loading progress: ".concat(r,"%"))},t)});case 2:return y=e.v,1!==i&&y.scene.scale.setScalar(i),(v=y.scene.position).set.apply(v,s(c)),(g=y.scene.rotation).set.apply(g,s(f)),y.scene.traverse(function(e){e.isMesh&&(e.castShadow=p,e.receiveShadow=h)}),l.info("â
Model imported successfully: ".concat(r)),e.a(2,{scene:y.scene,animations:y.animations,cameras:y.cameras,asset:y.asset});case 3:throw e.p=3,w=e.v,l.error("â Failed to import model ".concat(r,":"),w),w;case 4:return e.a(2)}},e,null,[[1,3]])})),function(e){return d.apply(this,arguments)})},{key:"importTextures",value:(p=o(n().m(function e(r){var t,o,s,i,a=this;return n().w(function(e){for(;;)switch(e.n){case 0:return t=Array.isArray(r)?r:[r],e.p=1,o=t.map(function(e){return new Promise(function(r,t){a.textureLoader.load(e,r,void 0,t)})}),e.n=2,Promise.all(o);case 2:return s=e.v,l.info("â
Imported ".concat(s.length," texture(s)")),e.a(2,Array.isArray(r)?s:s[0]);case 3:throw e.p=3,i=e.v,l.error("â Failed to import textures:",i),i;case 4:return e.a(2)}},e,null,[[1,3]])})),function(e){return p.apply(this,arguments)})},{key:"importSceneConfig",value:(m=o(n().m(function e(r){var t,o,s,i,a,c;return n().w(function(e){for(;;)switch(e.n){case 0:return e.p=0,l.info("đ Importing scene config: ".concat(r)),e.n=1,fetch(r);case 1:if((t=e.v).ok){e.n=2;break}throw new Error("HTTP ".concat(t.status,": ").concat(t.statusText));case 2:return e.n=3,t.json();case 3:for(o=e.v,s=0,i=["scene","connections"];s<i.length;s++)o[a=i[s]]||l.warn("â ī¸ Missing required property: ".concat(a));return l.info("â
Scene config imported: ".concat(r)),e.a(2,o);case 4:throw e.p=4,c=e.v,l.error("â Failed to import scene config ".concat(r,":"),c),c;case 5:return e.a(2)}},e,null,[[0,4]])})),function(e){return m.apply(this,arguments)})},{key:"importBatch",value:(f=o(n().m(function e(r){var t,o,s,a,c,u,f,m,p;return n().w(function(e){for(;;)switch(e.n){case 0:l.info("đ Starting batch import of ".concat(r.length," files")),t=[],o=[],s=i(r),e.p=1,s.s();case 2:if((a=s.n()).done){e.n=14;break}c=a.value,e.p=3,u=void 0,f=c.type,e.n="model"===f?4:"texture"===f?6:"scene"===f?8:10;break;case 4:return e.n=5,this.importModel(c.url,c.options);case 5:return u=e.v,e.a(3,11);case 6:return e.n=7,this.importTextures(c.url);case 7:return u=e.v,e.a(3,11);case 8:return e.n=9,this.importSceneConfig(c.url);case 9:return u=e.v,e.a(3,11);case 10:throw new Error("Unknown import type: ".concat(c.type));case 11:t.push({url:c.url,type:c.type,data:u}),e.n=13;break;case 12:e.p=12,m=e.v,o.push({url:c.url,type:c.type,error:m}),l.error("â Failed to import ".concat(c.url,":"),m);case 13:e.n=2;break;case 14:e.n=16;break;case 15:e.p=15,p=e.v,s.e(p);case 16:return e.p=16,s.f(),e.f(16);case 17:return l.info("â
Batch import complete: ".concat(t.length," successful, ").concat(o.length," failed")),e.a(2,{results:t,errors:o})}},e,this,[[3,12],[1,15,16,17]])})),function(e){return f.apply(this,arguments)})},{key:"isFormatSupported",value:function(e,r){var t,o="."+e.split(".").pop().toLowerCase();return(null===(t=this.supportedFormats[r])||void 0===t?void 0:t.includes(o))||!1}},{key:"getFormatInfo",value:function(e){for(var t="."+e.split(".").pop().toLowerCase(),o=0,n=Object.entries(this.supportedFormats);o<n.length;o++){var s=r(n[o],2),i=s[0];if(s[1].includes(t))return{category:i,extension:t,supported:!0}}return{category:"unknown",extension:t,supported:!1}}},{key:"dispose",value:function(){this.dracoLoader.dispose&&this.dracoLoader.dispose(),l.info("Import disposed")}}]);var f,m,p,d}();export{f as Import};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as r,classCallCheck as n,defineProperty as t,toConsumableArray as e}from"../../_virtual/_rollupPluginBabelHelpers.js";var o=function(){return r(function r(){var o=this;n(this,r),t(this,"vector",{add:function(r,n){return r.map(function(r,t){return r+(n[t]||0)})},subtract:function(r,n){return r.map(function(r,t){return r-(n[t]||0)})},scale:function(r,n){return r.map(function(r){return r*n})},dot:function(r,n){return r.reduce(function(r,t,e){return r+t*(n[e]||0)},0)},cross:function(r,n){return[r[1]*n[2]-r[2]*n[1],r[2]*n[0]-r[0]*n[2],r[0]*n[1]-r[1]*n[0]]},magnitude:function(r){return Math.sqrt(r.reduce(function(r,n){return r+n*n},0))},normalize:function(r){var n=o.vector.magnitude(r);return n>0?r.map(function(r){return r/n}):r.slice()},distance:function(r,n){return o.vector.magnitude(o.vector.subtract(r,n))},lerp:function(r,n,t){return r.map(function(r,e){return r+t*((n[e]||0)-r)})}}),t(this,"matrix",{identity:function(r){for(var n=Array(r).fill().map(function(){return Array(r).fill(0)}),t=0;t<r;t++)n[t][t]=1;return n},multiply:function(r,n){for(var t=r.length,e=n[0].length,o=Array(t).fill().map(function(){return Array(e).fill(0)}),u=0;u<t;u++)for(var i=0;i<e;i++)for(var a=0;a<r[0].length;a++)o[u][i]+=r[u][a]*n[a][i];return o},multiplyVector:function(r,n){return r.map(function(r){return r.reduce(function(r,t,e){return r+t*(n[e]||0)},0)})},determinant:function(r){var n=r.length;if(2===n)return r[0][0]*r[1][1]-r[0][1]*r[1][0];if(3===n)return r[0][0]*(r[1][1]*r[2][2]-r[1][2]*r[2][1])-r[0][1]*(r[1][0]*r[2][2]-r[1][2]*r[2][0])+r[0][2]*(r[1][0]*r[2][1]-r[1][1]*r[2][0]);throw new Error("Determinant calculation only supported for 2x2 and 3x3 matrices")},transpose:function(r){return r[0].map(function(n,t){return r.map(function(r){return r[t]})})}}),t(this,"analysis",{newtonRaphson:function(r,n,t){for(var e=t,u=0;u<o.maxIterations;){var i=r(e),a=n(e);if(Math.abs(a)<o.precision)throw new Error("Derivative too small, cannot continue");var c=e-i/a;if(Math.abs(c-e)<o.convergenceThreshold)return{root:c,iterations:u+1,converged:!0,error:Math.abs(r(c))};e=c,u++}return{root:e,iterations:u,converged:!1,error:Math.abs(r(e))}},bisection:function(r,n,t){if(r(n)*r(t)>=0)throw new Error("Function must have opposite signs at bounds");for(var e=n,u=t,i=0;i<o.maxIterations;){var a=(e+u)/2,c=r(a);if(Math.abs(c)<o.convergenceThreshold||Math.abs(u-e)<o.convergenceThreshold)return{root:a,iterations:i+1,converged:!0,error:Math.abs(c)};r(e)*c<0?u=a:e=a,i++}return{root:(e+u)/2,iterations:i,converged:!1,error:Math.abs(r((e+u)/2))}},simpson:function(r,n,t){var e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:100;e%2!=0&&e++;for(var o=(t-n)/e,u=r(n)+r(t),i=1;i<e;i++){u+=(i%2==0?2:4)*r(n+i*o)}return o/3*u},derivative:function(r,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-8;return(r(n+t)-r(n-t))/(2*t)}}),t(this,"stats",{mean:function(r){return r.reduce(function(r,n){return r+n},0)/r.length},median:function(r){var n=e(r).sort(function(r,n){return r-n}),t=Math.floor(n.length/2);return n.length%2==0?(n[t-1]+n[t])/2:n[t]},stdDev:function(r){var n=o.stats.mean(r),t=r.reduce(function(r,t){return r+Math.pow(t-n,2)},0)/r.length;return Math.sqrt(t)},correlation:function(r,n){for(var t=Math.min(r.length,n.length),e=o.stats.mean(r.slice(0,t)),u=o.stats.mean(n.slice(0,t)),i=0,a=0,c=0,f=0;f<t;f++){var s=r[f]-e,v=n[f]-u;i+=s*v,a+=s*s,c+=v*v}var h=Math.sqrt(a*c);return 0!==h?i/h:0},linearRegression:function(r,n){for(var t=Math.min(r.length,n.length),e=o.stats.mean(r.slice(0,t)),u=o.stats.mean(n.slice(0,t)),i=0,a=0,c=0;c<t;c++){var f=r[c]-e;i+=f*(n[c]-u),a+=f*f}for(var s=0!==a?i/a:0,v=u-s*e,h=0,l=0,d=0;d<t;d++){var p=s*r[d]+v;h+=Math.pow(n[d]-p,2),l+=Math.pow(n[d]-u,2)}return{slope:s,intercept:v,rSquared:0!==l?1-h/l:0,predict:function(r){return s*r+v}}}}),t(this,"utils",{clamp:function(r,n,t){return Math.max(n,Math.min(t,r))},map:function(r,n,t,e,o){return e+(r-n)*(o-e)/(t-n)},approxEqual:function(r,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.precision;return Math.abs(r-n)<t},round:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=Math.pow(10,n);return Math.round(r*t)/t},range:function(r,n){for(var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,e=[],o=r;o<=n;o+=t)e.push(o);return e},linspace:function(r,n,t){var e=(n-r)/(t-1);return Array.from({length:t},function(n,t){return r+t*e})}}),this.precision=1e-10,this.maxIterations=1e3,this.convergenceThreshold=1e-6},[{key:"setPrecision",value:function(r){this.precision=r}},{key:"setMaxIterations",value:function(r){this.maxIterations=r}},{key:"setConvergenceThreshold",value:function(r){this.convergenceThreshold=r}}])}();export{o as Numerics};
|
|
@@ -0,0 +1 @@
|
|
|
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};
|
package/dist/esm/src/index.js
CHANGED
|
@@ -1,70 +1 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
export { animationManager };
|
|
3
|
-
import * as componentManager from './componentManager.js';
|
|
4
|
-
export { componentManager };
|
|
5
|
-
import * as debugLogger from './debugLogger.js';
|
|
6
|
-
export { debugLogger };
|
|
7
|
-
export { logger, modelLogger, pathfinderLogger, transformLogger } from './debugLogger.js';
|
|
8
|
-
import * as disposalManager from './disposalManager.js';
|
|
9
|
-
export { disposalManager };
|
|
10
|
-
import * as environmentManager from './environmentManager.js';
|
|
11
|
-
export { environmentManager };
|
|
12
|
-
import * as hotReloadManager from './hotReloadManager.js';
|
|
13
|
-
export { hotReloadManager };
|
|
14
|
-
import * as keyboardControlsManager from './keyboardControlsManager.js';
|
|
15
|
-
export { keyboardControlsManager };
|
|
16
|
-
import * as nameUtils from './nameUtils.js';
|
|
17
|
-
export { nameUtils };
|
|
18
|
-
export { findObjectByHardcodedUuid, generateUuidFromName, getHardcodedUuid } from './nameUtils.js';
|
|
19
|
-
import * as pathfindingManager from './pathfindingManager.js';
|
|
20
|
-
export { pathfindingManager };
|
|
21
|
-
import * as performanceMonitor from './performanceMonitor.js';
|
|
22
|
-
import * as sceneExportManager from './sceneExportManager.js';
|
|
23
|
-
export { sceneExportManager };
|
|
24
|
-
export { getSceneExportManager } from './sceneExportManager.js';
|
|
25
|
-
import * as sceneInitializationManager from './sceneInitializationManager.js';
|
|
26
|
-
export { sceneInitializationManager };
|
|
27
|
-
import * as textureConfig from './textureConfig.js';
|
|
28
|
-
export { textureConfig };
|
|
29
|
-
import * as transformControlsManager from './transformControlsManager.js';
|
|
30
|
-
export { transformControlsManager };
|
|
31
|
-
export { getTransformControlsManager } from './transformControlsManager.js';
|
|
32
|
-
|
|
33
|
-
// Import all utility modules
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Central API object that provides access to all utility modules
|
|
37
|
-
* @type {Object}
|
|
38
|
-
* @property {Object} animation - Animation management utilities
|
|
39
|
-
* @property {Object} component - Component management utilities
|
|
40
|
-
* @property {Object} debug - Debugging and logging utilities
|
|
41
|
-
* @property {Object} disposal - Resource disposal utilities
|
|
42
|
-
* @property {Object} environment - 3D environment management utilities
|
|
43
|
-
* @property {Object} hotReload - Hot reload handling utilities
|
|
44
|
-
* @property {Object} keyboardControls - Keyboard controls management
|
|
45
|
-
* @property {Object} name - Name and UUID management utilities
|
|
46
|
-
* @property {Object} pathfinding - Pathfinding utilities
|
|
47
|
-
* @property {Object} performance - Performance monitoring utilities
|
|
48
|
-
* @property {Object} sceneExport - Scene export utilities
|
|
49
|
-
* @property {Object} sceneInitialization - Scene initialization utilities
|
|
50
|
-
* @property {Object} texture - Texture management utilities
|
|
51
|
-
* @property {Object} transformControls - Transform controls utilities
|
|
52
|
-
*/
|
|
53
|
-
var CentralPlantUtils = {
|
|
54
|
-
animation: animationManager,
|
|
55
|
-
component: componentManager,
|
|
56
|
-
debug: debugLogger,
|
|
57
|
-
disposal: disposalManager,
|
|
58
|
-
environment: environmentManager,
|
|
59
|
-
hotReload: hotReloadManager,
|
|
60
|
-
keyboardControls: keyboardControlsManager,
|
|
61
|
-
name: nameUtils,
|
|
62
|
-
pathfinding: pathfindingManager,
|
|
63
|
-
performance: performanceMonitor,
|
|
64
|
-
sceneExport: sceneExportManager,
|
|
65
|
-
sceneInitialization: sceneInitializationManager,
|
|
66
|
-
texture: textureConfig,
|
|
67
|
-
transformControls: transformControlsManager
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export { CentralPlantUtils as default };
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{logger as e}from"../../core/debugLogger.js";var n=function(){return t(function t(e){i(this,t),this.sceneViewer=e,this.lastFrameTime=0,this.targetFPS=60,this.frameInterval=1e3/this.targetFPS,this.animationId=null},[{key:"startAnimation",value:function(){var t=this,i=this.sceneViewer,n=function(e){i.isDestroyed||(t.animationId=requestAnimationFrame(n),e-t.lastFrameTime<t.frameInterval||(t.lastFrameTime=e,!i.isDestroyed&&i.controls&&i.renderer&&i.scene&&i.camera&&t.updateFrame()))};n(0),e.info("Animation loop started")}},{key:"updateFrame",value:function(){var t=this.sceneViewer;t.controls.update(),t.performanceMonitor&&(t.performanceMonitor.update(),t.performanceMonitor.updateSceneStats(t.scene)),t.renderer.render(t.scene,t.camera),t.tooltipsManager&&t.tooltipsManager.render()}},{key:"stopAnimation",value:function(){this.animationId&&(cancelAnimationFrame(this.animationId),this.animationId=null,e.info("Animation loop stopped"))}},{key:"setTargetFPS",value:function(t){this.targetFPS=t,this.frameInterval=1e3/this.targetFPS,e.info("Target FPS set to: ".concat(t))}},{key:"getCurrentFPS",value:function(){var t=this.sceneViewer;return t.performanceMonitor?t.performanceMonitor.getCurrentFPS():null}},{key:"dispose",value:function(){this.stopAnimation(),this.lastFrameTime=0,e.info("AnimationManager disposed")}}])}();export{n as AnimationManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as n,classCallCheck as e,asyncToGenerator as r,regenerator as o,objectSpread2 as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import"three";import{findObjectByHardcodedUuid as i}from"../../core/nameUtils.js";import a from"../../rendering/modelPreloader.js";var u=function(){return n(function n(r){e(this,n),this.sceneViewer=r},[{key:"addComponentToScene",value:(u=r(o().m(function n(e){var r,i,u,l,c,s,d,v,f,m,p=this;return o().w(function(n){for(;;)switch(n.n){case 0:if(n.p=0,e.libraryId&&e.modelKey){n.n=1;break}return n.a(2,!1);case 1:return i=e.libraryId+"-"+Date.now()+"-"+Math.random().toString(36).substr(2,9),u={},n.p=2,n.n=3,fetch("./library/component-dictionary.json");case 3:return l=n.v,n.n=4,l.json();case 4:u=n.v,n.n=6;break;case 5:return n.p=5,n.v,n.a(2,!1);case 6:if(c=u[e.libraryId]){n.n=7;break}return n.a(2,!1);case 7:if(s=e.position||{x:0,y:0,z:0},d=a.getCachedModelWithDimensions(c.modelKey,e.libraryId)){n.n=11;break}return n.p=8,n.n=9,new Promise(function(n,e){p.sceneViewer.gltfLoader.load("./library/models/".concat(c.modelKey),n,void 0,e)});case 9:v=n.v,d=v.scene,d=a.addDimensionsToModel(d,e.libraryId),n.n=11;break;case 10:return n.p=10,n.v,n.a(2,!1);case 11:return(f=d.clone()).uuid=i,f.name=(e.uuid||e.libraryId)+" Component",f.position.set(s.x,s.y,s.z),f.userData=t({libraryId:e.libraryId,componentType:"component",forExport:!0,originalUuid:i},(null===(r=d.userData)||void 0===r?void 0:r.dimensions)&&{dimensions:d.userData.dimensions}),c.boundingBox&&(f.userData.dimensions={x:c.boundingBox.x,y:c.boundingBox.y,z:c.boundingBox.z}),c.adaptedBoundingBox&&(f.userData.adaptedBoundingBox={x:c.adaptedBoundingBox.x,y:c.adaptedBoundingBox.y,z:c.adaptedBoundingBox.z}),f.traverse(function(n){n.isMesh&&(n.castShadow=!0,n.receiveShadow=!0,n.material&&(n.material.envMapIntensity=1),n.name&&n.name.toLowerCase().includes("connector")&&(n.userData||(n.userData={}),n.userData.forExport=!0,n.userData.componentType="connector"))}),this.sceneViewer.scene.add(f),"undefined"!=typeof window&&(m=new CustomEvent("componentAdded",{detail:{component:f,libraryId:e.libraryId,uuid:i,position:f.position,dimensions:f.userData.dimensions}}),window.dispatchEvent(m)),this.sceneViewer.enableTransformControls&&this.sceneViewer.enableTransformControls(),n.a(2,!0);case 12:return n.p=12,n.v,n.a(2,!1)}},n,this,[[8,10],[2,5],[0,12]])})),function(n){return u.apply(this,arguments)})},{key:"removeComponentFromScene",value:function(n){try{var e=i(this.sceneViewer.scene,n);if(!e)return!1;if(e.traverse(function(n){n.geometry&&n.geometry.dispose(),n.material&&(Array.isArray(n.material)?n.material.forEach(function(n){return n.dispose()}):n.material.dispose())}),this.sceneViewer.scene.remove(e),"undefined"!=typeof window){var r,o=new CustomEvent("componentRemoved",{detail:{uuid:n,name:e.name,libraryId:null===(r=e.userData)||void 0===r?void 0:r.libraryId}});window.dispatchEvent(o)}return!0}catch(n){return!1}}},{key:"getSceneComponents",value:function(){var n=[];return this.sceneViewer.scene.traverse(function(e){var r,o;"component"===(null===(r=e.userData)||void 0===r?void 0:r.componentType)&&n.push({uuid:(null===(o=e.userData)||void 0===o?void 0:o.originalUuid)||e.uuid,name:e.name,libraryId:e.userData.libraryId,position:{x:e.position.x,y:e.position.y,z:e.position.z},rotation:{x:e.rotation.x,y:e.rotation.y,z:e.rotation.z},scale:{x:e.scale.x,y:e.scale.y,z:e.scale.z}})}),n}},{key:"updateComponent",value:function(n,e){try{var r,o,t,a,u,l,c,s,d,v=i(this.sceneViewer.scene,n);if(!v)return!1;if(e.position)v.position.set(null!==(r=e.position.x)&&void 0!==r?r:v.position.x,null!==(o=e.position.y)&&void 0!==o?o:v.position.y,null!==(t=e.position.z)&&void 0!==t?t:v.position.z);if(e.rotation)v.rotation.set(null!==(a=e.rotation.x)&&void 0!==a?a:v.rotation.x,null!==(u=e.rotation.y)&&void 0!==u?u:v.rotation.y,null!==(l=e.rotation.z)&&void 0!==l?l:v.rotation.z);if(e.scale)v.scale.set(null!==(c=e.scale.x)&&void 0!==c?c:v.scale.x,null!==(s=e.scale.y)&&void 0!==s?s:v.scale.y,null!==(d=e.scale.z)&&void 0!==d?d:v.scale.z);return e.name&&(v.name=e.name),!0}catch(n){return!1}}}]);var u}();export{u as ComponentManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as n,objectSpread2 as e,construct as t,toConsumableArray as r,slicedToArray as i,classCallCheck as o,createForOfIteratorHelper as a,asyncToGenerator as u,regenerator as s}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as c from"three";import{Pathfinder as l}from"../../../node_modules/@2112-lab/pathfinder/dist/index.esm.js";import{logger as f,pathfinderLogger as v}from"../../core/debugLogger.js";import{generateUuidFromName as d}from"../../core/nameUtils.js";var h=function(){return n(function n(e){o(this,n),this.sceneViewer=e,this.pathfinder=null,this.crosscubeTextureSet=null,this.pathfinderVersionInfo=null,this.pathfinderConfig={grid:{size:.5,safetyMargin:0,minSegmentLength:.5,timeout:1e3}}},[{key:"getPathfinderVersionInfo",value:(w=u(s().m(function n(){var e;return s().w(function(n){for(;;)switch(n.n){case 0:if(!this.pathfinderVersionInfo){n.n=1;break}return n.a(2,this.pathfinderVersionInfo);case 1:return e={version:"1.0.17",detectionMethod:"hardcoded-fallback",timestamp:(new Date).toISOString()},this.pathfinderVersionInfo=e,n.a(2,e)}},n,this)})),function(){return w.apply(this,arguments)})},{key:"logPathfinderVersion",value:(g=u(s().m(function n(){var e,t,r,i=arguments;return s().w(function(n){for(;;)switch(n.n){case 0:return e=i.length>0&&void 0!==i[0]?i[0]:"Unknown Context",n.p=1,n.n=2,this.getPathfinderVersionInfo();case 2:t=n.v,v.info("[".concat(e,"] Pathfinder Module Information:"),{version:t.version,detectionMethod:t.detectionMethod,context:e,timestamp:t.timestamp,pathfinderInstance:!!this.pathfinder}),n.n=4;break;case 3:n.p=3,r=n.v,v.error("[".concat(e,"] Failed to get pathfinder version:"),r);case 4:return n.a(2)}},n,this,[[1,3]])})),function(){return g.apply(this,arguments)})},{key:"getPathColor",value:function(n){var e=["#468e49","#245e29","#2e80d2","#1d51a1"];return e[n%e.length]}},{key:"_executePathfinding",value:(p=u(s().m(function n(e,t){var r,i,o,a,u,f,v,d=this,h=arguments;return s().w(function(n){for(;;)switch(n.n){case 0:return i=(r=h.length>2&&void 0!==h[2]?h[2]:{}).createGateways,o=void 0!==i&&i,a=r.context,u=void 0===a?"Pathfinding":a,n.n=1,this.logPathfinderVersion(u);case 1:return this.pathfinder=new l(this.pathfinderConfig),this.sceneViewer.pathfinder=this.pathfinder,e.object.children=e.object.children.filter(function(n){return"computed"!==n.userData.origin}),f=this.pathfinder.findPaths(e,t),o&&f.gateways&&f.gateways.forEach(function(n){if(n.position){var e=new c.Mesh(new c.SphereGeometry(.15,16,16),new c.MeshStandardMaterial({color:16777215,roughness:.7,metalness:.3,emissive:0}));e.position.copy(n.position),e.name=n.id,e.uuid=n.id,e.userData={componentType:"gateway",forExport:!0,gatewayId:n.id,originalUuid:n.id,origin:"computed",connections:n.connections},d.sceneViewer.scene.add(e)}}),v=this.mergeColinearPaths(f.paths),this.createPipePaths(v,this.crosscubeTextureSet),n.a(2,f)}},n,this)})),function(n,e){return p.apply(this,arguments)})},{key:"initializePathfinder",value:(y=u(s().m(function n(e,t){var r;return s().w(function(n){for(;;)switch(n.n){case 0:return this.crosscubeTextureSet=t,n.n=1,this.t(e.scene,e.connections,{createGateways:!0,context:"Scene Loading"});case 1:return(r=n.v).rewiredConnections,n.a(2,r)}},n,this)})),function(n,e){return y.apply(this,arguments)})},{key:"removeComputedObjects",value:function(){var n=this.sceneViewer,e=[];n.scene.traverse(function(n){if(n.name&&n.name.includes("Polyline")){var t=!1,r=[];if(n.traverse(function(n){n.userData&&n.userData.isPipeSegment&&n.userData.isManuallyPositioned&&(t=!0,r.push(n))}),t){var i=[];n.traverse(function(n){(n.userData&&n.userData.isPipeSegment&&!n.userData.isManuallyPositioned||n.userData&&n.userData.isPipeElbow)&&i.push(n)}),i.forEach(function(e){n.remove(e),e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(function(n){return n.dispose()}):e.material.dispose())}),0===n.children.length&&e.push(n)}else e.push(n)}n.userData&&"computed"===n.userData.origin&&e.push(n)});for(var t=0,r=e;t<r.length;t++){var i=r[t];n.scene.remove(i),i.geometry&&i.geometry.dispose(),i.material&&(Array.isArray(i.material)?i.material.forEach(function(n){return n.dispose()}):i.material.dispose())}}},{key:"createPipeMaterial",value:function(n,i){if(n){var o=e(e({},n.config.materialProps),{},{color:this.getPathColor(i),map:n.textures.diffuse,normalMap:n.textures.normal,roughnessMap:n.textures.roughness,metalness:.2,roughness:.9,clearcoat:.2,clearcoatRoughness:.2,envMapIntensity:.6,reflectivity:.4});o.normalScale&&Array.isArray(o.normalScale)&&(o.normalScale=t(c.Vector2,r(o.normalScale)));var a=new c.MeshPhysicalMaterial(o);return[a.map,a.normalMap,a.roughnessMap].filter(Boolean).forEach(function(e){e.wrapS=e.wrapT=c.RepeatWrapping,e.repeat.set(2*n.config.repeat.x,2*n.config.repeat.y)}),a}return new c.MeshPhysicalMaterial({color:this.getPathColor(i),metalness:.9,roughness:.7,clearcoat:.1,clearcoatRoughness:.3,envMapIntensity:1.5,reflectivity:.3})}},{key:"createPipePaths",value:function(n,e){var t=this,r=this.sceneViewer;n.forEach(function(n,i){if(n.path&&n.path.length>=2){var o=new c.Object3D;o.name="Polyline ".concat(n.from,"-").concat(n.to);for(var a=t.createPipeMaterial(e,i),u=n.path.map(function(n){return n instanceof c.Vector3?n.clone():Array.isArray(n)?(new c.Vector3).fromArray(n):void 0!==n.x&&void 0!==n.y&&void 0!==n.z?new c.Vector3(n.x,n.y,n.z):new c.Vector3(0,0,0)}),s=function(e){var s=u[e],l=u[e+1],f=(new c.Vector3).subVectors(l,s),v=f.length();if(v<1e-6)return 0;var d=!1;if(r.scene.traverse(function(t){t.userData&&t.userData.isPipeSegment&&t.userData.isManuallyPositioned&&t.userData.segmentId==="pipe-segment-".concat(n.from,"-").concat(n.to,"-").concat(e)&&(d=!0)}),d)return 0;var h=new c.CylinderGeometry(.1,.1,v,8,1,!1),m=new c.Mesh(h,a);m.position.copy(s).add(l).multiplyScalar(.5);var y=new c.Quaternion,p=new c.Vector3(0,1,0);y.setFromUnitVectors(p,f.clone().normalize()),m.quaternion.copy(y),m.castShadow=!0,m.receiveShadow=!0;var g="pipe-segment-".concat(n.from,"-").concat(n.to,"-").concat(e);if(m.name="Pipe Segment ".concat(e+1,": ").concat(n.from,"-").concat(n.to),m.userData={isPipeSegment:!0,segmentId:g,segmentIndex:e,pathFrom:n.from,pathTo:n.to,pathIndex:i,length:v.toFixed(2),component:{type:"PipeSegment",attributes:{length:{key:"Length",value:v.toFixed(2),unit:"m"}}}},o.add(m),e<u.length-2){var w=u[e+1].clone().sub(u[e]).normalize(),k=u[e+2].clone().sub(u[e+1]).normalize(),x=w.angleTo(k);if(x>Math.PI/36){var P=t.createElbowGeometry(u[e],u[e+1],u[e+2],.1);if(P){var S=new c.Mesh(P,a);S.castShadow=!0,S.receiveShadow=!0;var b="pipe-elbow-".concat(n.from,"-").concat(n.to,"-").concat(e);S.name="Pipe Elbow ".concat(e+1,": ").concat(n.from,"-").concat(n.to),S.userData={isPipeElbow:!0,elbowId:b,elbowIndex:e,pathFrom:n.from,pathTo:n.to,pathIndex:i,angle:(180*x/Math.PI).toFixed(1),component:{type:"PipeElbow",attributes:{angle:{key:"Bend Angle",value:(180*x/Math.PI).toFixed(1),unit:"°"}}}},o.add(S)}}}},l=0;l<u.length-1;l++)s(l);o.name="Polyline",r.scene.add(o)}})}},{key:"handleManualSegmentTransformation",value:function(n,e){if(n&&n.userData&&n.userData.isPipeSegment){var t=this.calculateSegmentEndpoints(n),r=this.createSegmentConnectors(n,t);this.addConnectorsToScene(r),this.convertConnectedGatewaysToManual(r,e);var i=this.findOriginalConnection(n,e.connections);i&&(this.restructureConnections(i,r,e),n.userData.isManuallyPositioned=!0,n.userData.manualConnectors=r.map(function(n){return n.uuid}),this.addManualSegmentToSceneData(n))}}},{key:"convertConnectedGatewaysToManual",value:function(n,e){var t,r,i=this,o=this.sceneViewer,a=[],u=null!==(t=n[0])&&void 0!==t&&null!==(t=t.userData)&&void 0!==t&&t.manualSegmentUuid?o.scene.getObjectByProperty("uuid",n[0].userData.manualSegmentUuid):null;u&&null!==(r=u.userData)&&void 0!==r&&r.isPipeSegment&&([u.userData.pathFrom,u.userData.pathTo].forEach(function(n){var t,r,u=null;(o.scene.traverse(function(e){var t;e.uuid!==n&&(null===(t=e.userData)||void 0===t?void 0:t.originalUuid)!==n||(u=e)}),u)&&("gateway"===(null===(t=u.userData)||void 0===t?void 0:t.componentType)&&"computed"===(null===(r=u.userData)||void 0===r?void 0:r.origin)&&(i.convertGatewayToManual(u,e),a.push(u)))}),a.length)}},{key:"convertGatewayToManual",value:function(n,e){var t;n.userData.origin="declared";for(var r=0;r<e.scene.object.children.length;r++){var i,o,a=e.scene.object.children[r];if(a.uuid===n.uuid||a.uuid===(null===(i=n.userData)||void 0===i?void 0:i.originalUuid)||n.uuid===(null===(o=a.userData)||void 0===o?void 0:o.originalUuid)){a.userData||(a.userData={}),a.userData.origin="declared";break}}if(null!==(t=n.userData)&&void 0!==t&&t.connections&&e.connections){var u=n.userData.connections,s=e.connections;u.removed&&Array.isArray(u.removed)&&(e.connections=s.filter(function(n){var e=u.removed.some(function(e){return e.from===n.from&&e.to===n.to||e.from===n.to&&e.to===n.from});return!e})),u.added&&Array.isArray(u.added)&&u.added.forEach(function(n){e.connections.some(function(e){return e.from===n.from&&e.to===n.to||e.from===n.to&&e.to===n.from})||e.connections.push(n)})}}},{key:"findOriginalConnection",value:function(n,e){var t=n.userData,r=t.pathFrom,i=t.pathTo,o=e.find(function(n){return n.from===r&&n.to===i||n.from===i&&n.to===r});if(o)return o;var a=this.sceneViewer,u=null,s=null;if(a.scene.traverse(function(n){var e,t;n.uuid!==r&&(null===(e=n.userData)||void 0===e?void 0:e.originalUuid)!==r||(u=n),n.uuid!==i&&(null===(t=n.userData)||void 0===t?void 0:t.originalUuid)!==i||(s=n)}),u&&s&&(o=e.find(function(n){return n.from===u.uuid&&n.to===s.uuid||n.from===s.uuid&&n.to===u.uuid})))return o;var c=e.filter(function(n){var e,t,o=n.from===r||n.from===i,u=n.to===r||n.to===i,s="gateway"===(null===(e=a.scene.getObjectByProperty("uuid",n.from))||void 0===e||null===(e=e.userData)||void 0===e?void 0:e.componentType),c="gateway"===(null===(t=a.scene.getObjectByProperty("uuid",n.to))||void 0===t||null===(t=t.userData)||void 0===t?void 0:t.componentType);return o||u||s||c});return c.length>0?c[0]:null}},{key:"calculateSegmentEndpoints",value:function(n){var e=n.geometry.parameters.height||1,t=new c.Vector3,r=new c.Vector3,i=new c.Vector3(0,1,0);return i.applyQuaternion(n.quaternion),t.copy(n.position).sub(i.clone().multiplyScalar(e/2)),r.copy(n.position).add(i.clone().multiplyScalar(e/2)),{start:t,end:r}}},{key:"createSegmentConnectors",value:function(n,e){var t=n.userData.segmentId,r=[],i=new c.Mesh(new c.SphereGeometry(.2,16,16),new c.MeshStandardMaterial({color:65280,roughness:.7,metalness:.3,emissive:13056}));i.position.copy(e.start),i.uuid="".concat(t,"-connector-start"),i.name="Manual Segment Start Connector: ".concat(n.name),i.userData={componentType:"connector",forExport:!0,isManualSegmentConnector:!0,segmentId:t,connectorType:"start",manualSegmentUuid:n.uuid};var o=new c.Mesh(new c.SphereGeometry(.2,16,16),new c.MeshStandardMaterial({color:16711680,roughness:.7,metalness:.3,emissive:3342336}));return o.position.copy(e.end),o.uuid="".concat(t,"-connector-end"),o.name="Manual Segment End Connector: ".concat(n.name),o.userData={componentType:"connector",forExport:!0,isManualSegmentConnector:!0,segmentId:t,connectorType:"end",manualSegmentUuid:n.uuid},r.push(i,o),r}},{key:"addConnectorsToScene",value:function(n){var t=this.sceneViewer;n.forEach(function(n){if(t.scene.add(n),t.currentSceneData&&t.currentSceneData.scene&&t.currentSceneData.scene.object){var r={uuid:n.uuid,name:n.name,type:n.type,userData:e({},n.userData),position:{x:n.position.x,y:n.position.y,z:n.position.z},rotation:{x:n.rotation.x,y:n.rotation.y,z:n.rotation.z},scale:{x:n.scale.x,y:n.scale.y,z:n.scale.z},geometry:"CONNECTOR-GEO"};t.currentSceneData.scene.object.children.push(r)}})}},{key:"addManualSegmentToSceneData",value:function(n){var t=this.sceneViewer;if(t.currentSceneData&&t.currentSceneData.scene&&t.currentSceneData.scene.object){var r={uuid:n.uuid,name:n.name,type:n.type,userData:e({},n.userData),position:{x:n.position.x,y:n.position.y,z:n.position.z},rotation:{x:n.rotation.x,y:n.rotation.y,z:n.rotation.z},scale:{x:n.scale.x,y:n.scale.y,z:n.scale.z}};t.currentSceneData.scene.object.children.push(r)}}},{key:"restructureConnections",value:function(n,e,t){var o=i(e,2),a=o[0],u=o[1],s=t.connections.findIndex(function(e){return e.from===n.from&&e.to===n.to||e.from===n.to&&e.to===n.from});if(-1!==s){t.connections.splice(s,1);var c={from:n.from,to:a.uuid},l={from:u.uuid,to:n.to};t.connections.push(c,l),this.sceneViewer.currentSceneData&&(this.sceneViewer.currentSceneData.connections=r(t.connections))}}},{key:"createElbowGeometry",value:function(n,e,t,r){try{var i=3*r,o=this.createElbowCurve(n,e,t,i);return new c.TubeGeometry(o,12,r,8,!1)}catch(n){return null}}},{key:"createElbowCurve",value:function(n,e,t,r){var i=e.clone().sub(n).normalize(),o=t.clone().sub(e).normalize(),a=.001*r,u=e.clone().sub(i.clone().multiplyScalar(a)),s=e.clone().add(o.clone().multiplyScalar(a)),l=e.clone();return new c.QuadraticBezierCurve3(u,l,s)}},{key:"recomputeWorldBoundingBoxes",value:function(n){this.sceneViewer.scene.traverse(function(e){if(e.isMesh){var t=null,r=function(n){var t,i=a(n);try{for(i.s();!(t=i.n()).done;){var o,u,s=t.value;if(s.uuid===e.uuid||s.uuid===(null===(o=e.userData)||void 0===o?void 0:o.originalUuid)||e.uuid===(null===(u=s.userData)||void 0===u?void 0:u.originalUuid))return s;if(e.name&&s.name){var c=d(e.name),l=d(s.name);if(c===l||c===s.uuid||l===e.uuid)return s}if(e.name&&s.name&&e.name===s.name)return s;if(s.children){var f=r(s.children);if(f)return f}}}catch(n){i.e(n)}finally{i.f()}return null};if(t=r(n.scene.object.children)){var i=(new c.Box3).setFromObject(e);t.userData||(t.userData={}),t.userData.worldBoundingBox={min:i.min.toArray(),max:i.max.toArray()},t.userData.origin||(t.userData.origin=e.userData.origin),t.userData.direction||(t.userData.direction=e.userData.direction),t.userData.group||(t.userData.group=e.userData.group),t.userData.connections||(t.userData.connections=e.userData.connections),e.userData.associatedJsonObject=t}}})}},{key:"updatePathfindingWithConnections",value:(m=u(s().m(function n(e){var t,i;return s().w(function(n){for(;;)switch(n.n){case 0:if((t=this.sceneViewer).currentSceneData){n.n=1;break}return n.a(2,!1);case 1:return this.removeComputedObjects(),(i=JSON.parse(JSON.stringify(t.currentSceneData))).connections=r(e),n.n=2,this.t(i.scene,i.connections,{createGateways:!1,context:"Connections Update"});case 2:return t.currentSceneData=i,n.a(2,!0)}},n,this)})),function(n){return m.apply(this,arguments)})},{key:"updatePathfindingAfterTransform",value:(h=u(s().m(function n(e){return s().w(function(n){for(;;)switch(n.n){case 0:return this.removeComputedObjects(),n.n=1,this.t(e.scene,e.connections,{createGateways:!0,context:"Transform Update"});case 1:return n.a(2)}},n,this)})),function(n){return h.apply(this,arguments)})},{key:"dispose",value:function(){this.removeComputedObjects(),this.pathfinder=null,this.crosscubeTextureSet=null,this.pathfinderVersionInfo=null,f.info("PathfindingManager disposed")}},{key:"mergeColinearPaths",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.001,t=JSON.parse(JSON.stringify(n));return t.forEach(function(n){if(n.path&&!(n.path.length<=2)){var t=n.path.map(function(n){return n instanceof c.Vector3?n.clone():Array.isArray(n)?(new c.Vector3).fromArray(n):void 0!==n.x&&void 0!==n.y&&void 0!==n.z?new c.Vector3(n.x,n.y,n.z):new c.Vector3(0,0,0)});if(!(t.length<=2)){for(var r=[t[0]],i=0,o=function(){var n=t[i],o=t[i+1],a=(new c.Vector3).subVectors(o,n);if(a.length()<1e-6)return i++,1;a.normalize();for(var u=i+2;u<t.length;){var s=t[u],l=(new c.Vector3).subVectors(s,n);if(l.length()<1e-6)u++;else{l.normalize();var f=a.dot(l);if(!(Math.abs(f-1)<e))break;o=s,u++}}o.equals(n)||r.push(o);var v=t.findIndex(function(n,e){return e>i&&n.equals(o)});-1===v?i++:i=v};i<t.length-1;)o();var a=r.map(function(e){return Array.isArray(n.path[0])?[e.x,e.y,e.z]:void 0!==n.path[0].x?{x:e.x,y:e.y,z:e.z}:e});n.path=a;t.length,r.length}}}),t}}]);var h,m,y,p,g,w}();export{h as PathfindingManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{inherits as t,createClass as e,superPropGet as i,classCallCheck as h,callSuper as n}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{Raycaster as s,Vector3 as a,Quaternion as r,Euler as w,Matrix4 as o,Object3D as l,Mesh as u,MeshBasicMaterial as c,LineBasicMaterial as M,CylinderGeometry as v,BoxGeometry as p,BufferGeometry as f,Float32BufferAttribute as X,OctahedronGeometry as Y,Line as Z,SphereGeometry as d,TorusGeometry as y,PlaneGeometry as k,DoubleSide as m}from"three";var E=new s,S=new a,b=new a,g=new r,T={X:new a(1,0,0),Y:new a(0,1,0),Z:new a(0,0,1)},x={type:"change"},D={type:"mouseDown"},A={type:"mouseUp",mode:null},W={type:"objectChange"},C=function(){function s(t,e){var i;h(this,s),i=n(this,s),void 0===e&&(e=document),i.isTransformControls=!0,i.visible=!1,i.domElement=e,i.domElement.style.touchAction="none";var w=new tt;i.t=w,i.add(w);var o=new et;i.i=o,i.add(o);var l=i;function u(t,e){var i=e;Object.defineProperty(l,t,{get:function(){return void 0!==i?i:e},set:function(e){i!==e&&(i=e,o[t]=e,w[t]=e,l.dispatchEvent({type:t+"-changed",value:e}),l.dispatchEvent(x))}}),l[t]=e,o[t]=e,w[t]=e}u("camera",t),u("object",void 0),u("enabled",!0),u("axis",null),u("mode","translate"),u("translationSnap",null),u("rotationSnap",null),u("scaleSnap",null),u("space","world"),u("size",1),u("dragging",!1),u("showX",!0),u("showY",!0),u("showZ",!0),u("showXY",!0),u("showYZ",!0),u("showXZ",!0),i.clickDelay=null,i.lastInteractionTime=0;var c=new a,M=new a,v=new r,p=new r,f=new a,X=new r,Y=new a,Z=new a,d=new a,y=new a;return u("worldPosition",c),u("worldPositionStart",M),u("worldQuaternion",v),u("worldQuaternionStart",p),u("cameraPosition",f),u("cameraQuaternion",X),u("pointStart",Y),u("pointEnd",Z),u("rotationAxis",d),u("rotationAngle",0),u("eye",y),i.h=new a,i.o=new a,i.l=new a,i.u=new a,i.M=new a,i.v=new r,i.p=new r,i.k=new a,i.m=new a,i.S=new r,i.T=new a,i.D=new a,i.A=new r,i.W=new a,i.C=P.bind(i),i.P=R.bind(i),i.j=j.bind(i),i.R=z.bind(i),i.I=I.bind(i),i.domElement.addEventListener("pointerdown",i.P),i.domElement.addEventListener("pointermove",i.j),i.domElement.addEventListener("pointerup",i.I),i}return t(s,l),e(s,[{key:"updateMatrixWorld",value:function(){void 0!==this.object&&(this.object.updateMatrixWorld(),null===this.object.parent||this.object.parent.matrixWorld.decompose(this.M,this.v,this.k),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this.T),this.p.copy(this.v).invert(),this.S.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this.u),this.camera.isOrthographicCamera?this.camera.getWorldDirection(this.eye).negate():this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),i(s,"updateMatrixWorld",this,3)([this])}},{key:"pointerHover",value:function(t){if(void 0!==this.object&&!0!==this.dragging){if(this.clickDelay&&this.clickDelay.doubleClickDelay)if(Date.now()-this.lastInteractionTime<this.clickDelay.doubleClickDelay)return;E.setFromCamera(t,this.camera);var e=Q(this.t.picker[this.mode],E);this.axis=e?e.object.name:null}}},{key:"pointerDown",value:function(t){if(void 0!==this.object&&!0!==this.dragging&&0===t.button){if(this.clickDelay&&this.clickDelay.doubleClickDelay){var e=Date.now();if(e-this.lastInteractionTime<this.clickDelay.doubleClickDelay)return;this.lastInteractionTime=e}if(null!==this.axis){E.setFromCamera(t,this.camera);var i=Q(this.i,E,!0);i&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this.D.copy(this.object.position),this.A.copy(this.object.quaternion),this.W.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this.m),this.pointStart.copy(i.point).sub(this.worldPositionStart)),this.dragging=!0,D.mode=this.mode,this.dispatchEvent(D)}}}},{key:"pointerMove",value:function(t){var e=this.axis,i=this.mode,h=this.object,n=this.space;if("scale"===i?n="local":"E"!==e&&"XYZE"!==e&&"XYZ"!==e||(n="world"),void 0!==h&&null!==e&&!1!==this.dragging&&-1===t.button){E.setFromCamera(t,this.camera);var s=Q(this.i,E,!0);if(s){if(this.pointEnd.copy(s.point).sub(this.worldPositionStart),"translate"===i)this.h.copy(this.pointEnd).sub(this.pointStart),"local"===n&&"XYZ"!==e&&this.h.applyQuaternion(this.S),-1===e.indexOf("X")&&(this.h.x=0),-1===e.indexOf("Y")&&(this.h.y=0),-1===e.indexOf("Z")&&(this.h.z=0),"local"===n&&"XYZ"!==e?this.h.applyQuaternion(this.A).divide(this.k):this.h.applyQuaternion(this.p).divide(this.k),h.position.copy(this.h).add(this.D),this.translationSnap&&("local"===n&&(h.position.applyQuaternion(g.copy(this.A).invert()),-1!==e.search("X")&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),-1!==e.search("Y")&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),-1!==e.search("Z")&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.position.applyQuaternion(this.A)),"world"===n&&(h.parent&&h.position.add(S.setFromMatrixPosition(h.parent.matrixWorld)),-1!==e.search("X")&&(h.position.x=Math.round(h.position.x/this.translationSnap)*this.translationSnap),-1!==e.search("Y")&&(h.position.y=Math.round(h.position.y/this.translationSnap)*this.translationSnap),-1!==e.search("Z")&&(h.position.z=Math.round(h.position.z/this.translationSnap)*this.translationSnap),h.parent&&h.position.sub(S.setFromMatrixPosition(h.parent.matrixWorld))));else if("scale"===i){if(-1!==e.search("XYZ")){var a=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(a*=-1),b.set(a,a,a)}else S.copy(this.pointStart),b.copy(this.pointEnd),S.applyQuaternion(this.S),b.applyQuaternion(this.S),b.divide(S),-1===e.search("X")&&(b.x=1),-1===e.search("Y")&&(b.y=1),-1===e.search("Z")&&(b.z=1);h.scale.copy(this.W).multiply(b),this.scaleSnap&&(-1!==e.search("X")&&(h.scale.x=Math.round(h.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==e.search("Y")&&(h.scale.y=Math.round(h.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==e.search("Z")&&(h.scale.z=Math.round(h.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if("rotate"===i){this.h.copy(this.pointEnd).sub(this.pointStart);var r=20/this.worldPosition.distanceTo(S.setFromMatrixPosition(this.camera.matrixWorld));"E"===e?(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this.o.copy(this.pointStart).normalize(),this.l.copy(this.pointEnd).normalize(),this.rotationAngle*=this.l.cross(this.o).dot(this.eye)<0?1:-1):"XYZE"===e?(this.rotationAxis.copy(this.h).cross(this.eye).normalize(),this.rotationAngle=this.h.dot(S.copy(this.rotationAxis).cross(this.eye))*r):"X"!==e&&"Y"!==e&&"Z"!==e||(this.rotationAxis.copy(T[e]),S.copy(T[e]),"local"===n&&S.applyQuaternion(this.worldQuaternion),this.rotationAngle=this.h.dot(S.cross(this.eye).normalize())*r),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),"local"===n&&"E"!==e&&"XYZE"!==e?(h.quaternion.copy(this.A),h.quaternion.multiply(g.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this.p),h.quaternion.copy(g.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),h.quaternion.multiply(this.A).normalize())}this.dispatchEvent(x),this.dispatchEvent(W)}}}},{key:"pointerUp",value:function(t){0===t.button&&(this.dragging&&null!==this.axis&&(A.mode=this.mode,this.dispatchEvent(A)),this.dragging=!1,this.axis=null)}},{key:"dispose",value:function(){this.domElement.removeEventListener("pointerdown",this.P),this.domElement.removeEventListener("pointermove",this.j),this.domElement.removeEventListener("pointermove",this.R),this.domElement.removeEventListener("pointerup",this.I),this.traverse(function(t){t.geometry&&t.geometry.dispose(),t.material&&t.material.dispose()})}},{key:"attach",value:function(t){return this.object=t,this.visible=!0,this}},{key:"detach",value:function(){return this.object=void 0,this.visible=!1,this.axis=null,this}},{key:"reset",value:function(){this.enabled&&this.dragging&&(this.object.position.copy(this.D),this.object.quaternion.copy(this.A),this.object.scale.copy(this.W),this.dispatchEvent(x),this.dispatchEvent(W),this.pointStart.copy(this.pointEnd))}},{key:"getRaycaster",value:function(){return E}},{key:"getMode",value:function(){return this.mode}},{key:"setMode",value:function(t){this.mode=t}},{key:"setTranslationSnap",value:function(t){this.translationSnap=t}},{key:"setRotationSnap",value:function(t){this.rotationSnap=t}},{key:"setScaleSnap",value:function(t){this.scaleSnap=t}},{key:"setSize",value:function(t){this.size=t}},{key:"setSpace",value:function(t){this.space=t}},{key:"setDelay",value:function(t){this.clickDelay=t}},{key:"updateInteractionTime",value:function(){this.lastInteractionTime=Date.now()}}])}();function P(t){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:t.button};var e=this.domElement.getBoundingClientRect();return{x:(t.clientX-e.left)/e.width*2-1,y:-(t.clientY-e.top)/e.height*2+1,button:t.button}}function j(t){if(this.enabled)switch(t.pointerType){case"mouse":case"pen":this.pointerHover(this.C(t))}}function R(t){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(t.pointerId),this.domElement.addEventListener("pointermove",this.R),this.pointerHover(this.C(t)),this.pointerDown(this.C(t)))}function z(t){this.enabled&&this.pointerMove(this.C(t))}function I(t){this.enabled&&(this.domElement.releasePointerCapture(t.pointerId),this.domElement.removeEventListener("pointermove",this.R),this.pointerUp(this.C(t)))}function Q(t,e,i){for(var h=e.intersectObject(t,!0),n=0;n<h.length;n++)if(h[n].object.visible||i)return h[n];return!1}var G=new w,H=new a(0,1,0),L=new a(0,0,0),N=new o,U=new r,_=new r,B=new a,O=new o,q=new a(1,0,0),F=new a(0,1,0),J=new a(0,0,1),K=new a,V=new a,$=new a,tt=function(){function s(){var t;h(this,s),(t=n(this,s)).isTransformControlsGizmo=!0,t.type="TransformControlsGizmo";var e=new c({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),i=new M({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),a=e.clone();a.opacity=.15;var r=i.clone();r.opacity=.5;var w=e.clone();w.color.setHex(16711680);var o=e.clone();o.color.setHex(65280);var k=e.clone();k.color.setHex(255);var m=e.clone();m.color.setHex(16711680),m.opacity=.5;var E=e.clone();E.color.setHex(65280),E.opacity=.5;var S=e.clone();S.color.setHex(255),S.opacity=.5;var b=e.clone();b.opacity=.25;var g=e.clone();g.color.setHex(16776960),g.opacity=.25,e.clone().color.setHex(16776960);var T=e.clone();T.color.setHex(7895160);var x=new v(0,.04,.1,12);x.translate(0,.05,0);var D=new p(.08,.08,.08);D.translate(0,.04,0);var A=new f;A.setAttribute("position",new X([0,0,0,1,0,0],3));var W=new v(.0075,.0075,.5,3);function C(t,e){var i=new y(t,.0075,3,64,e*Math.PI*2);return i.rotateY(Math.PI/2),i.rotateX(Math.PI/2),i}W.translate(0,.25,0);var P,j={X:[[new u(x,w),[.5,0,0],[0,0,-Math.PI/2]],[new u(x,w),[-.5,0,0],[0,0,Math.PI/2]],[new u(W,w),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new u(x,o),[0,.5,0]],[new u(x,o),[0,-.5,0],[Math.PI,0,0]],[new u(W,o)]],Z:[[new u(x,k),[0,0,.5],[Math.PI/2,0,0]],[new u(x,k),[0,0,-.5],[-Math.PI/2,0,0]],[new u(W,k),null,[Math.PI/2,0,0]]],XYZ:[[new u(new Y(.1,0),b.clone()),[0,0,0]]],XY:[[new u(new p(.15,.15,.01),S.clone()),[.15,.15,0]]],YZ:[[new u(new p(.15,.15,.01),m.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new u(new p(.15,.15,.01),E.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},R={X:[[new u(new v(.2,0,.6,4),a),[.3,0,0],[0,0,-Math.PI/2]],[new u(new v(.2,0,.6,4),a),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new u(new v(.2,0,.6,4),a),[0,.3,0]],[new u(new v(.2,0,.6,4),a),[0,-.3,0],[0,0,Math.PI]]],Z:[[new u(new v(.2,0,.6,4),a),[0,0,.3],[Math.PI/2,0,0]],[new u(new v(.2,0,.6,4),a),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new u(new Y(.2,0),a)]],XY:[[new u(new p(.2,.2,.01),a),[.15,.15,0]]],YZ:[[new u(new p(.2,.2,.01),a),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new u(new p(.2,.2,.01),a),[.15,0,.15],[-Math.PI/2,0,0]]]},z={START:[[new u(new Y(.01,2),r),null,null,null,"helper"]],END:[[new u(new Y(.01,2),r),null,null,null,"helper"]],DELTA:[[new Z((P=new f,P.setAttribute("position",new X([0,0,0,1,1,1],3)),P),r),null,null,null,"helper"]],X:[[new Z(A,r.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Z(A,r.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Z(A,r.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},I={XYZE:[[new u(C(.5,1),T),null,[0,Math.PI/2,0]]],X:[[new u(C(.5,.5),w)]],Y:[[new u(C(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new u(C(.5,.5),k),null,[0,Math.PI/2,0]]],E:[[new u(C(.75,1),g),null,[0,Math.PI/2,0]]]},Q={AXIS:[[new Z(A,r.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},G={XYZE:[[new u(new d(.25,10,8),a)]],X:[[new u(new y(.5,.1,4,24),a),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new u(new y(.5,.1,4,24),a),[0,0,0],[Math.PI/2,0,0]]],Z:[[new u(new y(.5,.1,4,24),a),[0,0,0],[0,0,-Math.PI/2]]],E:[[new u(new y(.75,.1,2,24),a)]]},H={X:[[new u(D,w),[.5,0,0],[0,0,-Math.PI/2]],[new u(W,w),[0,0,0],[0,0,-Math.PI/2]],[new u(D,w),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new u(D,o),[0,.5,0]],[new u(W,o)],[new u(D,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new u(D,k),[0,0,.5],[Math.PI/2,0,0]],[new u(W,k),[0,0,0],[Math.PI/2,0,0]],[new u(D,k),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new u(new p(.15,.15,.01),S),[.15,.15,0]]],YZ:[[new u(new p(.15,.15,.01),m),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new u(new p(.15,.15,.01),E),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new u(new p(.1,.1,.1),b.clone())]]},L={X:[[new u(new v(.2,0,.6,4),a),[.3,0,0],[0,0,-Math.PI/2]],[new u(new v(.2,0,.6,4),a),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new u(new v(.2,0,.6,4),a),[0,.3,0]],[new u(new v(.2,0,.6,4),a),[0,-.3,0],[0,0,Math.PI]]],Z:[[new u(new v(.2,0,.6,4),a),[0,0,.3],[Math.PI/2,0,0]],[new u(new v(.2,0,.6,4),a),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new u(new p(.2,.2,.01),a),[.15,.15,0]]],YZ:[[new u(new p(.2,.2,.01),a),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new u(new p(.2,.2,.01),a),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new u(new p(.2,.2,.2),a),[0,0,0]]]},N={X:[[new Z(A,r.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new Z(A,r.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new Z(A,r.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function U(t){var e=new l;for(var i in t)for(var h=t[i].length;h--;){var n=t[i][h][0].clone(),s=t[i][h][1],a=t[i][h][2],r=t[i][h][3],w=t[i][h][4];n.name=i,n.tag=w,s&&n.position.set(s[0],s[1],s[2]),a&&n.rotation.set(a[0],a[1],a[2]),r&&n.scale.set(r[0],r[1],r[2]),n.updateMatrix();var o=n.geometry.clone();o.applyMatrix4(n.matrix),n.geometry=o,n.renderOrder=1/0,n.position.set(0,0,0),n.rotation.set(0,0,0),n.scale.set(1,1,1),e.add(n)}return e}return t.gizmo={},t.picker={},t.helper={},t.add(t.gizmo.translate=U(j)),t.add(t.gizmo.rotate=U(I)),t.add(t.gizmo.scale=U(H)),t.add(t.picker.translate=U(R)),t.add(t.picker.rotate=U(G)),t.add(t.picker.scale=U(L)),t.add(t.helper.translate=U(z)),t.add(t.helper.rotate=U(Q)),t.add(t.helper.scale=U(N)),t.picker.translate.visible=!1,t.picker.rotate.visible=!1,t.picker.scale.visible=!1,t}return t(s,l),e(s,[{key:"updateMatrixWorld",value:function(t){var e=this,h="local"===("scale"===this.mode?"local":this.space)?this.worldQuaternion:_;this.gizmo.translate.visible="translate"===this.mode,this.gizmo.rotate.visible="rotate"===this.mode,this.gizmo.scale.visible="scale"===this.mode,this.helper.translate.visible="translate"===this.mode,this.helper.rotate.visible="rotate"===this.mode,this.helper.scale.visible="scale"===this.mode;var n=[];n=(n=(n=n.concat(this.picker[this.mode].children)).concat(this.gizmo[this.mode].children)).concat(this.helper[this.mode].children);for(var a=function(){var t,i=n[r];if(i.visible=!0,i.rotation.set(0,0,0),i.position.copy(e.worldPosition),t=e.camera.isOrthographicCamera?(e.camera.top-e.camera.bottom)/e.camera.zoom:e.worldPosition.distanceTo(e.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*e.camera.fov/360)/e.camera.zoom,7),i.scale.set(1,1,1).multiplyScalar(t*e.size/4),"helper"===i.tag)return i.visible=!1,"AXIS"===i.name?(i.visible=!!e.axis,"X"===e.axis&&(g.setFromEuler(G.set(0,0,0)),i.quaternion.copy(h).multiply(g),Math.abs(H.copy(q).applyQuaternion(h).dot(e.eye))>.9&&(i.visible=!1)),"Y"===e.axis&&(g.setFromEuler(G.set(0,0,Math.PI/2)),i.quaternion.copy(h).multiply(g),Math.abs(H.copy(F).applyQuaternion(h).dot(e.eye))>.9&&(i.visible=!1)),"Z"===e.axis&&(g.setFromEuler(G.set(0,Math.PI/2,0)),i.quaternion.copy(h).multiply(g),Math.abs(H.copy(J).applyQuaternion(h).dot(e.eye))>.9&&(i.visible=!1)),"XYZE"===e.axis&&(g.setFromEuler(G.set(0,Math.PI/2,0)),H.copy(e.rotationAxis),i.quaternion.setFromRotationMatrix(N.lookAt(L,H,F)),i.quaternion.multiply(g),i.visible=e.dragging),"E"===e.axis&&(i.visible=!1)):"START"===i.name?(i.position.copy(e.worldPositionStart),i.visible=e.dragging):"END"===i.name?(i.position.copy(e.worldPosition),i.visible=e.dragging):"DELTA"===i.name?(i.position.copy(e.worldPositionStart),i.quaternion.copy(e.worldQuaternionStart),S.set(1e-10,1e-10,1e-10).add(e.worldPositionStart).sub(e.worldPosition).multiplyScalar(-1),S.applyQuaternion(e.worldQuaternionStart.clone().invert()),i.scale.copy(S),i.visible=e.dragging):(i.quaternion.copy(h),e.dragging?i.position.copy(e.worldPositionStart):i.position.copy(e.worldPosition),e.axis&&(i.visible=-1!==e.axis.search(i.name))),1;if(i.quaternion.copy(h),"translate"===e.mode||"scale"===e.mode){var s=.99;"X"===i.name&&Math.abs(H.copy(q).applyQuaternion(h).dot(e.eye))>s&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),"Y"===i.name&&Math.abs(H.copy(F).applyQuaternion(h).dot(e.eye))>s&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),"Z"===i.name&&Math.abs(H.copy(J).applyQuaternion(h).dot(e.eye))>s&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),"XY"===i.name&&Math.abs(H.copy(J).applyQuaternion(h).dot(e.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),"YZ"===i.name&&Math.abs(H.copy(q).applyQuaternion(h).dot(e.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1),"XZ"===i.name&&Math.abs(H.copy(F).applyQuaternion(h).dot(e.eye))<.2&&(i.scale.set(1e-10,1e-10,1e-10),i.visible=!1)}else"rotate"===e.mode&&(U.copy(h),H.copy(e.eye).applyQuaternion(g.copy(h).invert()),-1!==i.name.search("E")&&i.quaternion.setFromRotationMatrix(N.lookAt(e.eye,L,F)),"X"===i.name&&(g.setFromAxisAngle(q,Math.atan2(-H.y,H.z)),g.multiplyQuaternions(U,g),i.quaternion.copy(g)),"Y"===i.name&&(g.setFromAxisAngle(F,Math.atan2(H.x,H.z)),g.multiplyQuaternions(U,g),i.quaternion.copy(g)),"Z"===i.name&&(g.setFromAxisAngle(J,Math.atan2(H.y,H.x)),g.multiplyQuaternions(U,g),i.quaternion.copy(g)));i.visible=i.visible&&(-1===i.name.indexOf("X")||e.showX),i.visible=i.visible&&(-1===i.name.indexOf("Y")||e.showY),i.visible=i.visible&&(-1===i.name.indexOf("Z")||e.showZ),i.visible=i.visible&&(-1===i.name.indexOf("E")||e.showX&&e.showY&&e.showZ),i.visible=i.visible&&("XY"!==i.name||e.showXY),i.visible=i.visible&&("YZ"!==i.name||e.showYZ),i.visible=i.visible&&("XZ"!==i.name||e.showXZ),i.material.G=i.material.G||i.material.color.clone(),i.material.H=i.material.H||i.material.opacity,i.material.color.copy(i.material.G),i.material.opacity=i.material.H,e.enabled&&e.axis&&(i.name===e.axis||e.axis.split("").some(function(t){return i.name===t}))&&(i.material.color.setHex(16776960),i.material.opacity=1)},r=0;r<n.length;r++)a();i(s,"updateMatrixWorld",this,3)([t])}}])}(),et=function(){function s(){var t;return h(this,s),(t=n(this,s,[new k(1e5,1e5,2,2),new c({visible:!1,wireframe:!0,side:m,transparent:!0,opacity:.1,toneMapped:!1})])).isTransformControlsPlane=!0,t.type="TransformControlsPlane",t}return t(s,u),e(s,[{key:"updateMatrixWorld",value:function(t){var e=this.space;switch(this.position.copy(this.worldPosition),"scale"===this.mode&&(e="local"),K.copy(q).applyQuaternion("local"===e?this.worldQuaternion:_),V.copy(F).applyQuaternion("local"===e?this.worldQuaternion:_),$.copy(J).applyQuaternion("local"===e?this.worldQuaternion:_),H.copy(V),this.mode){case"translate":case"scale":switch(this.axis){case"X":H.copy(this.eye).cross(K),B.copy(K).cross(H);break;case"Y":H.copy(this.eye).cross(V),B.copy(V).cross(H);break;case"Z":H.copy(this.eye).cross($),B.copy($).cross(H);break;case"XY":B.copy($);break;case"YZ":B.copy(K);break;case"XZ":H.copy($),B.copy(V);break;case"XYZ":case"E":B.set(0,0,0)}break;default:B.set(0,0,0)}0===B.length()?this.quaternion.copy(this.cameraQuaternion):(O.lookAt(S.set(0,0,0),B,H),this.quaternion.setFromRotationMatrix(O)),i(s,"updateMatrixWorld",this,3)([t])}}])}();export{C as TransformControls,tt as TransformControlsGizmo,et as TransformControlsPlane};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import"../../core/debugLogger.js";var r=function(){return t(function t(r){i(this,t),this.sceneViewer=r,this.autoRotateSpeed=1,this.t=!1},[{key:"toggleCameraRotation",value:function(){var t=this.sceneViewer;if(!t.controls||!t.sceneInitializationManager)return!1;var i=t.sceneInitializationManager.toggleAutoRotation();return this.t=i,i&&t.controls.autoRotateSpeed!==this.autoRotateSpeed&&(t.controls.autoRotateSpeed=this.autoRotateSpeed),i}},{key:"isAutoRotating",value:function(){return this.sceneViewer.controls&&(this.t=this.sceneViewer.controls.autoRotate),this.t}},{key:"setAutoRotation",value:function(t){var i=this.sceneViewer;if(i.sceneInitializationManager){var r=i.sceneInitializationManager.toggleAutoRotation(t);return this.t=r,r}return!1}}])}();export{r as CameraControlsManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as e,asyncToGenerator as i,regenerator as r}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as n from"three";var s=function(){return t(function t(i){e(this,t),this.scene=i.scene,this.camera=i.camera,this.transformManager=i.transformManager,this.modelPreloader=i.modelPreloader,this.componentManager=i.componentManager,this.currentDragComponentData=null,this.dragPreviewSize=null,this.isCreatingDragPreview=!1,this.dragPreviewMesh=null,this.dragPreviewBoundingBox=null,this.dragTargetPosition=null,this.isDragOverScene=!1,this.onComponentDragStart=this.onComponentDragStart.bind(this),this.onComponentDragEnd=this.onComponentDragEnd.bind(this),this.onDragEnter=this.onDragEnter.bind(this),this.onDragLeave=this.onDragLeave.bind(this),this.onDragOver=this.onDragOver.bind(this),this.onDrop=this.onDrop.bind(this)},[{key:"onComponentDragStart",value:(f=i(r().m(function t(e,i){return r().w(function(t){for(;;)switch(t.n){case 0:return this.currentDragComponentData=e,t.n=1,this.calculateDragPreviewSize(e);case 1:return t.a(2,!0)}},t,this)})),function(t,e){return f.apply(this,arguments)})},{key:"onComponentDragEnd",value:function(){return this.currentDragComponentData=null,this.dragPreviewSize=null,this.isCreatingDragPreview=!1,this.clearDragPreview(),this.cleanupDragPreview(),this.dragTargetPosition=null,this.isDragOverScene=!1,!0}},{key:"onDragEnter",value:(l=i(r().m(function t(e,i){var n;return r().w(function(t){for(;;)switch(t.n){case 0:if(e.preventDefault(),this.isDragOverScene=!0,!this.currentDragComponentData)try{(n=e.dataTransfer.getData("application/json"))&&(this.currentDragComponentData=JSON.parse(n))}catch(t){}if(this.dragPreviewSize||!this.currentDragComponentData){t.n=1;break}return t.n=1,this.calculateDragPreviewSize(this.currentDragComponentData);case 1:if(this.dragPreviewMesh||!this.currentDragComponentData||this.isCreatingDragPreview){t.n=4;break}return this.isCreatingDragPreview=!0,t.p=2,t.n=3,this.createDragPreview();case 3:return t.p=3,this.isCreatingDragPreview=!1,t.f(3);case 4:case 5:return t.a(2)}},t,this,[[2,,3,4]])})),function(t,e){return l.apply(this,arguments)})},{key:"onDragLeave",value:function(t,e){e.contains(t.relatedTarget)||(this.isDragOverScene=!1,this.clearDragPreview())}},{key:"onDragOver",value:(c=i(r().m(function t(e,i){var n,s,a,h;return r().w(function(t){for(;;)switch(t.n){case 0:if(e.preventDefault(),e.dataTransfer.dropEffect="copy",this.currentDragComponentData){t.n=4;break}if(t.p=1,!(n=e.dataTransfer.getData("application/json"))){t.n=2;break}if(this.currentDragComponentData=JSON.parse(n),this.dragPreviewSize){t.n=2;break}return t.n=2,this.calculateDragPreviewSize(this.currentDragComponentData);case 2:t.n=4;break;case 3:t.p=3,t.v;case 4:if(!(s=this.calculateDropPosition(e,i))){t.n=6;break}return this.dragTargetPosition=s,t.n=5,this.updateDragPreview(s);case 5:this.dragPreviewMesh&&this.dragPreviewMesh.userData.isFallback&&(a=this.checkBoundingBoxOverlap(),h=a?16711680:65280,this.dragPreviewMesh.material.color.set(h));case 6:return t.a(2)}},t,this,[[1,3]])})),function(t,e){return c.apply(this,arguments)})},{key:"onDrop",value:(o=i(r().m(function t(e,i){var n,s,a,h,u,o,c=arguments;return r().w(function(t){for(;;)switch(t.n){case 0:if(n=c.length>2&&void 0!==c[2]?c[2]:{},e.preventDefault(),this.isDragOverScene=!1,t.p=1,s=e.dataTransfer.getData("application/json")){t.n=2;break}return n.onPlacementCanceled&&n.onPlacementCanceled({reason:"invalid-data",message:"No component data found in drop event"}),t.a(2,!1);case 2:t.p=2,a=JSON.parse(s),t.n=4;break;case 3:return t.p=3,t.v,n.onPlacementCanceled&&n.onPlacementCanceled({reason:"parse-error",message:"Could not parse component data"}),t.a(2,!1);case 4:if(a&&a.libraryId&&a.modelKey){t.n=5;break}return n.onPlacementCanceled&&n.onPlacementCanceled({reason:"invalid-data",message:"Component data missing required fields"}),t.a(2,!1);case 5:if(h=this.calculateDropPosition(e,i)){t.n=6;break}return n.onPlacementCanceled&&n.onPlacementCanceled({reason:"position-error",message:"Could not calculate drop position",componentData:a}),t.a(2,!1);case 6:if(a.position={x:h.x,y:h.y,z:h.z},u=this.checkBoundingBoxOverlap(),o=!1,!u){t.n=7;break}return n.onPlacementCanceled&&n.onPlacementCanceled({reason:"overlap",componentData:a}),t.a(2,!1);case 7:if(!n.onAddComponent){t.n=9;break}return t.n=8,n.onAddComponent(a);case 8:o=t.v,t.n=11;break;case 9:if(!this.componentManager){t.n=11;break}return t.n=10,this.componentManager.addComponentToScene(a);case 10:o=t.v;case 11:return o&&n.onComponentAdded&&n.onComponentAdded({componentData:a,position:h}),t.a(2,o);case 12:return t.p=12,t.v,t.a(2,!1);case 13:return t.p=13,this.clearDragPreview(),this.cleanupDragPreview(),this.currentDragComponentData=null,this.dragPreviewSize=null,this.dragTargetPosition=null,this.isDragOverScene=!1,t.f(13);case 14:return t.a(2)}},t,this,[[2,3],[1,12,13,14]])})),function(t,e){return o.apply(this,arguments)})},{key:"calculateDropPosition",value:function(t,e){if(!this.camera||!e)return null;try{var i,r=e.getBoundingClientRect(),s=(t.clientX-r.left)/r.width*2-1,a=-(t.clientY-r.top)/r.height*2+1,h=new n.Raycaster;h.setFromCamera({x:s,y:a},this.camera);var u=1/((null===(i=this.transformManager)||void 0===i||null===(i=i.snapValues)||void 0===i?void 0:i.translation)||.5),o=null;if(this.scene.traverse(function(t){var e;t.isMesh&&null!==(e=t.userData)&&void 0!==e&&e.isBaseGround&&(o=t)}),o){var c=h.intersectObject(o,!1);if(c.length>0){var l=c[0];return{x:Math.round(l.point.x*u)/u,y:Math.max(0,l.point.y),z:Math.round(l.point.z*u)/u}}}var f=new n.Plane(new n.Vector3(0,1,0),0),v=new n.Vector3;return h.ray.intersectPlane(f,v)&&v?{x:Math.round(v.x*u)/u,y:0,z:Math.round(v.z*u)/u}:{x:0,y:0,z:0}}catch(t){}return null}},{key:"calculateDragPreviewSize",value:(u=i(r().m(function t(e){var i,n,s,a,h,u;return r().w(function(t){for(;;)switch(t.n){case 0:return i=1,n=1,s=1,t.p=1,t.p=2,t.n=3,this.getModelBoundingBox(e);case 3:if(!(a=t.v)){t.n=4;break}i=a.width,n=a.height,s=a.depth,t.n=5;break;case 4:throw new Error("Could not get model bounding box");case 5:t.n=7;break;case 6:t.p=6,t.v,e.dimensions?(i=e.dimensions.width||e.dimensions.x||1,n=e.dimensions.height||e.dimensions.y||1,s=e.dimensions.depth||e.dimensions.z||1):e.boundingBox?(h=e.boundingBox).max&&h.min?(i=Math.abs(h.max.x-h.min.x)||1,n=Math.abs(h.max.y-h.min.y)||1,s=Math.abs(h.max.z-h.min.z)||1):void 0!==h.width&&void 0!==h.height&&void 0!==h.depth?(i=h.width||1,n=h.height||1,s=h.depth||1):"number"==typeof h.x&&"number"==typeof h.y&&"number"==typeof h.z&&(i=h.x||1,n=h.y||1,s=h.z||1):(u=e.type||"").toLowerCase().includes("chiller")?(i=2,n=2,s=2):u.toLowerCase().includes("pump")?(i=1,n=1,s=1):u.toLowerCase().includes("tower")?(i=3,n=4,s=3):(i=1,n=1,s=1);case 7:i=Math.max(i,.5),n=Math.max(n,.5),s=Math.max(s,.5),this.dragPreviewSize={width:i,height:n,depth:s},t.n=9;break;case 8:t.p=8,t.v,this.dragPreviewSize={width:1,height:1,depth:1};case 9:return t.a(2)}},t,this,[[2,6],[1,8]])})),function(t){return u.apply(this,arguments)})},{key:"getModelBoundingBox",value:(h=i(r().m(function t(e){var i,s,a,h,u,o,c;return r().w(function(t){for(;;)switch(t.n){case 0:if(e.libraryId){t.n=1;break}return t.a(2,null);case 1:return t.p=1,s={},t.p=2,t.n=3,fetch("./library/component-dictionary.json");case 3:return a=t.v,t.n=4,a.json();case 4:s=t.v,t.n=6;break;case 5:return t.p=5,t.v,t.a(2,null);case 6:if((h=s[e.libraryId])&&h.modelKey){t.n=7;break}return t.a(2,null);case 7:if(u=null===(i=this.modelPreloader)||void 0===i?void 0:i.getCachedModel(h.modelKey)){t.n=8;break}return t.a(2,null);case 8:return o=(new n.Box3).setFromObject(u),c=o.getSize(new n.Vector3),t.a(2,{width:c.x,height:c.y,depth:c.z});case 9:return t.p=9,t.v,t.a(2,null)}},t,this,[[2,5],[1,9]])})),function(t){return h.apply(this,arguments)})},{key:"updateDragPreview",value:(a=i(r().m(function t(e){return r().w(function(t){for(;;)switch(t.n){case 0:if(this.dragPreviewMesh||this.isCreatingDragPreview){t.n=3;break}return this.isCreatingDragPreview=!0,t.p=1,t.n=2,this.createDragPreview();case 2:return t.p=2,this.isCreatingDragPreview=!1,t.f(2);case 3:this.dragPreviewMesh&&e&&(this.dragPreviewMesh.position.set(e.x,e.y,e.z),this.dragPreviewMesh.visible=!0,this.dragPreviewBoundingBox&&(this.dragPreviewBoundingBox.position.set(e.x,e.y,e.z),this.dragPreviewBoundingBox.visible=!0));case 4:return t.a(2)}},t,this,[[1,,2,3]])})),function(t){return a.apply(this,arguments)})},{key:"createDragPreview",value:(s=i(r().m(function t(){var e,i,s,a,h,u,o,c,l;return r().w(function(t){for(;;)switch(t.n){case 0:if(this.clearDragPreview(),this.scene&&this.currentDragComponentData){t.n=1;break}return t.a(2);case 1:return t.p=1,e={},t.p=2,t.n=3,fetch("./library/component-dictionary.json");case 3:return i=t.v,t.n=4,i.json();case 4:e=t.v,t.n=6;break;case 5:t.p=5,t.v;case 6:if(s=this.currentDragComponentData.libraryId,a=e[s],h=null,a&&a.modelKey&&this.modelPreloader)try{(u=this.modelPreloader.getCachedModel(a.modelKey))&&((h=u.clone()).traverse(function(t){t.isMesh&&(t.material=t.material.clone(),t.material.transparent=!0,t.material.opacity=.4,t.material.depthTest=!0,t.material.depthWrite=!0,t.material.needsUpdate=!0)}),h.userData.isPreview=!0)}catch(t){h=null}return h||(o=this.dragPreviewSize||{width:1,height:1,depth:1},c=new n.BoxGeometry(o.width,o.height,o.depth),l=new n.MeshBasicMaterial({color:65280,wireframe:!0,transparent:!0,opacity:.6}),(h=new n.Mesh(c,l)).userData.isFallback=!0,h.userData.isPreview=!0),this.scene.add(h),this.dragPreviewMesh=h,this.dragPreviewMesh.visible=!1,this.createBoundingBoxHelper(),t.a(2,!0);case 7:return t.p=7,t.v,t.a(2,!1)}},t,this,[[2,5],[1,7]])})),function(){return s.apply(this,arguments)})},{key:"createBoundingBoxHelper",value:function(){if(this.dragPreviewMesh){var t=(new n.Box3).setFromObject(this.dragPreviewMesh),e=t.getSize(new n.Vector3);t.getCenter(new n.Vector3);var i=new n.BoxGeometry(e.x,e.y,e.z),r=new n.LineBasicMaterial({color:16776960,transparent:!0,opacity:.3}),s=new n.EdgesGeometry(i),a=new n.LineSegments(s,r);a.position.copy(this.dragPreviewMesh.position),this.scene.add(a),this.dragPreviewBoundingBox=a,this.dragPreviewBoundingBox.visible=!1}}},{key:"checkBoundingBoxOverlap",value:function(){var t=this;if(!this.dragPreviewMesh||!this.scene)return!1;var e=(new n.Box3).setFromObject(this.dragPreviewMesh),i=[];this.scene.traverse(function(e){!e.isMesh||e===t.dragPreviewMesh||e===t.dragPreviewBoundingBox||e.userData.isBaseGround||e.userData.isBrickWall||e.userData.isBaseGrid||e.userData&&("component"===e.userData.componentType||"connector"===e.userData.componentType||"gateway"===e.userData.componentType)&&i.push(e)});for(var r=0,s=i;r<s.length;r++){var a=s[r],h=(new n.Box3).setFromObject(a);if(e.intersectsBox(h))return!0}return!1}},{key:"clearDragPreview",value:function(){this.dragPreviewMesh&&(this.dragPreviewMesh.visible=!1),this.dragPreviewBoundingBox&&(this.dragPreviewBoundingBox.visible=!1)}},{key:"cleanupDragPreview",value:function(){this.dragPreviewMesh&&(this.scene.remove(this.dragPreviewMesh),this.dragPreviewMesh.geometry&&this.dragPreviewMesh.geometry.dispose(),this.dragPreviewMesh.material&&(Array.isArray(this.dragPreviewMesh.material)?this.dragPreviewMesh.material.forEach(function(t){return t.dispose()}):this.dragPreviewMesh.material.dispose()),this.dragPreviewMesh=null),this.dragPreviewBoundingBox&&(this.scene.remove(this.dragPreviewBoundingBox),this.dragPreviewBoundingBox.geometry&&this.dragPreviewBoundingBox.geometry.dispose(),this.dragPreviewBoundingBox.material&&this.dragPreviewBoundingBox.material.dispose(),this.dragPreviewBoundingBox=null)}},{key:"dispose",value:function(){this.cleanupDragPreview(),this.currentDragComponentData=null,this.dragPreviewSize=null,this.isDragOverScene=!1,this.dragTargetPosition=null}},{key:"getDragState",value:function(){return{isDragging:!!this.currentDragComponentData,isDragOverScene:this.isDragOverScene,dragComponentData:this.currentDragComponentData,dragTargetPosition:this.dragTargetPosition}}}]);var s,a,h,u,o,c,l,f}();export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,classCallCheck as n}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as i from"three";import{logger as t}from"../../core/debugLogger.js";var a=function(){return e(function e(i){n(this,e),this.sceneViewer=i,this.handleKeyDown=null},[{key:"setupKeyboardControls",value:function(){var e=this;this.handleKeyDown=function(n){if(n.ctrlKey&&("z"===n.key.toLowerCase()||"KeyZ"===n.code))return n.preventDefault(),n.stopPropagation(),void e.undoTransform();if(n.altKey&&("r"===n.key.toLowerCase()||"KeyR"===n.code))return n.preventDefault(),n.stopPropagation(),void e.toggleShouldUpdatePaths();switch(n.key.toLowerCase()){case"p":e.togglePerformanceUI();break;case"l":e.logPerformanceSummary();break;case"r":e.resetPerformanceStats();break;case"a":e.toggleAutoRotation();break;case"e":e.cycleToneMapping();break;case"=":case"+":e.increaseExposure();break;case"-":e.decreaseExposure();break;case"h":e.showHelpInfo()}},window.addEventListener("keydown",this.handleKeyDown,!0),window._performanceKeyHandler=this.handleKeyDown,this.overrideTransformControlsKeyboard(),t.info("Keyboard controls initialized with Ctrl+Z undo override")}},{key:"togglePerformanceUI",value:function(){var e=this.sceneViewer;e.performanceUI&&(e.performanceUI.isVisible?e.performanceUI.hide():e.performanceUI.show())}},{key:"logPerformanceSummary",value:function(){var e=this.sceneViewer;e.performanceMonitor&&e.performanceMonitor.logSummary()}},{key:"resetPerformanceStats",value:function(){var e=this.sceneViewer;e.performanceMonitor&&e.performanceMonitor.reset()}},{key:"cycleToneMapping",value:function(){var e=this.sceneViewer;if(e.renderer){var n=[{type:i.NoToneMapping,name:"None"},{type:i.LinearToneMapping,name:"Linear"},{type:i.ReinhardToneMapping,name:"Reinhard"},{type:i.CineonToneMapping,name:"Cineon"},{type:i.ACESFilmicToneMapping,name:"ACES Filmic"}],t=n.findIndex(function(n){return n.type===e.renderer.toneMapping}),a=(t+1)%n.length,o=(n[t],n[a]);e.renderer.toneMapping=o.type}}},{key:"increaseExposure",value:function(){var e=this.sceneViewer;e.renderer&&(e.renderer.toneMappingExposure=Math.min(e.renderer.toneMappingExposure+.1,3))}},{key:"decreaseExposure",value:function(){var e=this.sceneViewer;e.renderer&&(e.renderer.toneMappingExposure=Math.max(e.renderer.toneMappingExposure-.1,.1))}},{key:"showHelpInfo",value:function(){}},{key:"toggleShouldUpdatePaths",value:function(){var e=this.sceneViewer;e&&"function"==typeof e.toggleShouldUpdatePaths&&e.toggleShouldUpdatePaths()}},{key:"toggleAutoRotation",value:function(){var e=this.sceneViewer;if(e.sceneInitializationManager){var n=e.sceneInitializationManager.toggleAutoRotation();void 0!==e.isAutoRotating&&(e.isAutoRotating=n)}}},{key:"setupResizeHandler",value:function(){var e=this.sceneViewer;e.handleResize=function(){if(e.$refs.container&&e.camera&&e.renderer){var n=e.$refs.container.getBoundingClientRect(),i=n.width,t=n.height;e.camera.aspect=i/t,e.camera.updateProjectionMatrix(),e.renderer.setSize(i,t),e.composer&&(e.composer.setSize(i,t),e.ssaoPass&&e.ssaoPass.setSize(i,t),e.bloomPass&&e.bloomPass.resolution.set(i,t)),e.tooltipsManager&&e.tooltipsManager.resize()}},e.resizeObserver=new ResizeObserver(e.handleResize),e.resizeObserver.observe(e.$refs.container),window.addEventListener("resize",e.handleResize),t.info("Resize handler initialized")}},{key:"cleanup",value:function(){this.handleKeyDown&&(window.removeEventListener("keydown",this.handleKeyDown,!0),this.handleKeyDown=null),window._performanceKeyHandler&&(window.removeEventListener("keydown",window._performanceKeyHandler,!0),delete window._performanceKeyHandler);var e=this.sceneViewer;e.handleResize&&(window.removeEventListener("resize",e.handleResize),e.handleResize=null),e.resizeObserver&&(e.resizeObserver.disconnect(),e.resizeObserver=null),t.info("Keyboard controls cleanup completed")}},{key:"undoTransform",value:function(){var e=this.sceneViewer;e.centralPlant&&("function"==typeof e.centralPlant.undoTransform&&e.centralPlant.undoTransform()&&(e.sceneHelper&&"function"==typeof e.sceneHelper.requestRender&&e.sceneHelper.requestRender(),e.renderer&&e.renderer.render(e.scene,e.camera),e.updateComponentPositions&&"function"==typeof e.updateComponentPositions&&e.updateComponentPositions()))}},{key:"overrideTransformControlsKeyboard",value:function(){var e=this.sceneViewer;if(e.transformManager&&e.transformManager.eventHandlers&&e.transformManager.eventHandlers.keydown){var n=e.transformManager.eventHandlers.keydown;e.transformManager.eventHandlers.keydown=function(e){(!e.ctrlKey||"z"!==e.key.toLowerCase()&&"KeyZ"!==e.code)&&n(e)}}}}])}();export{a as KeyboardControlsManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,createForOfIteratorHelper as i,objectSpread2 as s,classCallCheck as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as n from"three";import{TransformControls as h}from"./TransformControls.js";var o=function(){return t(function t(i,s,n){var h=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;e(this,t),this.scene=i,this.camera=s,this.renderer=n,this.orbitControls=h,this.transformControls=null,this.boundingBoxHelper=null,this.boundingBoxCache=new WeakMap,this.selectedObject=null,this.currentMode="translate",this.currentSpace="world",this.forceInvisible=!1,this.eventHandlers={keydown:null,click:null,transformStart:null,transformEnd:null,transforming:null},this.clickTiming={lastClickTime:0,lastClickedObject:null,doubleClickDelay:300},this.transformState={isTransforming:!1,initialTransform:null,currentTransform:null},this.config={size:1,enabled:!0,showX:!0,showY:!0,showZ:!0,snap:null,translationSnap:null,rotationSnap:null,scaleSnap:null,showBoundingBox:!0,boundingBoxColor:65280,useBoundingBoxSelection:!0},this.callbacks={onObjectSelect:null,onTransformStart:null,onTransform:null,onTransformEnd:null,onModeChange:null,onObjectRemoved:null},this.init()},[{key:"init",value:function(){this.createTransformControls(),this.setupEventListeners(),this.setupKeyboardControls()}},{key:"on",value:function(t){t.onObjectSelect&&(this.callbacks.onObjectSelect=t.onObjectSelect),t.onTransformStart&&(this.callbacks.onTransformStart=t.onTransformStart),t.onTransform&&(this.callbacks.onTransform=t.onTransform),t.onTransformEnd&&(this.callbacks.onTransformEnd=t.onTransformEnd),t.onModeChange&&(this.callbacks.onModeChange=t.onModeChange),t.onObjectRemoved&&(this.callbacks.onObjectRemoved=t.onObjectRemoved)}},{key:"createTransformControls",value:function(){this.transformControls=new h(this.camera,this.renderer.domElement),this.transformControls.setMode(this.currentMode),this.transformControls.setSpace(this.currentSpace),this.transformControls.setSize(this.config.size),this.transformControls.setDelay(this.clickTiming),this.transformControls.showX=this.config.showX,this.transformControls.showY=this.config.showY,this.transformControls.showZ=this.config.showZ,this.transformControls.showXY=!1,this.transformControls.showYZ=!1,this.transformControls.showXZ=!1,this.transformControls.isTransformControls=!0,this.transformControls.userData={isTransformControls:!0},this.scene.add(this.transformControls),this.transformControls.enabled=!1,this.t()}},{key:"setupEventListeners",value:function(){var t=this;this.eventHandlers.transformStart=function(){t.transformState.isTransforming=!0,t.selectedObject&&(t.transformState.initialTransform={position:t.selectedObject.position.clone(),rotation:t.selectedObject.rotation.clone(),scale:t.selectedObject.scale.clone()}),t.orbitControls&&(t.orbitControls.enabled=!1),t.callbacks.onTransformStart&&t.callbacks.onTransformStart(t.selectedObject,t.currentMode)},this.eventHandlers.transformEnd=function(){if(t.transformState.isTransforming=!1,t.orbitControls&&(t.orbitControls.enabled=!0),t.selectedObject&&(t.transformState.currentTransform={position:t.selectedObject.position.clone(),rotation:t.selectedObject.rotation.clone(),scale:t.selectedObject.scale.clone()},t.boundingBoxCache.has(t.selectedObject)&&t.boundingBoxCache.delete(t.selectedObject)),t.callbacks.onTransformEnd&&t.callbacks.onTransformEnd(t.selectedObject,t.transformState.initialTransform,t.transformState.currentTransform,t.currentMode),"undefined"!=typeof window){var i,s=new CustomEvent("sceneUpdateComplete",{detail:{timestamp:Date.now(),transformType:t.currentMode,objectName:(null===(i=t.selectedObject)||void 0===i?void 0:i.name)||"unknown"}});window.dispatchEvent(s)}},this.eventHandlers.transforming=function(){if(t.selectedObject&&t.boundingBoxCache.has(t.selectedObject)&&t.boundingBoxCache.delete(t.selectedObject),t.updateBoundingBox(),t.callbacks.onTransform&&t.callbacks.onTransform(t.selectedObject,t.currentMode),"undefined"!=typeof window){var i,s=new CustomEvent("sceneUpdateComplete",{detail:{timestamp:Date.now(),transformType:t.currentMode,objectName:(null===(i=t.selectedObject)||void 0===i?void 0:i.name)||"unknown",isTransforming:!0}});window.dispatchEvent(s)}},this.transformControls&&(this.eventHandlers.transformStart&&this.transformControls.removeEventListener("mouseDown",this.eventHandlers.transformStart),this.eventHandlers.transformEnd&&this.transformControls.removeEventListener("mouseUp",this.eventHandlers.transformEnd),this.eventHandlers.transforming&&this.transformControls.removeEventListener("objectChange",this.eventHandlers.transforming),this.transformControls.addEventListener("mouseDown",this.eventHandlers.transformStart),this.transformControls.addEventListener("mouseUp",this.eventHandlers.transformEnd),this.transformControls.addEventListener("objectChange",this.eventHandlers.transforming))}},{key:"setupKeyboardControls",value:function(){var t=this;this.eventHandlers.keydown=function(i){if(t.transformControls.enabled&&!t.transformState.isTransforming&&(!i.ctrlKey||"KeyZ"!==i.code))switch(i.code){case"KeyG":t.setMode("translate");break;case"KeyR":t.setMode("rotate");break;case"KeyS":t.setMode("scale");break;case"KeyW":t.setSpace("world");break;case"KeyL":t.setSpace("local");break;case"Escape":t.deselectObject();break;case"KeyX":t.setAxisConstraint("X");break;case"KeyY":t.setAxisConstraint("Y");break;case"KeyZ":i.ctrlKey||t.setAxisConstraint("Z");break;case"ShiftLeft":case"ShiftRight":t.clearAxisConstraint();break;case"Backspace":t.handleObjectRemoval()}},window.addEventListener("keydown",this.eventHandlers.keydown)}},{key:"setupObjectSelection",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s=new n.Raycaster,e=new n.Vector2;this.eventHandlers.click=function(n){if(!t.transformState.isTransforming){var h=Date.now(),o=h-t.clickTiming.lastClickTime;t.i(n,e),s.setFromCamera(e,t.camera);var a=t.h(s,i),l=a===t.clickTiming.lastClickedObject,r=o<t.clickTiming.doubleClickDelay;l&&r&&null!==a?(t.selectObject(a),t.clickTiming.lastClickTime=0,t.clickTiming.lastClickedObject=null):(t.deselectObject(),a&&t.selectObjectForTransformOnly(a),t.clickTiming.lastClickTime=h,t.clickTiming.lastClickedObject=a)}},this.renderer.domElement.addEventListener("click",this.eventHandlers.click)}},{key:"_calculateMousePosition",value:function(t,i){var s=this.renderer.domElement.getBoundingClientRect();i.x=(t.clientX-s.left)/s.width*2-1,i.y=-(t.clientY-s.top)/s.height*2+1}},{key:"_findTargetObject",value:function(t,i){if(this.config.useBoundingBoxSelection){var s=this.o(t,i);if(s)return s}return this.l(t,i)}},{key:"_findTargetViaBoundingBox",value:function(t,i){var s=this.intersectObjectsBoundingBoxes(t,i);if(s.length>0){var e=s[0].object;if(this.u(e))return e}return null}},{key:"_findTargetViaMesh",value:function(t,i){var s=t.intersectObjects(this.scene.children,!0);if(s.length>0){var e=s[0].object;if(e=this.v(e),(i?i(e):this.isSelectableObject(e))&&this.u(e)){this.config.useBoundingBoxSelection;return e}}return null}},{key:"_resolveHierarchyTarget",value:function(t){var i,s,e;return this.isConnectorOrb(t)?t:null!==(i=t.parent)&&void 0!==i&&null!==(i=i.name)&&void 0!==i&&i.includes(" Component")?t.parent:null!==(s=t.parent)&&void 0!==s&&null!==(s=s.parent)&&void 0!==s&&null!==(s=s.name)&&void 0!==s&&s.includes(" Component")?t.parent.parent:(null!==(e=t.userData)&&void 0!==e&&e.isPipeSegment,t)}},{key:"_isValidSelectableObject",value:function(t){return!(!t||!t.parent)&&!!(t.position&&t.rotation&&t.scale&&t.updateMatrixWorld)}},{key:"isConnectorOrb",value:function(t){if(!t||!t.isObject3D)return!1;if(!t.isMesh||!t.geometry)return!1;var i="CONNECTOR-GEO"===t.geometry.uuid,s="SphereGeometry"===t.geometry.type&&t.geometry.parameters&&.2===t.geometry.parameters.radius,e=t.name&&t.name.toLowerCase().includes("connector");return(i||s)&&e}},{key:"isSelectableObject",value:function(t){var i,s,e,n,h,o,a,l;if(!t||!t.isObject3D)return!1;if(t.userData&&t.userData.isPipeSegment,t.isTransformControls||t.isTransformControlsPlane||t.isTransformControlsGizmo)return!1;var r=t.isHelper||(null===(i=t.userData)||void 0===i?void 0:i.isHelper)||(null===(s=t.userData)||void 0===s?void 0:s.isBoundingBox),u=null===(e=t.userData)||void 0===e?void 0:e.isBaseGround,c=null===(n=t.userData)||void 0===n?void 0:n.isBrickWall;if(r||u||c||!t.visible)return!1;if(t.name&&t.name.toLowerCase().includes("polyline")&&(null===(h=t.userData)||void 0===h||!h.isPipeSegment)&&(null===(o=t.userData)||void 0===o||!o.isPipeJunction))return!1;var v=!0===(null===(a=t.userData)||void 0===a?void 0:a.isPipeSegment),f=!0===(null===(l=t.userData)||void 0===l?void 0:l.isPipeJunction),d=t.name&&t.name.includes(" Component"),y=this.isConnectorOrb(t);return d||y||v||f}},{key:"selectObject",value:function(t){if(!t||!t.isObject3D)return!1;this.selectedObject=t,t.updateMatrixWorld(!0);var i=(new n.Box3).setFromObject(t);return this.boundingBoxCache.set(t,i),this.transformControls.attach(t),this.transformControls.updateInteractionTime&&this.transformControls.updateInteractionTime(),this.createBoundingBox(t),this.forceInvisible?(this.transformControls.enabled=!1,this.t()):(this.transformControls.enabled=this.config.enabled,this.k()),this.callbacks.onObjectSelect&&this.callbacks.onObjectSelect(t),!0}},{key:"selectObjectForTransformOnly",value:function(t){if(!t||!t.isObject3D)return!1;this.selectedObject=t,t.updateMatrixWorld(!0);var i=(new n.Box3).setFromObject(t);return this.boundingBoxCache.set(t,i),this.transformControls.attach(t),this.transformControls.updateInteractionTime&&this.transformControls.updateInteractionTime(),this.createBoundingBox(t),this.forceInvisible?(this.transformControls.enabled=!1,this.t()):(this.transformControls.enabled=!0,this.k()),!0}},{key:"deselectObject",value:function(){this.selectedObject,this.removeBoundingBox(),this.selectedObject=null,this.transformControls&&(this.transformControls.detach(),this.transformControls.enabled=!1,this.t()),this.callbacks.onObjectSelect&&this.callbacks.onObjectSelect(null)}},{key:"createBoundingBox",value:function(t){if(this.config.showBoundingBox&&(this.removeBoundingBox(),t))try{this.boundingBoxHelper=new n.BoxHelper(t,this.config.boundingBoxColor),this.boundingBoxHelper.isHelper=!0,this.boundingBoxHelper.userData={isBoundingBox:!0},this.scene.add(this.boundingBoxHelper)}catch(t){}}},{key:"removeBoundingBox",value:function(){if(this.boundingBoxHelper)try{this.boundingBoxHelper.parent&&this.boundingBoxHelper.parent.remove(this.boundingBoxHelper),this.boundingBoxHelper.geometry&&this.boundingBoxHelper.geometry.dispose(),this.boundingBoxHelper.material&&this.boundingBoxHelper.material.dispose()}catch(t){}finally{this.boundingBoxHelper=null}}},{key:"updateBoundingBox",value:function(){if(this.boundingBoxHelper&&this.selectedObject)try{if(this.selectedObject.updateMatrixWorld(!0),this.boundingBoxHelper.update(),this.boundingBoxCache.has(this.selectedObject)){var t=(new n.Box3).setFromObject(this.selectedObject);this.boundingBoxCache.set(this.selectedObject,t)}}catch(t){this.createBoundingBox(this.selectedObject)}}},{key:"setBoundingBoxVisibility",value:function(t){this.config.showBoundingBox=t,t&&this.selectedObject&&!this.boundingBoxHelper?this.createBoundingBox(this.selectedObject):!t&&this.boundingBoxHelper&&this.removeBoundingBox()}},{key:"setBoundingBoxColor",value:function(t){this.config.boundingBoxColor=t,this.boundingBoxHelper&&this.boundingBoxHelper.material&&this.boundingBoxHelper.material.color.setHex(t)}},{key:"setMode",value:function(t){if(["translate","rotate","scale"].includes(t)){var i=this.currentMode;this.currentMode=t,this.transformControls.setMode(t),this.callbacks.onModeChange&&this.callbacks.onModeChange(t,i)}}},{key:"setSpace",value:function(t){if(["world","local"].includes(t)){this.currentSpace;this.currentSpace=t,this.transformControls.setSpace(t)}}},{key:"setAxisConstraint",value:function(t){["X","Y","Z"].includes(t)&&(this.transformControls.showX=!1,this.transformControls.showY=!1,this.transformControls.showZ=!1,this.transformControls["show".concat(t)]=!0)}},{key:"clearAxisConstraint",value:function(){this.transformControls.showX=this.config.showX,this.transformControls.showY=this.config.showY,this.transformControls.showZ=this.config.showZ}},{key:"setSnap",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};void 0!==t.translation&&(this.config.translationSnap=t.translation,this.transformControls.setTranslationSnap(t.translation)),void 0!==t.rotation&&(this.config.rotationSnap=t.rotation,this.transformControls.setRotationSnap(t.rotation)),void 0!==t.scale&&(this.config.scaleSnap=t.scale,this.transformControls.setScaleSnap(t.scale))}},{key:"snapValues",get:function(){return{translation:this.config.translationSnap||.5,rotation:this.config.rotationSnap||Math.PI/2,scale:this.config.scaleSnap||.1}}},{key:"setSize",value:function(t){this.config.size=t,this.transformControls.setSize(t)}},{key:"setEnabled",value:function(t){this.config.enabled=t,this.selectedObject&&(this.transformControls.enabled=t)}},{key:"setShowPlanes",value:function(t){return!!this.transformControls&&(this.transformControls.showXY=t,this.transformControls.showYZ=t,this.transformControls.showXZ=t,!0)}},{key:"ensureSceneAttachment",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!this.transformControls&&this.scene&&this.camera&&this.renderer?(this.createTransformControls(),this.setupEventListeners(),t||(this.transformControls.visible=!1),!0):!(!this.transformControls||!this.scene)&&(this.scene.children.includes(this.transformControls)?!this.transformControls.visible&&t?(this.transformControls.visible=!0,!0):this.transformControls.visible&&!t?(this.transformControls.visible=!1,!0):!(!this.transformControls.parent||this.transformControls.parent===this.scene)&&(this.transformControls.parent.remove(this.transformControls),this.scene.add(this.transformControls),!0):(this.scene.add(this.transformControls),this.transformControls.enabled=!1,this.selectedObject&&(this.transformControls.attach(this.selectedObject),this.transformControls.enabled=this.config.enabled),t||(this.transformControls.visible=!1),!0))}},{key:"getTransformData",value:function(){if(!this.selectedObject)return null;var t={position:this.selectedObject.position.clone(),rotation:this.selectedObject.rotation.clone(),scale:this.selectedObject.scale.clone()},i=this.getWorldTransformData();return{object:this.selectedObject,position:t.position,rotation:t.rotation,scale:t.scale,worldPosition:i.position,worldRotation:i.rotation,worldScale:i.scale,mode:this.currentMode,space:this.currentSpace,isTransforming:this.transformState.isTransforming}}},{key:"getWorldTransformData",value:function(){if(!this.selectedObject)return null;this.selectedObject.updateMatrixWorld(!0);var t=new n.Vector3;this.selectedObject.getWorldPosition(t);var i=new n.Quaternion;this.selectedObject.getWorldQuaternion(i);var s=new n.Euler;s.setFromQuaternion(i);var e=new n.Vector3;return this.selectedObject.getWorldScale(e),{position:t,rotation:s,scale:e}}},{key:"updateObjectTransform",value:function(t,i,s){var e=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(this.selectedObject){var n=this.selectedObject,h=parseFloat(s);if(!isNaN(h)){if(e)this.updateWorldTransform(n,t,i,h);else switch(t){case"position":n.position[i]=h;break;case"rotation":n.rotation[i]=h*(Math.PI/180);break;case"scale":n.scale[i]=h;break;default:return}this.transformControls&&this.transformControls.updateMatrixWorld(),this.updateBoundingBox()}}}},{key:"updateWorldTransform",value:function(t,i,s,e){switch(t.updateMatrixWorld(!0),i){case"position":this.setWorldPosition(t,s,e);break;case"rotation":this.setWorldRotation(t,s,e);break;case"scale":this.setWorldScale(t,s,e)}}},{key:"setWorldPosition",value:function(t,i,s){var e=new n.Vector3;if(t.getWorldPosition(e),e[i]=s,t.parent){var h=new n.Matrix4;h.copy(t.parent.matrixWorld).invert(),e.applyMatrix4(h)}t.position.copy(e)}},{key:"setWorldRotation",value:function(t,i,s){var e=new n.Quaternion;t.getWorldQuaternion(e);var h=new n.Euler;h.setFromQuaternion(e),h[i]=s*(Math.PI/180);var o=new n.Quaternion;if(o.setFromEuler(h),t.parent){var a=new n.Quaternion;t.parent.getWorldQuaternion(a),a.invert(),o.premultiply(a)}t.quaternion.copy(o)}},{key:"setWorldScale",value:function(t,i,s){var e=new n.Vector3;t.getWorldScale(e);var h=s/e[i];t.scale[i]*=h}},{key:"getSelectableObjectsWithBounds",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s=[];return this.scene.traverse(function(e){var h,o;if(e&&e.isObject3D&&!(e.isTransformControls||e.isTransformControlsPlane||e.isTransformControlsGizmo||e.isHelper||null!==(h=e.userData)&&void 0!==h&&h.isHelper||null!==(o=e.userData)&&void 0!==o&&o.isBoundingBox))try{if(i?i(e):t.isSelectableObject(e)){e.updateMatrixWorld(!0);var a=t.boundingBoxCache.get(e);a&&e!==t.selectedObject||(a=(new n.Box3).setFromObject(e),t.boundingBoxCache.set(e,a)),s.push({object:e,boundingBox:a})}}catch(t){}}),s}},{key:"intersectObjectsBoundingBoxes",value:function(t){var s,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,h=this.getSelectableObjectsWithBounds(e),o=[],a=i(h);try{for(a.s();!(s=a.n()).done;){var l=s.value,r=l.object,u=l.boundingBox,c=t.ray.intersectBox(u,new n.Vector3);if(c){var v=t.ray.origin.distanceTo(c);o.push({object:r,point:c,distance:v,boundingBox:u})}}}catch(t){a.e(t)}finally{a.f()}return o.sort(function(t,i){return t.distance-i.distance}),o}},{key:"setBoundingBoxSelection",value:function(t){this.config.useBoundingBoxSelection=t}},{key:"handleObjectRemoval",value:function(){var t;this.selectedObject&&"gateway"===(null===(t=this.selectedObject.userData)||void 0===t?void 0:t.componentType)&&this.handleGatewayRemoval()}},{key:"handleGatewayRemoval",value:function(){var t,i=this.selectedObject,e={uuid:i.uuid,userData:s({},i.userData),position:i.position.clone(),connections:(null===(t=i.userData)||void 0===t?void 0:t.connections)||null};i.userData.origin="computed",this.deselectObject(),this.callbacks.onObjectRemoved&&this.callbacks.onObjectRemoved(e)}},{key:"dispose",value:function(){this.eventHandlers.keydown&&window.removeEventListener("keydown",this.eventHandlers.keydown),this.eventHandlers.click&&this.renderer.domElement.removeEventListener("click",this.eventHandlers.click),this.removeBoundingBox(),this.selectedObject&&this.deselectObject(),this.transformControls&&(this.eventHandlers.transformStart&&this.transformControls.removeEventListener("mouseDown",this.eventHandlers.transformStart),this.eventHandlers.transformEnd&&this.transformControls.removeEventListener("mouseUp",this.eventHandlers.transformEnd),this.eventHandlers.transforming&&this.transformControls.removeEventListener("objectChange",this.eventHandlers.transforming),this.transformControls.detach(),this.scene&&this.transformControls.parent===this.scene&&this.scene.remove(this.transformControls),this.transformControls.dispose(),this.transformControls=null),this.selectedObject=null,this.orbitControls=null}},{key:"forceHide",value:function(){this.transformControls&&(this.t(),this.transformControls.enabled=!1)}},{key:"_hideTransformControls",value:function(){this.transformControls&&(this.transformControls.visible=!1,this.transformControls.m&&(this.transformControls.m.visible=!1),this.transformControls.p&&(this.transformControls.p.visible=!1))}},{key:"_showTransformControls",value:function(){this.transformControls&&(this.transformControls.visible=!0,this.transformControls.m&&(this.transformControls.m.visible=!0),this.transformControls.p&&(this.transformControls.p.visible=!0))}},{key:"getVisibilityState",value:function(){var t;return this.transformControls?{exists:!0,visible:this.transformControls.visible,enabled:this.transformControls.enabled,gizmoVisible:this.transformControls.m?this.transformControls.m.visible:"N/A",planeVisible:this.transformControls.p?this.transformControls.p.visible:"N/A",hasSelectedObject:!!this.selectedObject,selectedObjectName:(null===(t=this.selectedObject)||void 0===t?void 0:t.name)||"none"}:{exists:!1}}},{key:"_forceHideAllGizmoComponents",value:function(){if(this.transformControls&&this.transformControls.m){var t=this.transformControls.m;t.visible=!1,t.gizmo&&Object.keys(t.gizmo).forEach(function(i){t.gizmo[i]&&(t.gizmo[i].visible=!1)}),t.helper&&Object.keys(t.helper).forEach(function(i){t.helper[i]&&(t.helper[i].visible=!1)}),this.transformControls.p&&(this.transformControls.p.visible=!1)}}},{key:"_hidePlaneHelpers",value:function(){if(this.transformControls&&this.transformControls.m){var t=this.transformControls.m;if(t.gizmo&&t.gizmo.translate)t.gizmo.translate.traverse(function(t){"XY"!==t.name&&"YZ"!==t.name&&"XZ"!==t.name||(t.visible=!1)});if(t.picker&&t.picker.translate)t.picker.translate.traverse(function(t){"XY"!==t.name&&"YZ"!==t.name&&"XZ"!==t.name||(t.visible=!1)})}}},{key:"_showPlaneHelpers",value:function(){if(this.transformControls&&this.transformControls.m){var t=this.transformControls.m;if(t.gizmo&&t.gizmo.translate)t.gizmo.translate.traverse(function(t){"XY"!==t.name&&"YZ"!==t.name&&"XZ"!==t.name||(t.visible=!0)});if(t.picker&&t.picker.translate)t.picker.translate.traverse(function(t){"XY"!==t.name&&"YZ"!==t.name&&"XZ"!==t.name||(t.visible=!0)})}}}])}();function a(t,i,s){return new o(t,i,s,arguments.length>3&&void 0!==arguments[3]?arguments[3]:null)}export{o as TransformControlsManager,a as createTransformControls};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,classCallCheck as r,asyncToGenerator as n,regenerator as t,regeneratorValues as a,createForOfIteratorHelper as o}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as i from"three";import{RGBELoader as s}from"../../../node_modules/three/examples/jsm/loaders/RGBELoader.js";import{loadTextureSetAndCreateMaterial as u}from"./textureConfig.js";import{logger as c}from"../../core/debugLogger.js";var l=function(){return e(function e(n){r(this,e),this.sceneViewer=n},[{key:"createSkybox",value:(y=n(t().m(function e(){var r,n,u,c,l,f,d,v,h,k;return t().w(function(e){for(;;)switch(e.n){case 0:r=this.sceneViewer,(n=new i.PMREMGenerator(r.renderer)).compileEquirectangularShader(),u=[{type:"hdr",loader:new s,paths:["/skyboxes/kloofendal_48d_partly_cloudy_puresky_2k.hdr","/skyboxes/kloofendal_48d_partly_cloudy_puresky_1k.hdr"]},{type:"jpeg",loader:r.textureLoader,paths:["/skyboxes/sky_fallback.jpg"]}],c=function(e,t){try{var a,o;e.mapping=i.EquirectangularReflectionMapping;var s=n.fromEquirectangular(e).texture;return null!==(a=r.scene.environment)&&void 0!==a&&a.dispose&&r.scene.environment.dispose(),null!==(o=r.scene.background)&&void 0!==o&&o.dispose&&r.scene.background.dispose(),r.scene.environment=s,r.scene.background=s,e.dispose(),!0}catch(e){return!1}},l=t().m(function e(){var r,i,s,u,l,f,h,k;return t().w(function(e){for(;;)switch(e.n){case 0:(r=v[d]).type,i=r.loader,s=r.paths,u=o(s),e.p=1,f=t().m(function e(){var r,a;return t().w(function(e){for(;;)switch(e.n){case 0:return r=l.value,e.p=1,e.n=2,new Promise(function(e,n){var t=setTimeout(function(){return n(new Error("Timeout"))},1e4);i.load(r,function(r){clearTimeout(t),e(r)},void 0,function(e){clearTimeout(t),n(e)})});case 2:if(a=e.v,!c(a)){e.n=3;break}return n.dispose(),e.a(2,{v:{v:void 0}});case 3:e.n=5;break;case 4:e.p=4,e.v;case 5:return e.a(2)}},e,null,[[1,4]])}),u.s();case 2:if((l=u.n()).done){e.n=5;break}return e.d(a(f()),3);case 3:if(!(h=e.v)){e.n=4;break}return e.a(2,h.v);case 4:e.n=2;break;case 5:e.n=7;break;case 6:e.p=6,k=e.v,u.e(k);case 7:return e.p=7,u.f(),e.f(7);case 8:return e.a(2)}},e,null,[[1,6,7,8]])}),d=0,v=u;case 1:if(!(d<v.length)){e.n=4;break}return e.d(a(l()),2);case 2:if(!(f=e.v)){e.n=3;break}return e.a(2,f.v);case 3:d++,e.n=1;break;case 4:h=new i.AmbientLight(16777215,.6),r.scene.add(h),(k=new i.Scene).add(new i.HemisphereLight(8900331,4473975,1)),r.scene.environment=n.fromScene(k).texture,r.scene.background=new i.Color(8900331),n.dispose();case 5:return e.a(2)}},e,this)})),function(){return y.apply(this,arguments)})},{key:"setupLighting",value:function(){var e=this.sceneViewer;e.scene.children=e.scene.children.filter(function(e){return!(e instanceof i.Light)});var r=new i.DirectionalLight(16777195,5);r.position.set(15,30,-10),r.castShadow=!0,r.shadow.camera.near=.1,r.shadow.camera.far=100,r.shadow.camera.left=-50,r.shadow.camera.right=50,r.shadow.camera.top=50,r.shadow.camera.bottom=-50,r.shadow.mapSize.width=2048,r.shadow.mapSize.height=2048,e.scene.add(r);var n=new i.DirectionalLight(16777164,.4);n.position.set(-10,10,-10),e.scene.add(n),c.info("Scene lighting setup completed")}},{key:"addTexturedGround",value:(k=n(t().m(function e(){var r,n,a,o,s,l;return t().w(function(e){for(;;)switch(e.n){case 0:return r=this.sceneViewer,c.debug("Starting addTexturedGround..."),n=new i.PlaneGeometry(30,30),a=new i.MeshStandardMaterial({color:7829367,metalness:.2,roughness:.9}),(o=new i.Mesh(n,a)).rotation.x=-Math.PI/2,o.position.y=0,o.receiveShadow=!0,o.name="Ground",o.userData.isBaseGround=!0,r.scene.add(o),e.p=1,c.debug("Loading concrete texture set..."),e.n=2,u("gravel_embedded_concrete",r.textureLoader);case 2:s=e.v,o.material=s,o.material.needsUpdate=!0,c.success("Ground material updated with textures"),e.n=4;break;case 3:e.p=3,l=e.v,c.warn("Error loading ground textures:",l);case 4:return e.a(2)}},e,this,[[1,3]])})),function(){return k.apply(this,arguments)})},{key:"addBrickWalls",value:(h=n(t().m(function e(){var r,n,a,o,s,l,f;return t().w(function(e){for(;;)switch(e.n){case 0:return r=this.sceneViewer,c.debug("Starting addBrickWalls..."),n=2.5,a=.5,o=new i.MeshPhysicalMaterial({color:7824226,roughness:.9,metalness:.1,clearcoat:.05,clearcoatRoughness:.4}),s=function(e){var t=function(n,t,a,o,s,u){var c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:1,f=new i.BoxGeometry(n,t,a);if(1!==l){for(var d=f.attributes.uv,v=d.array,h=0;h<v.length;h+=2)v[h+1]*=l;d.needsUpdate=!0}var k=new i.Mesh(f,e);return k.position.set(o,s-.56,u),0!==c&&k.rotateY(c),k.userData.isBrickWall=!0,k.castShadow=!0,k.receiveShadow=!0,k.name="Wall",r.scene.add(k),k};t(30,n,a,0,1.25,14.75,0,1),t(30,n,a,0,1.25,-14.75,0,1),t(a,8.5,29,14.75,4.25,0,0,3.4),t(a,n,29,-14.75,1.25,0,0,1)},s(o),c.debug("Basic brick walls created"),e.p=1,c.debug("Loading brick texture set..."),e.n=2,u("brick",r.textureLoader);case 2:l=e.v,r.scene.traverse(function(e){e.isMesh&&e.userData.isBrickWall&&(e.material=l,e.material.needsUpdate=!0)}),c.success("Brick walls updated with textures"),e.n=4;break;case 3:e.p=3,f=e.v,c.warn("Error loading brick textures:",f);case 4:return e.a(2)}},e,this,[[1,3]])})),function(){return h.apply(this,arguments)})},{key:"addHorizonFog",value:function(){var e=this.sceneViewer,r=new i.ShaderMaterial({transparent:!0,uniforms:{fogColor:{value:new i.Color(5533306)},fogDensity:{value:1}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform vec3 fogColor;\n uniform float fogDensity;\n varying vec2 vUv;\n \n void main() {\n vec2 center = vec2(0.5, 0.5);\n float dist = distance(vUv, center);\n float opacity = (1.0 - smoothstep(0.0, 0.5, dist)) * fogDensity;\n gl_FragColor = vec4(fogColor, opacity);\n }\n ",side:i.DoubleSide}),n=new i.PlaneGeometry(300,300),t=new i.Mesh(n,r);return t.rotation.x=-Math.PI/2,t.position.y=-3,t.name="fogPlane",e.scene.add(t),t}},{key:"initializeEnvironment",value:(v=n(t().m(function e(){return t().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,this.createSkybox();case 1:return this.setupLighting(),e.n=2,this.addTexturedGround();case 2:return e.n=3,this.addBrickWalls();case 3:this.addHorizonFog(),c.info("Environment initialization completed");case 4:return e.a(2)}},e,this)})),function(){return v.apply(this,arguments)})},{key:"removeSkybox",value:function(){var e=this.sceneViewer;try{var r,n;return null!==(r=e.scene.environment)&&void 0!==r&&r.dispose&&e.scene.environment.dispose(),null!==(n=e.scene.background)&&void 0!==n&&n.dispose&&e.scene.background.dispose(),e.scene.environment=null,e.scene.background=new i.Color(16777215),c.info("Skybox removed successfully"),!0}catch(e){return!1}}},{key:"setSkyboxType",value:(d=n(t().m(function e(r){var n,a,o,s,u;return t().w(function(e){for(;;)switch(e.n){case 0:n=this.sceneViewer,e.p=1,null!==(a=n.scene.environment)&&void 0!==a&&a.dispose&&n.scene.environment.dispose(),null!==(o=n.scene.background)&&void 0!==o&&o.dispose&&n.scene.background.dispose(),(s=new i.PMREMGenerator(n.renderer)).compileEquirectangularShader(),u=r,e.n="HDR"===u?2:"Fallback"===u?4:"Color"===u?6:7;break;case 2:return e.n=3,this.loadHDRSkybox(s);case 3:case 5:return e.a(3,8);case 4:return e.n=5,this.loadFallbackSkybox(s);case 6:return this.setColorBackground(),e.a(3,8);case 7:return e.n=8,this.loadHDRSkybox(s);case 8:return s.dispose(),c.info("Skybox type changed to: ".concat(r)),e.a(2,!0);case 9:return e.p=9,e.v,e.a(2,!1)}},e,this,[[1,9]])})),function(e){return d.apply(this,arguments)})},{key:"loadHDRSkybox",value:(f=n(t().m(function e(r){var n,o,u,c,l,f,d;return t().w(function(e){for(;;)switch(e.n){case 0:n=this.sceneViewer,o=new s,u=["/skyboxes/kloofendal_48d_partly_cloudy_puresky_2k.hdr","/skyboxes/kloofendal_48d_partly_cloudy_puresky_1k.hdr"],c=t().m(function e(){var a,s,u;return t().w(function(e){for(;;)switch(e.n){case 0:return a=d[f],e.p=1,e.n=2,new Promise(function(e,r){var n=setTimeout(function(){return r(new Error("Timeout"))},1e4);o.load(a,function(r){clearTimeout(n),e(r)},void 0,function(e){clearTimeout(n),r(e)})});case 2:return(s=e.v).mapping=i.EquirectangularReflectionMapping,u=r.fromEquirectangular(s).texture,n.scene.environment=u,n.scene.background=u,s.dispose(),e.a(2,{v:void 0});case 3:e.p=3,e.v;case 4:return e.a(2)}},e,null,[[1,3]])}),f=0,d=u;case 1:if(!(f<d.length)){e.n=4;break}return e.d(a(c()),2);case 2:if(!(l=e.v)){e.n=3;break}return e.a(2,l.v);case 3:f++,e.n=1;break;case 4:throw new Error("Failed to load any HDR skybox");case 5:return e.a(2)}},e,this)})),function(e){return f.apply(this,arguments)})},{key:"loadFallbackSkybox",value:(l=n(t().m(function e(r){var n,a,o;return t().w(function(e){for(;;)switch(e.n){case 0:return n=this.sceneViewer,e.p=1,e.n=2,new Promise(function(e,r){var t=setTimeout(function(){return r(new Error("Timeout"))},1e4);n.textureLoader.load("/skyboxes/sky_fallback.jpg",function(r){clearTimeout(t),e(r)},void 0,function(e){clearTimeout(t),r(e)})});case 2:(a=e.v).mapping=i.EquirectangularReflectionMapping,o=r.fromEquirectangular(a).texture,n.scene.environment=o,n.scene.background=o,a.dispose(),e.n=4;break;case 3:throw e.p=3,e.v;case 4:return e.a(2)}},e,this,[[1,3]])})),function(e){return l.apply(this,arguments)})},{key:"setColorBackground",value:function(){var e=this.sceneViewer;e.scene.environment=null,e.scene.background=new i.Color(16777215);var r=new i.AmbientLight(16777215,.6);e.scene.add(r)}}]);var l,f,d,v,h,k,y}();export{l as EnvironmentManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{asyncToGenerator as e,regenerator as r,objectSpread2 as t,construct as n,toConsumableArray as o,slicedToArray as a}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as s from"three";var u={light_metal:{path:"/textures/gravel_embedded_concrete_1k",files:{diffuse:"diffuse.jpg",normal:"normal.jpg",roughness:"rough.jpg"},repeat:{x:2,y:2},materialProps:{color:12105912,metalness:.3,roughness:.3,normalScale:[.4,.4],clearcoat:.3,clearcoatRoughness:.2,envMapIntensity:1.6,reflectivity:.5}},brick:{path:"/textures/pavement_03_1k",files:{diffuse:"diffuse.jpg",normal:"normal.jpg",roughness:"rough.jpg"},repeat:{x:7.5,y:.75},materialProps:{color:10061960,roughness:.9,metalness:.1,normalScale:[1.5,1.5],bumpScale:.05,clearcoat:.05,clearcoatRoughness:.4}},gravel_embedded_concrete:{path:"/textures/gravel_embedded_concrete_1k",files:{diffuse:"diffuse.jpg",normal:"normal.jpg",roughness:"rough.jpg"},repeat:{x:7,y:7},materialProps:{color:6710886,metalness:0,roughness:1,normalScale:[1,1]}}};function c(e,r){return i.apply(this,arguments)}function i(){return i=e(r().m(function t(n,o){var c,i,l,f,m;return r().w(function(t){for(;;)switch(t.n){case 0:if(c=u[n]){t.n=1;break}throw new Error('Texture set "'.concat(n,'" not found'));case 1:return i=function(e){return new Promise(function(r,t){o.load(e,function(e){r(e)},void 0,function(e){t(e)})})},l=Object.entries(c.files).map(function(){var t=e(r().m(function e(t){var n,o,s,u,l;return r().w(function(e){for(;;)switch(e.n){case 0:return n=a(t,2),o=n[0],s=n[1],u="".concat(c.path,"/").concat(s),e.n=1,i(u);case 1:return l=e.v,e.a(2,[o,l])}},e)}));return function(e){return t.apply(this,arguments)}}()),t.n=2,Promise.all(l);case 2:return f=t.v,m=Object.fromEntries(f),Object.values(m).forEach(function(e){e.wrapS=e.wrapT=s.RepeatWrapping,e.repeat.set(c.repeat.x,c.repeat.y)}),t.a(2,{textures:m,config:c})}},t)})),i.apply(this,arguments)}function l(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=e.textures,u=e.config,c=t(t({map:a.diffuse,normalMap:a.normal,roughnessMap:a.roughness},u.materialProps),r);return c.normalScale&&Array.isArray(c.normalScale)&&(c.normalScale=n(s.Vector2,o(c.normalScale))),new s.MeshPhysicalMaterial(c)}function f(e,r){return m.apply(this,arguments)}function m(){return m=e(r().m(function e(t,n){var o,a,s=arguments;return r().w(function(e){for(;;)switch(e.n){case 0:return o=s.length>2&&void 0!==s[2]?s[2]:{},e.n=1,c(t,n);case 1:return a=e.v,e.a(2,l(a,o))}},e)})),m.apply(this,arguments)}export{u as TEXTURE_SETS,l as createMaterialFromTextureSet,c as loadTextureSet,f as loadTextureSetAndCreateMaterial};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as n,classCallCheck as e,toConsumableArray as t}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{getHardcodedUuid as r}from"../../core/nameUtils.js";var o=function(){return n(function n(t){e(this,n),this.sceneViewer=t},[{key:"exportSceneData",value:function(){var n=this;if(!this.sceneViewer.scene)return null;var e=function(n){var t,o,l,a,i,u,s,c,v=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!n||null!==(t=n.name)&&void 0!==t&&t.includes("Polyline")||null!==(o=n.userData)&&void 0!==o&&o.isBrickWall||null!==(l=n.userData)&&void 0!==l&&l.isBaseGround||null!==(a=n.userData)&&void 0!==a&&a.isBaseGrid||n.isLight||null!==(i=n.userData)&&void 0!==i&&i.isTransformControls||n.isTransformControls||n.type&&n.type.includes("TransformControls"))return null;if(!(v||null!==(u=n.userData)&&void 0!==u&&u.componentType))return null;if(v&&(null===(s=n.userData)||void 0===s||!s.forExport))return null;if(v&&null!==(c=n.userData)&&void 0!==c&&c.forExport);var d,p,f,h={uuid:r(n),name:n.name||"Unnamed Object",type:n.type||"Object3D"};(n.userData&&Object.keys(n.userData).length>0&&(h.userData={},Object.keys(n.userData).forEach(function(e){"worldBoundingBox"!==e&&"isBaseGround"!==e&&"isBrickWall"!==e&&"isBaseGrid"!==e&&"isTransformControls"!==e&&(h.userData[e]=n.userData[e])}),n.userData.dimensions&&(h.userData.dimensions=n.userData.dimensions),0===Object.keys(h.userData).length&&delete h.userData),h.position={x:parseFloat(n.position.x.toFixed(6)),y:parseFloat(n.position.y.toFixed(6)),z:parseFloat(n.position.z.toFixed(6))},h.rotation={x:parseFloat((n.rotation.x*(180/Math.PI)).toFixed(6)),y:parseFloat((n.rotation.y*(180/Math.PI)).toFixed(6)),z:parseFloat((n.rotation.z*(180/Math.PI)).toFixed(6))},h.scale={x:parseFloat(n.scale.x.toFixed(6)),y:parseFloat(n.scale.y.toFixed(6)),z:parseFloat(n.scale.z.toFixed(6))},n.geometry)&&(null!==(d=n.name)&&void 0!==d&&d.toLowerCase().includes("connector")?h.geometry="CONNECTOR-GEO":null!==(p=n.name)&&void 0!==p&&p.toLowerCase().includes("gateway")?h.geometry="GATEWAY-GEO":null!==(f=n.userData)&&void 0!==f&&f.libraryId&&(h.geometry="".concat(n.userData.libraryId,"-GEO")));if(n.children&&n.children.length>0){var m=[];n.children.forEach(function(n){var t=e(n,!0);t&&m.push(t)}),m.length>0&&(h.children=m)}return h},o=[];this.sceneViewer.scene.children.forEach(function(n){var t=e(n);t&&o.push(t)});var l,a,i={connections:(a=[],null!==(l=n.sceneViewer.currentSceneData)&&void 0!==l&&l.connections&&a.push.apply(a,t(n.sceneViewer.currentSceneData.connections)),a),scene:{object:{uuid:"PLANT-SCENE",name:"Scene",type:"Scene",children:o}}};return i.t={exportedAt:(new Date).toISOString(),exportedFrom:"SceneViewerEnhanced",version:"1.0.0",objectCount:o.length},i}},{key:"downloadSceneExport",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.exportSceneData();if(!e)return!1;n||(n="cp-export.json");try{var t=JSON.stringify(e,null,2),r=new Blob([t],{type:"application/json"}),o=URL.createObjectURL(r),l=document.createElement("a");return l.href=o,l.download=n,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(o),!0}catch(n){return!1}}},{key:"exportSceneDataAsString",value:function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=this.exportSceneData();return e?n?JSON.stringify(e,null,2):JSON.stringify(e):null}},{key:"getExportMetadata",value:function(){var n;if(!this.sceneViewer.scene)return null;var e=0;return this.sceneViewer.scene.traverse(function(){return e++}),{totalObjects:e,hasCurrentSceneData:!!this.sceneViewer.currentSceneData,connectionsCount:(null===(n=this.sceneViewer.currentSceneData)||void 0===n||null===(n=n.connections)||void 0===n?void 0:n.length)||0,exportTimestamp:(new Date).toISOString()}}}])}();export{o as SceneExportManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as e,asyncToGenerator as n,regenerator as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as o from"three";import{OrbitControls as r}from"../../../node_modules/three/examples/jsm/controls/OrbitControls.js";import{GLTFLoader as s}from"../../../node_modules/three/examples/jsm/loaders/GLTFLoader.js";import{PerformanceMonitor as a,PerformanceUI as u}from"../system/performanceMonitor.js";import{logger as c}from"../../core/debugLogger.js";var l=function(){return t(function t(n){e(this,t),this.sceneViewer=n,this.textureLoader=null,this.gltfLoader=null},[{key:"initializeScene",value:(h=n(i().m(function t(){var e,n,r,s;return i().w(function(t){for(;;)switch(t.n){case 0:(e=this.sceneViewer).scene=new o.Scene,n=e.$refs.container.getBoundingClientRect(),r=n.width,s=n.height,e.camera=new o.PerspectiveCamera(50,r/s,.01,1e3),e.camera.position.set(-8,4,9),e.renderer=new o.WebGLRenderer({antialias:!0}),e.renderer.setSize(r,s),e.renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),e.renderer.shadowMap.enabled=!0,e.renderer.shadowMap.type=o.PCFSoftShadowMap,e.renderer.physicallyCorrectLights=!0,e.renderer.outputColorSpace=o.SRGBColorSpace,e.renderer.toneMapping=o.LinearToneMapping,e.renderer.toneMappingExposure=1.5,e.$refs.container.appendChild(e.renderer.domElement),c.info("Scene, camera, and renderer initialized");case 1:return t.a(2)}},t,this)})),function(){return h.apply(this,arguments)})},{key:"initializePerformanceMonitoring",value:function(){var t=this.sceneViewer;if("development"===process.env.NODE_ENV)try{var e=document.querySelectorAll("#performance-monitor-ui");e.length>0&&e.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)})}catch(t){}t.performanceMonitor=new a(t.renderer),t.performanceUI=new u(t.performanceMonitor,t.$refs.container,"light"),t.performanceMonitor.on("warning",function(t){}),t.performanceMonitor.start(),t.performanceUI.show(),this.exposePerformanceMonitoringGlobally(),c.info("Performance monitoring initialized")}},{key:"exposePerformanceMonitoringGlobally",value:function(){var t=this,e=this.sceneViewer;"undefined"!=typeof window&&(window._performanceMonitor=e.performanceMonitor,window._performanceUI=e.performanceUI,window.performance3D={show:function(){return e.performanceUI.show()},hide:function(){return e.performanceUI.hide()},toggle:function(){return e.performanceUI.isVisible?e.performanceUI.hide():e.performanceUI.show()},setTheme:function(t){return e.performanceUI.setTheme(t)},log:function(){return e.performanceMonitor.logSummary()},reset:function(){return e.performanceMonitor.reset()},export:function(){return e.performanceMonitor.exportData()},cleanup:function(){return e.cleanupDuplicatePerformanceMonitors?e.cleanupDuplicatePerformanceMonitors():0},help:function(){}},window.cameraControls={autoRotate:{enable:function(){return t.toggleAutoRotation(!0)},disable:function(){return t.toggleAutoRotation(!1)},toggle:function(){return t.toggleAutoRotation()},setSpeed:function(t){if(e.controls)return e.controls.autoRotateSpeed=t,t}},help:function(){}})}},{key:"initializeLoaders",value:function(){var t=this.sceneViewer;this.textureLoader=new o.TextureLoader,t.textureLoader=this.textureLoader,this.gltfLoader=new s,t.gltfLoader=this.gltfLoader,c.info("Texture and GLTF loaders initialized")}},{key:"setupControls",value:function(){this.sceneViewer.controls=new r(this.sceneViewer.camera,this.sceneViewer.renderer.domElement),this.sceneViewer.controls.enableDamping=!0,this.sceneViewer.controls.dampingFactor=.05,this.sceneViewer.controls.minDistance=1,this.sceneViewer.controls.maxDistance=20,this.sceneViewer.controls.maxPolarAngle=Math.PI/1.5,this.sceneViewer.controls.autoRotate=!0,this.sceneViewer.controls.autoRotateSpeed=.5,c.info("Orbit controls initialized with auto-rotation")}},{key:"setDefaultBackground",value:function(){this.sceneViewer.scene.background=new o.Color(8965358),c.info("Default scene background set")}},{key:"initialize",value:(l=n(i().m(function t(){return i().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,this.initializeScene();case 1:this.initializePerformanceMonitoring(),this.initializeLoaders(),this.setupControls(),this.setDefaultBackground(),c.info("Scene initialization completed");case 2:return t.a(2)}},t,this)})),function(){return l.apply(this,arguments)})},{key:"toggleAutoRotation",value:function(t){var e=this.sceneViewer;return!!e.controls&&(e.controls.autoRotate=void 0!==t?t:!e.controls.autoRotate,e.controls.autoRotate&&(e.controls.dampingFactor=1,setTimeout(function(){e.controls.dampingFactor=.05},100)),c.info("Camera auto-rotation is now ".concat(e.controls.autoRotate?"ENABLED":"DISABLED")),e.controls.autoRotate)}}]);var l,h}();export{l as SceneInitializationManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as e,objectSpread2 as n,classCallCheck as r,createForOfIteratorHelper as t,asyncToGenerator as a,regenerator as i,toConsumableArray as o,slicedToArray as u}from"../../../_virtual/_rollupPluginBabelHelpers.js";import*as c from"three";import{loadTextureSet as s}from"../environment/textureConfig.js";import l from"../../rendering/modelPreloader.js";import{modelLogger as v}from"../../core/debugLogger.js";var f=function(){return e(function e(n){r(this,e),this.sceneViewer=n},[{key:"clearSceneObjects",value:function(){var e=this.sceneViewer;this.deselectObject();var n=null;e.transformManager&&e.transformManager.transformControls&&(e.transformManager.setEnabled(!1),e.transformManager.transformControls.visible=!1,n=e.transformManager.transformControls);var r=[];e.scene.traverse(function(t){var a,i,o,u,c;0;var s=t===n||(null===(a=t.userData)||void 0===a?void 0:a.isTransformControls)||t.isTransformControls||t.type&&t.type.includes("TransformControls");s&&0,t===e.scene||null!==(i=t.userData)&&void 0!==i&&i.isBrickWall||null!==(o=t.userData)&&void 0!==o&&o.isBaseGround||null!==(u=t.userData)&&void 0!==u&&u.isBaseGrid||s||t.isLight||"PlaneGeometry"===(null===(c=t.geometry)||void 0===c?void 0:c.type)||r.push(t)}),r.forEach(function(n){e.scene.remove(n),n.geometry&&n.geometry.dispose(),n.material&&(Array.isArray(n.material)?n.material.forEach(function(e){return e.dispose()}):n.material.dispose())}),e.selectedObjectForTransform=null,e.transformHistory&&(e.transformHistory=[]),e.transformManager&&e.transformManager.transformControls||e.initTransformControls(),this.ensureTransformControlsAttached(!1)}},{key:"ensureTransformControlsAttached",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=this.sceneViewer;if(n.transformManager){if(!n.transformManager.transformControls)return n.transformManager.createTransformControls(),void n.transformManager.setupEventListeners();n.transformManager.ensureSceneAttachment(e);!e&&n.transformManager.transformControls&&(n.transformManager.transformControls.visible=!1)}else n.initTransformControls()}},{key:"loadLibraryModel",value:(k=a(i().m(function e(n,r,t){var a,s,f,d,h,m,y,w,k,b,p,g,M,x,S,B;return i().w(function(e){for(;;)switch(e.n){case 0:if(a=this.sceneViewer,e.p=1,v.info("Loading library GLB model for ".concat(null===(s=r.userData)||void 0===s?void 0:s.libraryId,"...")),v.debug("Starting to load GLB model from /library/models/".concat(t.modelKey)),h=n.parent,m=n.position.clone(),y=n.quaternion.clone(),w=n.scale.clone(),k=n.name,b=n.uuid,p=[],n.children.forEach(function(e){var n=e.geometry&&("CONNECTOR-GEO"===e.geometry.uuid||"SphereGeometry"===e.geometry.type&&e.geometry.parameters),r=e.name&&e.name.toLowerCase().includes("connector");if(n&&r){if(e.userData||(e.userData={}),!e.userData.worldBoundingBox){var t=(new c.Box3).setFromObject(e);e.userData.worldBoundingBox={min:t.min.toArray(),max:t.max.toArray()}}var a=e.clone();if(e.userData){a.userData={},e.userData.worldBoundingBox&&(a.userData.worldBoundingBox={min:o(e.userData.worldBoundingBox.min),max:o(e.userData.worldBoundingBox.max)}),e.userData.direction&&(a.userData.direction=o(e.userData.direction));for(var i=0,s=Object.entries(e.userData);i<s.length;i++){var l=u(s[i],2),v=l[0],f=l[1];"worldBoundingBox"!==v&&"direction"!==v&&(a.userData[v]=f)}a.userData.originalUuid=e.uuid,void 0===a.userData.forExport&&(a.userData.forExport=!0),a.userData.componentType||(e.name&&e.name.toLowerCase().includes("connector")?a.userData.componentType="connector":e.name&&e.name.toLowerCase().includes("gateway")&&(a.userData.componentType="gateway"))}p.push(a)}}),!(g=l.getCachedModelWithDimensions(t.modelKey,null===(f=r.userData)||void 0===f?void 0:f.libraryId))){e.n=2;break}e.n=8;break;case 2:if(!l.getStatus().isPreloading){e.n=6;break}return e.p=3,e.n=4,l.preloadingPromise;case 4:g=l.getCachedModelWithDimensions(t.modelKey,null===(M=r.userData)||void 0===M?void 0:M.libraryId),e.n=6;break;case 5:e.p=5,e.v;case 6:if(g){e.n=8;break}return e.n=7,new Promise(function(e,n){a.gltfLoader.load("/library/models/".concat(t.modelKey),function(n){e(n)},function(e){},function(e){n(e)})});case 7:S=e.v,g=S.scene,null!==(x=r.userData)&&void 0!==x&&x.libraryId&&(g=l.addDimensionsToModel(g,r.userData.libraryId));case 8:return(B=g.isCachedClone?g:g.clone()).uuid=b,B.name=k,B.quaternion.copy(y),B.scale.copy(w),B.userData||(B.userData={}),B.userData.originalUuid=b,B.userData.componentType="component",B.userData.libraryId=null===(d=r.userData)||void 0===d?void 0:d.libraryId,t.boundingBox&&(B.userData.dimensions={x:t.boundingBox.x,y:t.boundingBox.y,z:t.boundingBox.z}),t.adaptedBoundingBox&&(B.userData.adaptedBoundingBox={x:t.adaptedBoundingBox.x,y:t.adaptedBoundingBox.y,z:t.adaptedBoundingBox.z}),r.position&&r.rotation?(B.position.set(r.position.x,r.position.y,r.position.z),B.rotation.set(c.MathUtils.degToRad(r.rotation.x),c.MathUtils.degToRad(r.rotation.y),c.MathUtils.degToRad(r.rotation.z))):B.position.copy(m),B.traverse(function(e){e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0,e.material&&(e.material.envMapIntensity=1))}),p.forEach(function(e){B.add(e)}),B.children.forEach(function(e,n){e.name&&e.name.toLowerCase().includes("connector")}),B.children.length>0&&B.children.forEach(function(e,n){}),h&&h.add&&"function"==typeof h.add?(h.remove(n),h.add(B)):(a.scene.remove(n),a.scene.add(B)),e.a(2,B);case 9:return e.p=9,e.v,e.a(2,n)}},e,this,[[3,5],[1,9]])})),function(e,n,r){return k.apply(this,arguments)})},{key:"verifyModelPreloaderCache",value:(w=a(i().m(function e(){var n;return i().w(function(e){for(;;)switch(e.n){case 0:if(!(n=l.getStatus()).isPreloading){e.n=4;break}return e.p=1,e.n=2,l.preloadingPromise;case 2:e.n=4;break;case 3:e.p=3,e.v;case 4:return e.a(2,n)}},e,null,[[1,3]])})),function(){return w.apply(this,arguments)})},{key:"preloadMissingModels",value:(y=a(i().m(function e(n,r){var a,o,u,c,s,v,f,d;return i().w(function(e){for(;;)switch(e.n){case 0:return a=new Set,n.scene.object.children.forEach(function(e){var n,t;if(null!==(n=e.userData)&&void 0!==n&&n.libraryId&&r[null===(t=e.userData)||void 0===t?void 0:t.libraryId]){var i,o=r[null===(i=e.userData)||void 0===i?void 0:i.libraryId].modelKey;o&&a.add(o)}}),e.n=1,this.verifyModelPreloaderCache();case 1:if(o=e.v,u=o.cachedModels,!((c=Array.from(a).filter(function(e){return!u.includes(e)})).length>0)){e.n=11;break}s=t(c),e.p=2,s.s();case 3:if((v=s.n()).done){e.n=8;break}return f=v.value,e.p=4,e.n=5,l.preloadSingleModel(f);case 5:e.n=7;break;case 6:e.p=6,e.v;case 7:e.n=3;break;case 8:e.n=10;break;case 9:e.p=9,d=e.v,s.e(d);case 10:return e.p=10,s.f(),e.f(10);case 11:return e.a(2)}},e,this,[[4,6],[2,9,10,11]])})),function(e,n){return y.apply(this,arguments)})},{key:"createSceneMaterials",value:(m=a(i().m(function e(n){var r,t,a;return i().w(function(e){for(;;)switch(e.n){case 0:return r=this.sceneViewer,t={},a=null,e.p=1,e.n=2,s("light_metal",r.textureLoader);case 2:a=e.v,e.n=7;break;case 3:return e.p=3,e.v,e.p=4,e.n=5,s("gravel_embedded_concrete",r.textureLoader);case 5:a=e.v,e.n=7;break;case 6:e.p=6,e.v;case 7:return e.a(2,{materials:t,crosscubeTextureSet:a})}},e,this,[[4,6],[1,3]])})),function(e){return m.apply(this,arguments)})},{key:"createSceneGeometries",value:function(e,n){var r={};return e.scene.object.children.forEach(function(e){var t;if(null!==(t=e.userData)&&void 0!==t&&t.libraryId&&n[e.userData.libraryId]){var a=n[e.userData.libraryId].boundingBox,i=new c.BoxGeometry(a.x||1,a.y||1,a.z||1);r[e.geometry]=i}else{var o=e.uuid&&(e.uuid.toLowerCase().includes("connector")||e.uuid.toLowerCase().includes("gateway"));r[e.geometry]=o?new c.SphereGeometry(.1,16,16):new c.BoxGeometry(1,1,1)}}),r}},{key:"createSceneObject",value:function(e,r,t){var a=this,i=r[e.geometry],o=t[e.material];o||(o=new c.MeshPhysicalMaterial({color:12632256,roughness:.15,metalness:.9,emissive:0,envMapIntensity:1.5,transparent:!0,opacity:.8}));var u=new c.Mesh(i,o);if(u.uuid=e.uuid,u.name=e.name||e.uuid,u.userData||(u.userData={}),u.userData.originalUuid=e.uuid,e.userData&&(u.userData=n({},e.userData),u.userData.componentType||(u.userData.libraryId?u.userData.componentType="component":e.uuid&&e.uuid.toLowerCase().includes("connector")?u.userData.componentType="connector":e.uuid&&e.uuid.toLowerCase().includes("gateway")&&(u.userData.componentType="gateway"))),u.isMesh&&(u.castShadow=!0,u.receiveShadow=!0),e.position&&u.position.set(e.position.x||0,e.position.y||0,e.position.z||0),e.rotation){var s=e.rotation.x*(Math.PI/180),l=e.rotation.y*(Math.PI/180),v=e.rotation.z*(Math.PI/180);u.rotation.set(s,l,v)}return e.scale&&u.scale.set(e.scale.x||1,e.scale.y||1,e.scale.z||1),e.children&&e.children.forEach(function(e){u.add(a.createSceneObject(e,r,t))}),u}},{key:"computeWorldBoundingBoxes",value:function(e){this.sceneViewer.scene.traverse(function(n){if(n.isMesh){var r=null,a=function(e){var r,i=t(e);try{for(i.s();!(r=i.n()).done;){var o,u,c=r.value;if(c.uuid===n.uuid||c.uuid===(null===(o=n.userData)||void 0===o?void 0:o.originalUuid)||n.uuid===(null===(u=c.userData)||void 0===u?void 0:u.originalUuid))return c;if(c.children){var s=a(c.children);if(s)return s}}}catch(e){i.e(e)}finally{i.f()}return null};if(r=a(e.scene.object.children)){var i=(new c.Box3).setFromObject(n);r.userData||(r.userData={}),r.userData.worldBoundingBox={min:i.min.toArray(),max:i.max.toArray()}}}})}},{key:"loadSceneData",value:(h=a(i().m(function e(n){var r,t,a,o,u,s,l,v,f,d,h,m,y=this,w=arguments;return i().w(function(e){for(;;)switch(e.n){case 0:return r=!(w.length>1&&void 0!==w[1])||w[1],t=this.sceneViewer,e.p=1,a=function(e){e.traverse(function(e){if(e.userData&&e.userData.direction){var n=new c.Matrix4;n.copy(e.matrixWorld),e.userData.worldMatrixOriginal=n.elements}})},r&&(t.transformManager&&t.transformManager.transformControls,this.clearSceneObjects()),t.currentSceneData=n,o={},e.p=2,e.n=3,fetch("./library/component-dictionary.json");case 3:return u=e.v,e.n=4,u.json();case 4:o=e.v,e.n=6;break;case 5:e.p=5,e.v;case 6:return e.n=7,this.preloadMissingModels(n,o);case 7:return e.n=8,this.createSceneMaterials(n);case 8:if(s=e.v,l=s.materials,v=s.crosscubeTextureSet,f=this.createSceneGeometries(n,o),d=[],n.scene.object.children.forEach(function(e,n){var r,a,i,u=y.createSceneObject(e,f,l);t.scene.add(u),null!==(r=e.userData)&&void 0!==r&&r.libraryId&&o[null===(a=e.userData)||void 0===a?void 0:a.libraryId]&&d.push({basicObject:u,jsonData:e,componentData:o[null===(i=e.userData)||void 0===i?void 0:i.libraryId]})}),this.computeWorldBoundingBoxes(n),a(t.scene),h=[],d.forEach(function(e,n){var r=e.basicObject,t=e.jsonData,a=e.componentData,i=y.loadLibraryModel(r,t,a).then(function(e){return d[n].glbModel=e,e}).catch(function(e){return r});h.push(i)}),!(h.length>0)){e.n=10;break}return e.n=9,Promise.all(h);case 9:"undefined"!=typeof window&&(m=new CustomEvent("sceneUpdateComplete",{detail:{timestamp:Date.now()}}),window.dispatchEvent(m));case 10:if(d.forEach(function(e,n){e.basicObject;var r=e.jsonData,t=(e.componentData,e.glbModel);t.userData.associatedJsonObject=r;var a=(new c.Box3).setFromObject(t);r.type="Mesh",r.userData.worldBoundingBox.min=a.min.toArray(),r.userData.worldBoundingBox.max=a.max.toArray()}),n.scene.object.children.push({uuid:"GROUND",type:"Mesh",name:"Ground",layers:1,matrix:[1,0,0,0,0,0,-1,0,0,1,0,0,0,-.01,0,1],up:[0,1,0],userData:{worldBoundingBox:{min:[-30,-.01,-30],max:[30,-.01,30]}}}),!t.pathfindingManager){e.n=11;break}return e.n=11,t.pathfindingManager.initializePathfinder(n,v);case 11:t.currentSceneData=n,t.crosscubeTextureSet=v,r&&(t.transformManager&&t.transformManager.transformControls?t.transformManager.transformControls&&(t.transformManager.transformControls.visible=!1):t.initTransformControls(),t.ensureTransformControlsAttached(!1),t.transformManager&&t.transformManager.transformControls&&(t.keepTransformControlsInactive(),t.transformManager.transformControls.visible=!1)),e.n=13;break;case 12:e.p=12,e.v;case 13:return e.a(2)}},e,this,[[2,5],[1,12]])})),function(e){return h.apply(this,arguments)})},{key:"loadScene",value:(d=a(i().m(function e(){var n,r,t,a;return i().w(function(e){for(;;)switch(e.n){case 0:return n=this.sceneViewer,e.p=1,r=n.$config.defaultCentralPlantUrl,e.n=2,fetch(r);case 2:return t=e.v,e.n=3,t.json();case 3:return a=e.v,n.currentSceneData=a,e.n=4,this.loadSceneData(a,!1);case 4:e.n=6;break;case 5:e.p=5,e.v;case 6:return e.a(2)}},e,this,[[1,5]])})),function(){return d.apply(this,arguments)})},{key:"loadSceneFromData",value:(f=a(i().m(function e(n){return i().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,this.loadSceneData(n,!0);case 1:return e.a(2)}},e,this)})),function(e){return f.apply(this,arguments)})},{key:"createEmptyScene",value:function(){var e=this.sceneViewer;e.transformManager&&e.transformManager.transformControls&&e.disableTransformControls(),this.clearSceneObjects(),e.transformManager&&e.transformManager.transformControls&&(e.transformManager.setEnabled(!1),e.transformManager.transformControls.visible=!1,e.transformManager.selectedObject&&e.transformManager.deselectObject())}},{key:"clearModelCache",value:function(){var e=this.sceneViewer;e.modelCache&&e.modelCache.clear(),e.loadingPromises&&e.loadingPromises.clear()}},{key:"deselectObject",value:function(){var e=this.sceneViewer;e.transformManager&&e.transformManager.deselectObject(),e.selectedObjectForTransform=null}},{key:"setupEventListeners",value:function(){var e,n,r,t,o=this;this.sceneViewer;var u=this.loadSceneFromData.bind(this);null===(e=window.$nuxt)||void 0===e||null===(n=e.$on)||void 0===n||n.call(e,"loadNewScene",function(){var e=a(i().m(function e(n){return i().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,u(n);case 1:return e.a(2)}},e)}));return function(n){return e.apply(this,arguments)}}()),null===(r=window.$nuxt)||void 0===r||null===(t=r.$on)||void 0===t||t.call(r,"createNewScene",function(){o.createEmptyScene()})}},{key:"updateSceneDataAfterTransform",value:function(e,r){var t,a,i=!1;if(this.sceneViewer.pathfindingManager.recomputeWorldBoundingBoxes(r),"gateway"===(null===(t=e.userData)||void 0===t?void 0:t.componentType)&&"computed"===(null===(a=e.userData)||void 0===a?void 0:a.origin)){var o;e.userData.origin="declared";for(var u=0;u<r.scene.object.children.length;u++){var s,l,v=r.scene.object.children[u];if(v.uuid===e.uuid||v.uuid===(null===(s=e.userData)||void 0===s?void 0:s.originalUuid)||e.uuid===(null===(l=v.userData)||void 0===l?void 0:l.originalUuid)){v.userData||(v.userData={}),v.userData.origin="declared";break}}if(null!==(o=e.userData)&&void 0!==o&&o.connections&&r.connections){var f=e.userData.connections,d=r.connections;f.removed&&Array.isArray(f.removed)&&(r.connections=d.filter(function(e){var n=f.removed.some(function(n){return n.from===e.from&&n.to===e.to||n.from===e.to&&n.to===e.from});return!n})),f.added&&Array.isArray(f.added)&&f.added.forEach(function(e){r.connections.some(function(n){return n.from===e.from&&n.to===e.to||n.from===e.to&&n.to===e.from})||r.connections.push(e)})}}for(var h=function(){var t,a,o,u,s=r.scene.object.children[m],l=!1;if(s.uuid!==e.uuid&&s.uuid!==(null===(t=e.userData)||void 0===t?void 0:t.originalUuid)&&e.uuid!==(null===(a=s.userData)||void 0===a?void 0:a.originalUuid)||(l=!0),!l&&null!==(o=e.userData)&&void 0!==o&&o.libraryId&&null!==(u=s.userData)&&void 0!==u&&u.libraryId&&e.userData.libraryId===s.userData.libraryId){if(s.position&&e.position){var v=Math.abs(e.position.x-s.position.x),f=Math.abs(e.position.y-s.position.y),d=Math.abs(e.position.z-s.position.z);v<1&&f<1&&d<1&&(l=!0)}}if(l){var h=(new c.Box3).setFromObject(e),y=function(e,r){return e&&r?e.map(function(e){var t=r.find(function(n){var r,t,a,i;if(n.uuid===e.uuid||n.uuid===(null===(r=e.userData)||void 0===r?void 0:r.originalUuid)||(null===(t=n.userData)||void 0===t?void 0:t.originalUuid)===e.uuid)return!0;if(null!==(a=n.userData)&&void 0!==a&&a.componentType&&null!==(i=e.userData)&&void 0!==i&&i.componentType&&n.userData.componentType===e.userData.componentType&&"connector"===n.userData.componentType){if(e.position&&n.position){var o=Math.abs(n.position.x-e.position.x),u=Math.abs(n.position.y-e.position.y),c=Math.abs(n.position.z-e.position.z);if(o<.1&&u<.1&&c<.1)return!0}}return!1});if(t&&t.isMesh){var a=(new c.Box3).setFromObject(t);return n(n({},e),{},{userData:n(n(n({},e.userData),t.userData),{},{worldBoundingBox:{min:a.min.toArray(),max:a.max.toArray()}}),children:e.children?y(e.children,t.children):e.children})}return n(n({},e),{},{children:e.children?y(e.children,r):e.children})}):e};return e.traverse(function(e){if(e.userData&&e.userData.direction&&e.userData.worldMatrixOriginal){e.updateMatrixWorld(!0);var n=new c.Matrix4;n.copy(e.matrixWorld);var r=new c.Matrix4;r.elements=e.userData.worldMatrixOriginal;var t=new c.Matrix4,a=new c.Matrix4;t.extractRotation(n),a.extractRotation(r);var i=new c.Matrix4;i.copy(t),i.multiply(a.invert());var o=(new c.Vector3).fromArray(e.userData.direction);o.applyMatrix4(i),o.normalize();o.x=Math.abs(o.x)>.5?Math.sign(o.x):0,o.y=Math.abs(o.y)>.5?Math.sign(o.y):0,o.z=Math.abs(o.z)>.5?Math.sign(o.z):0,e.userData.direction=o.toArray(),e.userData.worldMatrixOriginal=n.elements}}),r.scene.object.children[m]=n(n({},s),{},{matrix:e.matrix.elements,position:{x:e.position.x,y:e.position.y,z:e.position.z},rotation:{x:e.rotation.x,y:e.rotation.y,z:e.rotation.z},scale:{x:e.scale.x,y:e.scale.y,z:e.scale.z},userData:n(n({},s.userData),{},{worldBoundingBox:{min:h.min.toArray(),max:h.max.toArray()}}),children:s.children?y(s.children,e.children):s.children}),i=!0,1}},m=0;m<r.scene.object.children.length&&!h();m++);return!!i}}]);var f,d,h,m,y,w,k}();export{f as SceneOperationsManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,classCallCheck as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{CSS2DRenderer as n,CSS2DObject as e}from"../../../node_modules/three/examples/jsm/renderers/CSS2DRenderer.js";import*as o from"three";var s=function(t){for(var i,n=arguments.length,e=new Array(n>1?n-1:0),o=1;o<n;o++)e[o-1]=arguments[o];return(i=console).log.apply(i,["đ [Tooltips] ".concat(t)].concat(e))},r=function(t){for(var i,n=arguments.length,e=new Array(n>1?n-1:0),o=1;o<n;o++)e[o-1]=arguments[o];return(i=console).log.apply(i,["âšī¸ [Tooltips] ".concat(t)].concat(e))},a=function(t){for(var i,n=arguments.length,e=new Array(n>1?n-1:0),o=1;o<n;o++)e[o-1]=arguments[o];return(i=console).warn.apply(i,["â ī¸ [Tooltips] ".concat(t)].concat(e))},l=function(t){for(var i,n=arguments.length,e=new Array(n>1?n-1:0),o=1;o<n;o++)e[o-1]=arguments[o];return(i=console).error.apply(i,["â [Tooltips] ".concat(t)].concat(e))},h=function(){return t(function t(n,e,o){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;i(this,t),this.container=n,this.camera=e,this.scene=o,this.transformControlsManager=s,this.tooltipTemplate='\n<div class="component-tooltip" style="\n background-color: rgba(255, 255, 255, 0.95); \n color: #333333; \n border-radius: 8px; \n padding: 12px; \n width: 250px; \n font-family: -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n border: 1px solid rgba(0, 0, 0, 0.1);\n user-select: none;\n pointer-events: auto;\n font-size: 13px;\n line-height: 1.4;\n transform: translate(-50%, -100%);\n margin-top: 0px;\n margin-left: 0px;\n position: relative;\n z-index: 1000;\n">\n <div class="tooltip-header" style="\n font-weight: 600; \n padding-bottom: 8px; \n border-bottom: 1px solid rgba(0, 0, 0, 0.1); \n margin-bottom: 8px;\n font-size: 14px;\n color: #2c3e50;\n ">Component Name</div>\n <div class="tooltip-body">\n <div class="tooltip-type" style="\n font-size: 12px;\n color: #666;\n margin-bottom: 8px;\n font-style: italic;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n "></div>\n <div class="tooltip-attributes">\n \x3c!-- Dynamic attributes will be inserted here --\x3e\n </div>\n <div class="tooltip-row tooltip-actions" style="display: flex; align-items: center; justify-content: space-between; margin-top: 12px; padding-top: 8px; border-top: 1px solid rgba(0, 0, 0, 0.1);">\n <div class="tooltip-key" style="flex: 1; color: #555555; font-size: 12px;">Add:</div>\n <div class="tooltip-dropdown-container" style="flex: 1; text-align: center;">\n <select class="tooltip-dropdown" style="\n background-color: #f8f9fa;\n color: #333333;\n border: 1px solid #ddd;\n padding: 4px 8px;\n border-radius: 4px;\n width: 100%;\n cursor: pointer;\n pointer-events: auto;\n font-size: 12px;\n ">\n <option value="" disabled selected>Select...</option>\n <option value="gateway">Gateway</option>\n <option value="connector">Connector</option>\n </select>\n </div>\n </div>\n </div>\n</div>\n',this.tooltipRenderer=null,this.selectedMesh=null,this.tooltipParent=null,this.tooltipObject=null,this.init()},[{key:"init",value:function(){this.tooltipRenderer=new n,this.tooltipRenderer.setSize(this.container.clientWidth,this.container.clientHeight),this.tooltipRenderer.domElement.style.position="absolute",this.tooltipRenderer.domElement.style.top="0",this.tooltipRenderer.domElement.style.left="0",this.tooltipRenderer.domElement.style.overflow="visible",this.tooltipRenderer.domElement.style.pointerEvents="none",this.tooltipRenderer.domElement.style.zIndex="100",this.container.appendChild(this.tooltipRenderer.domElement)}},{key:"resize",value:function(){this.tooltipRenderer&&this.tooltipRenderer.setSize(this.container.clientWidth,this.container.clientHeight)}},{key:"setTransformControlsManager",value:function(t){this.transformControlsManager=t,r("Transform controls manager set for tooltips"),this.transformControlsManager&&this.setupTransformControlsEvents(),this.tooltipObject&&this.updateTooltipForTransform()}},{key:"setupTransformControlsEvents",value:function(){var t=this;this.transformControlsManager&&this.transformControlsManager.on({onTransform:function(i){i===t.selectedMesh&&t.tooltipObject&&t.updateTooltipForTransform()},onTransformEnd:function(i){i===t.selectedMesh&&t.tooltipObject&&t.updateTooltipForTransform()}})}},{key:"setSelectedMesh",value:function(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.selectedMesh!==i&&(r("Setting selected mesh:",i?i.uuid:"none"),this.clearTooltip(),this.selectedMesh=i,i&&null!==(t=i.userData)&&void 0!==t&&null!==(t=t.component)&&void 0!==t&&t.attributes?(r("Mesh has component attributes, showing tooltip"),this.showTooltip()):i&&(a("Mesh does not have required component data for tooltip:",i),i.userData&&s("Available userData:",i.userData)))}},{key:"render",value:function(){if(this.tooltipRenderer&&this.camera&&this.scene)try{this.tooltipRenderer.render(this.scene,this.camera)}catch(t){l("Error rendering tooltips:",t)}}},{key:"dispose",value:function(){this.clearTooltip(),this.transformControlsManager&&(this.transformControlsManager=null),this.tooltipRenderer&&this.tooltipRenderer.domElement&&this.tooltipRenderer.domElement.parentNode&&this.tooltipRenderer.domElement.parentNode.removeChild(this.tooltipRenderer.domElement),this.tooltipRenderer=null,this.selectedMesh=null,this.container=null,this.camera=null,this.scene=null}},{key:"showTooltip",value:function(){try{if(!this.selectedMesh||!this.selectedMesh.userData||!this.selectedMesh.userData.component)return void a("Cannot show tooltip, missing data in selectedMesh");r("Showing tooltip for:",this.selectedMesh.uuid);var t=this.selectedMesh.userData.component;if(!t.attributes)return void a("Component has no attributes:",t);var i=t.attributes,n=document.createElement("div");n.innerHTML=this.tooltipTemplate.trim();var o=n.firstElementChild||n.firstChild;s("showTooltip this.selectedMesh:",this.selectedMesh),s("showTooltip meshComponentData:",t);var h=o.querySelector(".tooltip-header");h&&(this.selectedMesh.name&&""!==this.selectedMesh.name?h.textContent=this.selectedMesh.name:h.textContent=this.selectedMesh.userData.originalUuid||this.selectedMesh.userData.uuid||"Unknown Component");var c=o.querySelector(".tooltip-type");c&&t.type&&(c.textContent=t.type);var u=o.querySelector(".tooltip-attributes");if(u&&i&&Object.keys(i).length>0){u.innerHTML="",Object.keys(i).forEach(function(t){var n=i[t],e=document.createElement("div");e.className="tooltip-row",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="space-between",e.style.marginBottom="5px";var o=document.createElement("div");o.className="tooltip-key",o.style.flex="1",o.style.color="#555555",o.textContent="".concat(n.key||t,":");var s=document.createElement("div");s.className="tooltip-value",s.style.flex="1",s.style.textAlign="center",s.style.color="#000000";var r=n.value||"0";n.unit&&(r+=" ".concat(n.unit)),s.textContent=r,e.appendChild(o),e.appendChild(s),u.appendChild(e)});var p=o.querySelector(".tooltip-dropdown");p&&p.addEventListener("change",function(t){t.stopPropagation();var i=t.target.value;r("Add option selected: ".concat(i)),"gateway"===i?r("Adding Gateway"):"connector"===i&&r("Adding Connector"),t.target.selectedIndex=0})}var d=new e(o);this.tooltipParent=this.selectedMesh,this.tooltipObject=d;var v=this.calculateTooltipPosition();d.position.set(v.x,v.y,v.z),d.userData={isTooltip:!0},this.selectedMesh.add(d),r("Tooltip positioned at:",v)}catch(t){l("Error showing tooltip:",t)}}},{key:"updateTooltip",value:function(){if(this.tooltipParent&&this.tooltipObject){var t=this.calculateTooltipPosition();this.tooltipObject.position.set(t.x,t.y,t.z)}}},{key:"updateTooltipForTransform",value:function(){if(this.tooltipObject&&this.selectedMesh){var t=this.calculateTooltipPosition();this.tooltipObject.position.set(t.x,t.y,t.z),s("Tooltip position updated for transform")}}},{key:"getObjectBoundingBox",value:function(t){return(new o.Box3).setFromObject(t)}},{key:"calculateOptimalTooltipOffset",value:function(){if(!this.camera||!this.selectedMesh)return 1.5;var t=new o.Vector3;this.selectedMesh.getWorldPosition(t);var i=new o.Vector3;this.camera.getWorldPosition(i);return 1}},{key:"calculateTooltipPosition",value:function(){var t=this.getObjectBoundingBox(this.selectedMesh),i=this.findClosestBoundingBoxCorner(t),n=new o.Vector3;this.selectedMesh.getWorldPosition(n);var e=i.clone().sub(n),s=this.calculatePixelBasedOffset(e,n),l={x:e.x+s.x,y:e.y+s.y,z:e.z+s.z};if(this.transformControlsManager&&this.transformControlsManager.selectedObject===this.selectedMesh)try{var h=this.transformControlsManager.getWorldTransformData();if(h&&h.position)return r("Using transform controls position for tooltip at closest corner"),{x:e.x+s.x,y:e.y+s.y,z:e.z+s.z}}catch(t){a("Error getting transform controls position:",t)}return r("Positioning tooltip at closest corner to origin:",l),l}},{key:"calculatePixelBasedOffset",value:function(t,i){if(!this.camera)return{x:0,y:0,z:0};var n=250;if(this.tooltipObject&&this.tooltipObject.element){var e=this.tooltipObject.element;if(e.offsetWidth>0)n=e.offsetWidth;else{var r=document.createElement("div");r.style.position="absolute",r.style.visibility="hidden",r.style.top="-9999px",document.body.appendChild(r),r.appendChild(e),n=e.offsetWidth||250,document.body.removeChild(r)}}var a=n/2,l=i.clone().add(t),h=new o.Vector3;this.camera.getWorldPosition(h);var c=new o.Vector3;this.camera.getWorldDirection(c);var u=this.isPositionOnRightSideOfCameraMidline(l,h,c),p=l.distanceTo(h),d=0;if(this.camera.isPerspectiveCamera){var v=this.camera.fov*Math.PI/180,f=Math.tan(v/2)*p*this.camera.aspect;d=a/this.container.clientWidth*(2*f)}else if(this.camera.isOrthographicCamera){var m=(this.camera.right-this.camera.left)/2;d=a/this.container.clientWidth*(2*m)}var y=new o.Vector3;this.camera.getWorldDirection(y),y.cross(this.camera.up).normalize();var w=u?-1:1,g=y.multiplyScalar(d*w);return s("Tooltip pixel offset calculated:",{tooltipWidth:n,halfTooltipWidth:a,distanceToCamera:p,screenSpaceOffset:d,isOnRightSide:u,offsetDirection:w,worldOffset:g}),{x:g.x,y:0,z:g.z}}},{key:"findClosestBoundingBoxCorner",value:function(t){var i=t.min,n=t.max,e=[new o.Vector3(i.x,i.y,i.z),new o.Vector3(n.x,i.y,i.z),new o.Vector3(i.x,n.y,i.z),new o.Vector3(n.x,n.y,i.z),new o.Vector3(i.x,i.y,n.z),new o.Vector3(n.x,i.y,n.z),new o.Vector3(i.x,n.y,n.z),new o.Vector3(n.x,n.y,n.z)];return this.findCornerClosestToCameraVerticalMidline(e)}},{key:"findCornerClosestToCameraVerticalMidline",value:function(t){if(!this.camera)return a("No camera available, using first corner"),t[0];var i=new o.Vector3;this.camera.getWorldPosition(i);var n=new o.Vector3;this.camera.getWorldDirection(n);for(var e=t[0],r=this.getDistanceToVerticalMidline(t[0],i,n),l=1;l<t.length;l++){var h=this.getDistanceToVerticalMidline(t[l],i,n);h<r&&(r=h,e=t[l])}return s("Closest corner to camera vertical midline:",e,"Distance:",r),e}},{key:"getDistanceToVerticalMidline",value:function(t,i,n){var e=t.clone().sub(i),o=e.dot(n),s=n.clone().multiplyScalar(o);return e.clone().sub(s).length()}},{key:"clearTooltip",value:function(){this.tooltipParent&&this.tooltipObject&&(this.tooltipParent.remove(this.tooltipObject),this.tooltipParent=null,this.tooltipObject=null)}},{key:"handleSceneClick",value:function(t,i){this.clearTooltip(),this.selectedMesh=null}},{key:"isSelectableComponent",value:function(t){var i,n;return!!(t&&t.userData&&t.userData.component)||!(!t||!(null!==(i=t.userData)&&void 0!==i&&i.isPipeSegment||null!==(n=t.userData)&&void 0!==n&&n.isPipeJunction))}},{key:"isPositionOnRightSideOfCameraMidline",value:function(t,i,n){var e=new o.Vector3;return this.camera.getWorldDirection(e),e.cross(this.camera.up).normalize(),t.clone().sub(i).dot(e)>0}}])}();export{h as SceneTooltipsManager};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createClass as t,slicedToArray as n,typeof as i,classCallCheck as e,asyncToGenerator as s,regenerator as l}from"../../../_virtual/_rollupPluginBabelHelpers.js";var a=function(){return t(function t(n){e(this,t),this.sceneViewer=n,this.isDev="development"===process.env.NODE_ENV},[{key:"enhancedDisposal",value:(u=s(l().m(function t(){return l().w(function(t){for(;;)switch(t.n){case 0:return this.isDev,this.forceStopOperations(),t.n=1,this.enhancedSceneCleanup();case 1:this.enhancedRendererCleanup(),this.sceneViewer.hotReloadManager&&this.sceneViewer.hotReloadManager.clearPendingOperations(),this.isDev&&this.sceneViewer.hotReloadManager&&this.sceneViewer.hotReloadManager.forceGarbageCollectionHint();case 2:return t.a(2)}},t,this)})),function(){return u.apply(this,arguments)})},{key:"forceStopOperations",value:function(){this.sceneViewer.isDestroyed=!0,this.sceneViewer.isLoading=!1,this.sceneViewer.currentTransition=null,this.sceneViewer.animationId&&(cancelAnimationFrame(this.sceneViewer.animationId),this.sceneViewer.animationId=null),this.isDev}},{key:"enhancedSceneCleanup",value:(a=s(l().m(function t(){var n,i=this;return l().w(function(t){for(;;)switch(t.n){case 0:if(n={textures:0,materials:0,geometries:0,objects:0},this.sceneViewer.scene){for(this.sceneViewer.scene.traverse(function(t){t.material&&(Array.isArray(t.material)?t.material.forEach(function(t){n.textures+=i.disposeMaterialTextures(t),t.dispose(),n.materials++}):(n.textures+=i.disposeMaterialTextures(t.material),t.material.dispose(),n.materials++)),t.geometry&&(t.geometry.dispose(),n.geometries++),n.objects++});this.sceneViewer.scene.children.length>0;)this.sceneViewer.scene.remove(this.sceneViewer.scene.children[0]);this.isDev}case 1:return t.a(2)}},t,this)})),function(){return a.apply(this,arguments)})},{key:"disposeMaterialTextures",value:function(t){var n=0;return["map","normalMap","roughnessMap","metalnessMap","envMap","lightMap","bumpMap","specularMap"].forEach(function(i){t[i]&&(t[i].dispose(),n++)}),n}},{key:"enhancedRendererCleanup",value:function(){if(this.sceneViewer.renderer){var t=this.sceneViewer.renderer.getContext();if(t&&"function"==typeof t.getExtension){var n=t.getExtension("WEBGL_lose_context");n&&n.loseContext()}this.sceneViewer.renderer.dispose(),this.sceneViewer.renderer.forceContextLoss(),this.sceneViewer.renderer=null,this.isDev}}},{key:"cleanupScene",value:function(){var t=this;if(this.sceneViewer.scene){var n=[];this.sceneViewer.scene.traverse(function(t){n.push(t)});for(var i=function(){var i=n[e];i.geometry&&i.geometry.dispose(),i.material&&(Array.isArray(i.material)?i.material.forEach(function(n){return t.disposeMaterial(n)}):t.disposeMaterial(i.material));["map","lightMap","bumpMap","normalMap","specularMap","envMap"].forEach(function(t){i[t]&&i[t].dispose()}),i.parent&&i.parent.remove(i)},e=n.length-1;e>=0;e--)i();this.sceneViewer.scene.environment&&(this.sceneViewer.scene.environment.dispose(),this.sceneViewer.scene.environment=null),this.sceneViewer.scene.background&&this.sceneViewer.scene.background.dispose&&(this.sceneViewer.scene.background.dispose(),this.sceneViewer.scene.background=null),this.sceneViewer.scene.clear(),this.sceneViewer.scene=null}}},{key:"disposeMaterial",value:function(t){for(var e=0,s=Object.entries(t);e<s.length;e++){var l=n(s[e],2);l[0];var a=l[1];a&&"object"===i(a)&&"function"==typeof a.dispose&&a.dispose()}t.dispose()}},{key:"cleanupRenderer",value:function(){this.sceneViewer.renderer&&(this.sceneViewer.renderer.domElement&&this.sceneViewer.renderer.domElement.parentNode&&this.sceneViewer.renderer.domElement.parentNode.removeChild(this.sceneViewer.renderer.domElement),this.sceneViewer.renderer.dispose(),this.sceneViewer.renderer.forceContextLoss(),this.sceneViewer.renderer=null)}},{key:"cleanupControls",value:function(){this.sceneViewer.controls&&(this.sceneViewer.controls.dispose(),this.sceneViewer.controls=null)}},{key:"cleanupEventListeners",value:function(){this.sceneViewer.handleResize&&(window.removeEventListener("resize",this.sceneViewer.handleResize),this.sceneViewer.handleResize=null),this.sceneViewer.resizeObserver&&(this.sceneViewer.resizeObserver.disconnect(),this.sceneViewer.resizeObserver=null),this.sceneViewer.handleKeyDown&&(window.removeEventListener("keydown",this.sceneViewer.handleKeyDown),this.sceneViewer.handleKeyDown=null),window._performanceKeyHandler&&(window.removeEventListener("keydown",window._performanceKeyHandler),delete window._performanceKeyHandler)}},{key:"cleanupPerformanceMonitoring",value:function(){if(this.sceneViewer.performanceMonitor){try{this.sceneViewer.performanceMonitor.stop()}catch(t){}this.sceneViewer.performanceMonitor=null}if(this.sceneViewer.performanceUI){try{"function"==typeof this.sceneViewer.performanceUI.dispose?this.sceneViewer.performanceUI.dispose():this.sceneViewer.performanceUI.hide()}catch(t){}this.sceneViewer.performanceUI=null}try{var t=document.querySelectorAll("#performance-monitor-ui");t.length>0&&t.forEach(function(t){t.parentNode&&t.parentNode.removeChild(t)})}catch(t){}}},{key:"cleanupGlobalReferences",value:function(){var t=this.parent;if(t){if(t.tooltipsManager)try{t.tooltipsManager.dispose()}catch(t){}finally{t.tooltipsManager=null}t.hotReloadManager=null,t.sceneExportManager=null,t.componentManager=null,t.sceneInitializationManager=null,t.environmentManager=null,t.keyboardControlsManager=null,t.pathfindingManager=null,t.sceneOperationsManager=null,t.animationManager=null,t.cameraControlsManager=null,t.disposalManager=null}}},{key:"cleanupNuxtEventListeners",value:function(){window.$nuxt&&window.$nuxt.$off&&(window.$nuxt.$off("loadNewScene"),window.$nuxt.$off("createNewScene"))}}]);var a,u}();export{a as DisposalManager};
|